# Architectural Metapatterns

*Architectural Metapatterns: The Pattern Language of Software Architecture* is a book by Denys Poltorak, and metapatterns.io is its online edition [[architectural-metapatterns]]. The clipped page is only the site's landing page, a table of contents with one diagram per chapter and a short pitch. This page records what the compendium says it is and how it is laid out. None of the pattern chapters has been ingested.

## The premise

The landing page opens with "no pattern is an island". Architectural patterns are interrelated, a product can rarely be built in one pure style, and the chance of that style surviving years of iterative growth undistorted is, in the author's word, negligible. The book's answer is to study patterns through their relations. It sorts hundreds of individual patterns into a tree-like hierarchy based on each pattern's structure and function, which groups them into fewer than 20 classes it calls metapatterns, and then discusses the common features, applicability and performance of each class. A metapattern is described as something that can be applied to a local or distributed system to change its properties in a certain way, and then applied again.

A diagram titled "The map of system topologies" places architectures on two axes, partitioning into layers vertically and partitioning into services horizontally. The introduction's metapatterns diagram uses three axes instead: abstraction, subdomain and sharding.

## How it is organised

The introduction covers the book itself, the idea of metapatterns, and system topologies. A foundations part follows, on modules and complexity; forces, asynchronicity and distribution; four kinds of software (control, interactive, streaming and computational systems); and arranging communication, where orchestration, choreography and integration through shared data are compared.

The metapatterns come in four groups, nineteen chapters in all on the landing page:

| Group | Metapatterns |
|---|---|
| Basic | Monolith, Shards, Layers, Services, Pipeline |
| Extension | Middleware, Shared Repository, Proxy, Orchestrator, Sandwich |
| Fragmented | Layered Services, Polyglot Persistence, Backends for Frontends, Service-Oriented Architecture, Hierarchy |
| Implementation | Plugins, Hexagonal Architecture, Microkernel, Mesh |

An analytics part then compares the patterns, takes on ambiguous pattern names (its illustration shows several different systems that are all called monoliths), relates architecture to a product's life cycle, looks at real-world inspirations for the patterns, and ends with "The heart of software architecture", whose diagram shows maintenance pain depending on project size, with a different architecture being optimal at each size. The appendices include evolutions of architectures, which show how a system may change under different forces, the format every metapattern chapter follows, a glossary, an index of patterns, a list of books referenced, and a history of changes.

## The book

The book runs 440 pages with hundreds of box-and-arrow diagrams in what the author calls NoUML style, and the site describes it as concise and AI-free. It can be downloaded from GitHub and Leanpub, and the page closes with "Knowledge must be free!". Five slide decks on Speaker Deck, covering patterns of patterns, basic architectures, extensions, fragmented architectures and implementation patterns, are linked and marked outdated.

## Connections

- [[what-even-are-microservices]] — argues that splitting a system into services is an answer to an organisational problem; Services and Layered Services are where this book files that architecture
- [[porto-sap]] — one concrete, named layered pattern for Laravel that borrows from hexagonal architecture, the kind of individual pattern the compendium groups into classes
