Part 2. Basic Metapatterns #
Basic metapatterns are both common stand-alone architectures and building blocks for more complex systems. They include the single-component Monolithic architecture and the results of its division along each of the coordinate axes, namely abstractness, subdomain, and sharding:
Monolith #
Monolith is a single-component system, the simplest possible architecture. It is easy to write but hard to evolve and maintain.
Includes: Reactor, Proactor, and Half-Sync/Half-Async.
Shards #
Shards are multiple instances of a Monolith. They are scalable but usually require an external component for coordination.
Includes: Shards and Amazon Cells, Replicas, Pool of Stateless Instances, and Create on Demand.
Layers #
Layers contain one component per level of abstraction. The layers may vary in technologies and forces and scale individually.
Includes: Layers and Tiers.
Services #
Services divide a system into subdomains, often resulting in parts of comparable size assignable to dedicated teams. However, a system of Services is hard to synchronize or debug.
Includes: Service-Based Architecture, Modular Monolith (Modulith), Microservices, Device Drivers, and Actors.
Pipeline #
A Pipeline is a kind of Services with unidirectional flow. Each service implements a single step of data processing. The system is flexible but may grow out of control.
Includes: Pipes and Filters, Choreographed Event-Driven Architecture, and Data Mesh.