Architecting monoliths for fast, sustainable flow
The post says fast, sustainable flow means continuous delivery of valuable changes and keeping the technology stack current. It lists the architectural qualities needed for that: team-sized elements, loose design-time coupling, fast automated testing, reliable deployments, observability, and evolvability.
It also says a monolithic architecture is a single executable or deployable unit with one code base and one deployment pipeline. That makes it simpler than microservices, but it creates limits for evolving the technology stack and can turn the deployment pipeline into a bottleneck. A monolith can be observable, but its telemetry covers the whole application, not individual subdomains. To support fast flow, the monolith has to be designed as loosely coupled, team-sized modules, and its pipeline has to be sped up through physical design techniques and testing strategies.
Reading notes#
- Fast, sustainable flow is defined as continuous delivery of valuable changes and the ability to keep the application’s technology stack current.
- The required architecture has to provide team-sized elements, loose design-time coupling, testability, deployability, observability, and evolvability.
- A monolithic architecture is a single executable or deployable unit, with a single code base and a single deployment pipeline.
- Monoliths are simpler than microservice architectures, and they can use ACID transactions.
- Evolving a monolith’s technology stack is difficult because the whole stack must be upgraded at once, and large upgrades can disrupt feature delivery.
- A monolith can emit telemetry, but the telemetry is for the entire application rather than an individual subdomain.
- Loose coupling in a monolith requires small, stable APIs that encapsulate larger implementations.
- Traditional layered monoliths do not satisfy team-sized elements or loose coupling, so careful design is required.
- A single deployment pipeline can become a bottleneck because larger code bases take longer to build, test, and deploy.
- Careful physical design techniques and testing strategies are needed to reduce pipeline execution time and increase throughput.
