Do you know the Modular Monolithic architecture?
Updated by Luke Cook [SSW] 1 month ago. See history
123
A Modular Monolith is a software architecture pattern that combines elements of both monolithic and modular architectures. In this approach, the application is built as a single, unified codebase like a traditional monolith, but it is designed and organized in a modular manner, allowing for logical separation of different components or modules within the codebase. > The Modular Monolith architecture is the “goldilocks” approach that combines the modularity of microservices with the simplicity of traditional Monoliths > > * Steve “Ardalis” Smith ## Modular Monolith characteristics <imageEmbed alt="Image" size="large" showBorder={false} figureEmbed={{ preset: "default", figure: 'Modular Monolith architecture', shouldDisplay: true }} src="/uploads/rules/modular-monolith-architecture/modular-monolith.jpg" /> * Single Host/Process * Single Deployment * Loosely coupled modules that each have their own * Domain * Application * Infrastructure * Presentation (API or UI) * Each module represents a business capability or domain * Each module should be as highly cohesive and loosely coupled with other modules * Each module manages it's own data and persistence ### ✅ Advantages * **Simplicity in Deployment** - Since it's a monolith, the deployment is typically simpler than distributed systems like microservices * **Ease of Development** - Developers can work on separate modules without significantly affecting other parts of the application * **Performance** - Inter-module communication is often faster and more reliable than inter-service communication in distributed architectures ### ❌ Challenges * **Scalability** - While more scalable than a traditional monolith, it may not scale as effectively as microservices * **Modular Discipline** - Maintaining strict modularity can be challenging as the application grows and evolves A Modular Monolith offers a balance between the simplicity and coherence of a monolith and the modularity and maintainability of more distributed architectures. It is particularly useful for certain kinds of applications and organizational contexts. ### Modular Monolith compared to other architectures | Trade-Offs | Layered / CA | Microservices | Modular Monolith | | ----------- | ------------ | ------------- | ---------------- | | Modularity | ❌ | ✅ | ✅ | | Cost | $ | $$$ | $ | | Scalability | ❌ | ✅ | ❌ | | Simplicity | ✅ | ❌ | ✅ |