So you want to break down monolith? Read that first.
So you want to break down monolith? Read that first.My lessons learned, dos and donts from breaking down monoliths
I've been involved in several projects that tried to break down a legacy monolith. Some were successful, but most were not. Even those moderately successful had a common, painful experience. I burned my fingers and saw other teams struggle with this challenge. Not because they lacked skills, but often because their approach was too ambitious. After recently discussing monolith-to-microservices migrations, I decided to let you learn from my and other people’s mistakes. And spare you some unwanted fun. Let me share what I've seen work and learned. That’s my experience, so filter that through yours, but I hope this will be a good thought for thoughts. Be Realistic About What Stays in the MonolithYes, that’s the title, and it is not a mistake. If you believe you’ll be able to rewrite everything, I’m sorry, but you’re probably wrong. I was wrong like that multiple times. It’s anecdotal evidence, but I haven't seen a complete monolith migration succeed. Most were left in the middle of transition after going far above the planned time for rewrite. Some finished the migration, but replaced the old legacy with the new legacy after rushing the deadline. Some didn’t even manage those phases, as they sunk product and budget and were thrown away. So, the safe assumption is that some part of the old system will remain and continue running. And that's perfectly fine. The goal shouldn't be completely eliminating the monolith, but extracting the parts that benefit from independence. Consider a video editing suite with project management, rendering pipeline, effects processing, and asset management. After extracting the performance-critical rendering pipeline and the frequently updated effects processing, you might find the core project management and stable asset management work perfectly fine in the original monolith. Keeping them there could save significant effort without compromising the migration's benefits. When to Keep Functionality in the MonolithSometimes it makes sense to keep certain functionality in the monolith when:
A financial system might benefit from extracting the high-volume transaction processing and notification services while keeping the complex compliance and audit engines in the monolith because they are computationally intensive and tightly coupled. Focus on Business Value FirstI think that when planning migrations, we should start by talking with product people to identify which parts of the system deliver the most value or cause the most pain. We should follow the money. As cynical as it may seem, finding out who’ll be paying us money is as helpful. That’s critical in selecting the right tradeoffs. Example? Let’s say that we’re maintaining a SaaS platform like Shopify:
We should ask ourselves questions when discussing our features:
Of course, we should try to make both users and customers happy. Still, we need to fulfil the needs of our customers first, then do that for other users. That may sound cynical, but it’s not. If we don’t satisfy our paying customers, then we won’t make our work sustainable, and other users will eventually be also harmed by that. So I suggest focusing on business value for our customers and thus the money-flow for us:
For example, consider a team initially planning to extract the user management component because it seems technically straightforward. However, after discussions with the business, they might discover that improving the order processing system would deliver more immediate value to customers experiencing delays. By pivoting to that area, they could show benefits much faster and build momentum for the broader migration. This iterative approach works better than those "grand migration" plans that extend for years without delivering interim value. Define Specific, Measurable Metrics (Not Just Goals)Teams that succeed in migrations typically align with business stakeholders on specific, measurable metrics before starting - not just vague goals. There's a critical difference here that's often overlooked. For instance, teams might start with business goals like:
But these aren't measurable metrics - they're aspirational goals. To drive effective decision-making, you need to translate these into concrete, measurable metrics:
Connect Metrics to Business Impact - With EvidenceEven more important: for each metric, you must clearly articulate WHY achieving this target matters to the business. Without this connection, you're just chasing numbers for their own sake... Continue reading this post for free in the Substack app |
Older messages
Documenting Event-Driven Architecture with EventCatalog and David Boyne
Thursday, February 27, 2025
If you're wondering on how to document Event-Driven Architecture, or you don't know that you should, I have something for you. We discussed with David Boyne, why data governance practices and
How does Kafka know what was the last message it processed? Deep dive into Offset Tracking
Thursday, February 27, 2025
Today we got back to our Kafka internals series. We discussed how it keeps track of processed messages. This may seem like a detail, but understanding it can be critical for smooth message processing.
Defining Your Paranoia Level: Navigating Change Without the Overkill
Friday, February 14, 2025
We've all been there: trying to learn something new, only to find our old habits holding us back. We discussed today how our gut feelings about solving problems can sometimes be our own worst enemy
Pssst, do you want to learn some Event Sourcing?
Friday, February 14, 2025
Hi! Does Event Sourcing tempt you but don't know where to start? Is your business losing data? ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
How a Kafka-Like Producer Writes to Disk
Monday, January 13, 2025
We take a Kafka client, call the producer, send the message, and boom, expect it to be delivered on the other end. And that's actually how it goes. But wouldn't it be nice to understand better
You Might Also Like
JSK Daily for Mar 21, 2025
Friday, March 21, 2025
JSK Daily for Mar 21, 2025 View this email in your browser A community curated daily e-mail of JavaScript news Introducing the New React MultiColumn ComboBox The React MultiColumn ComboBox is a
Dispatch 049: March Madness
Friday, March 21, 2025
AlexNet Open Sourced • Microsoft's Inflection • Yahoo's TechCrunch • CoreWeave's Swap The Spyglass Dispatch is a newsletter featuring links and commentary on timely topics found around the
Daily Coding Problem: Problem #1724 [Medium]
Friday, March 21, 2025
Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Airbnb. You are given a huge list of airline ticket prices between different cities
Ranked | The World's 50 Most Valuable Brands in 2025 💰
Friday, March 21, 2025
American tech firms largely dominate the most valuable brands, but large Chinese competitors are quickly rising up the rankings. View Online | Subscribe | Download Our App Why We're Going All-In on
iOS Dev Weekly – Issue 704
Friday, March 21, 2025
How do you think about choosing package dependencies? Do you have any hard “No”'s?
iOS Cocoa Treats
Friday, March 21, 2025
View in browser Hello, you're reading Infinum iOS Cocoa Treats, bringing you the latest iOS related news straight to your inbox every week. Rendering Pixel Art with SwiftUI The main challenge of
Issue #585: Publishing games on Steam, GIMP 3.0, and A Very Tiny Game
Friday, March 21, 2025
View this email in your browser Issue #585 - March 21st 2025 Weekly newsletter about Web Game Development. If you have anything you want to share with our community please let me know by replying to
ASP.NET Core News - 03/21/2025
Friday, March 21, 2025
View this email in your browser Get ready for this weeks best blog posts about ASP.NET Core! How to log to Azure Application Insights using ILogger in ASP.NET Core — by bellonedavide .NET 10 Preview 2
The Android for iPhone die-hards📱
Friday, March 21, 2025
AI video's secret cost; CTO vs. CMO; Amazon phone deals -- ZDNET ZDNET Tech Today - US March 21, 2025 Planck SSD I found an Android phone that can convince iPhone users to make the switch - and
⚙️ Claude's upgrade
Friday, March 21, 2025
Plus: ChatGPT tells a father he killed his sons