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 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.
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.
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.
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?
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.
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!