The debate between monoliths and microservices is a common topic in software development. At a recent ReeTalk webinar, Martin Säfsten, a developer and architect with nine years of experience, presented an approach that combines the strengths of both: Modular Monolith Architecture. This method aims to keep the simplicity of monoliths while introducing the scalability and maintainability of modular design.
Main points from the talk included:
Modular Monoliths vs. Microservices
Martin explored the challenges of distributed systems, quoting Simon Brown: “Choose microservices for the benefits, not because your monolithic codebase is a mess.” He showed that modular monoliths can be a simpler and more manageable choice for many systems, especially when starting a new project.
Advantages of modular monoliths include:
However, modular monoliths have limits. For instance, they might not scale as well as microservices, and there’s a risk of creating dependencies between modules over time.
Martin reflected that while the focus was on Modular Monolith Architecture, a secondary goal was to encourage deeper thinking about what makes software architecture effective and when different approaches work best. He noted that he may have spent too much time on these broader ideas but was glad to have reiterated key concepts like Conway’s Law. Participant feedback was positive, and he felt the addition of real-world examples at the end was especially helpful. These examples demonstrated how even large organizations sometimes move back to monoliths for their reliability and simplicity.
Conclusion
Modular monoliths offer a balanced approach for building software. They are simpler to manage than microservices and can still provide scalability and modularity when done right.
As Martin put it: “Monoliths aren’t legacy—they’re a choice.”
Watch the reetalk here: