Part 2. Basic Metapatterns

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

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

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

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

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 #

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.

CC BY Denys Poltorak. Editor: Lars Noodén. Download from Leanpub or GitHub. Powered by odt2wiki and Hugo Book.