6 The monolithic architecture
- The benefits and limitations of the monolithic architecture
- How well a monolithic architecture satisfies the quality attributes for fast flow
- Strategies for structuring a monolith that improve team autonomy
- Design techniques for reducing build-time coupling and accelerating the deployment pipeline
In chapter 5, I described the architectural requirements for fast flow in terms of five quality attributes: modifiability, evolvability, testability, deployability and observability. Throughout that chapter, I discussed the role that an application’s component architecture - and its build architecture - plays in satisfying these quality attributes. In particular, I showed how a multi-component architecture is often necessary to meet these requirements in large applications developed by large organizations.
6.1 About the monolithic architecture
6.1.1 Benefits of the monolithic architecture
6.1.2 The monolithic architecture and the quality attributes for fast flow
6.1.3 Other drawbacks of monolithic architecture
6.1.4 The monolithic architecture pattern language
6.2 Modularizing the monolith
6.2.1 A technology-oriented architectural style for the domain architecture
6.2.2 Introduction to the modular monolith
6.2.3 Domain module design
6.2.4 Designing system operations that span domains
6.2.5 Testing strategy for a modular monolith
6.3 Minimizing build-time coupling to improve testability and deployability
6.3.1 About physical design principles
6.3.2 Define build projects for domain module APIs
6.3.3 Apply the Interface segregation principle
6.3.4 Segregate implementation build projects
6.4 The limitations of the modular monolith
6.4.1 A modular monolith is still a monolith
6.4.2 The myth of the microservices-ready modular monolith
6.5 Summary