Recap of "From Legacy Monoliths to Microservices via EventStorming"

October 23, 2023#Domain Driven Design
Author image.

Sarah Dutkiewicz, Senior Trainer

My talk “From Legacy Monoliths to Microservices via EventStorming” debuted last week at Momentum Developer Conference. This is one of many things I have been working on lately in the domain-driven design space. I wanted to take a moment to share why you should catch this talk.

Legacy Monoliths

Legacy monoliths are applications that many of us have to deal with day-to-day. I stress legacy for a reason - these are applications that have gotten us here over the years. These are the apps that started as a spike and turned into the Frankencode that are painful to maintain. They may be big balls of mud or piles of spaghetti code. They may have classes known as The Blob. To be fair, they got us to where we are today. But you want to get away from them. You want to work in a less stressful, less painful environment.

Sadukie covering her face, wondering "How do we grow and improve from this legacy monolith?"

“To”(wards) Microservices

Many people see their monoliths and thing that microservices is where they will end up. However, you may not necessarily end up on microservices. They have their places and fulfill particular needs. However, it may make more sense to land somewhere in the middle with a modular monolith - a modulith.

Sliding scale of Project Types. The background is a black-to-white gradient going from left to right. The slider is in the foreground with three points - Monolith to the far left, Modulith in the middle, and Microservices to the far right.

There are trade-offs that come with microservices and trade-offs that come with moduliths. What works for you on one project may not work for another project. These are a couple points I mention:

  • The size of the business domain matters. Larger domains may need what microservices have to offer, and moduliths may not be able to meet those needs. However, microservices may be overkill for a complex business system with low complexity.
  • The operational complexity matters. If you have a small, singular dev team then working in a monolith may make more sense than spreading code across multiple repos. However, if you are dealing with multiple development teams in specialized areas - such as fraud detection, identity management, insurance eligibility - then microservices may make more sense.

Via EventStorming

In case you haven’t seen it yet, I’m on an EventStorming mission. I include EventStorming in this presentation because it is such a great practice at understanding what you have and how to sort it out.

Using a hypothetical shopping site - as seen in eShopContainers, I imagined what the legacy monolith app would look like. What functionality does it have?

EventStorming slides - animated - showing steps of eCommerce on orange sticky notes first in a chaotic pile, then sorting to corners, and finally identifying aggregates of Cart, Order, and Customer.

By using EventStorming with a legacy monolith, you can:

  • Understand what the application’s capabilities may be
  • See room for improvement
  • Identify boundaries - bounded contexts - that could be used for creating modules in a modulith or services in microservices.

Where to Find this Talk

The Momentum Dev Con talks were not recorded, so there isn’t a recording of this talk yet. I will also be delivering it in November 2023 at TechBash.

We have an on-demand webinar on the fundamentals of EventStorming. In November and December, I am also running workshops on EventStorming as well as a CodeMash Precompiler.

If you are interested in having me deliver this talk for your company or are interested in having us facilitate EventStorming events for you, contact us today!

Copyright © 2024 NimblePros - All Rights Reserved