Patterns of software architecture are all interrelated (no pattern is an island). You can rarely make a product in a pure architectural style, and the chances for it to survive undistorted over years are negligible. Software grows iteratively and adapts to its environment.

Architectural Metapatterns is all about patterns and their relations. It generalizes hundreds of individual patterns into several wider classes (metapatterns) each of which can be applied to a local or distributed system to change its properties in a certain way. Rinse and repeat.

The content is lavishly illustrated with intuitive NoUML diagrams. It’s concise and AI-free.

Have a good time!

Presentations (outdated)

Patterns of Patterns Basic Architectures Architectural Extensions Fragmented Architectures Implementation Patterns

Introduction

There are too many patterns!

About this book

Abstraction, subdomain, and sharding axes with the following text between them: your pattern here.

Metapatterns

A monolith, layers, plugins, a hierarchy, and services in a system of coordinates that shows partitioning into layers and subdomains.

System topologies

Foundations of software architecture

Three components each encapsulating a graph of nodes.

Modules and complexity

Messaging in a three-layered system with the lower layer making multiple calls to hardware.

Forces, asynchronicity, and distribution

Control, interactive, streaming, and computational systems.

Four kinds of software

A client above three services with question marks between the components.

Arranging communication

Basic metapatterns

A monolithic system that blends application, domain rules, generic code, and data in a single component.

Monolith

Interconnected shards.

Shards

A system with three layers: application, domain, and database.

Layers

Services Architecture.

Services

A pipeline made from input, three processing steps, and output.

Pipeline

Extension metapatterns

Services connected through a middleware.

Middleware

Services accessing a shared repository.

Shared Repository

A proxy between a client and services.

Proxy

Orchestrated services.

Orchestrator

Sandwich Architecture.

Sandwich

Fragmented metapatterns

Three-layered services.

Layered Services

Polyglot Persistence.

Polyglot Persistence

Backends for Frontends.

Backends for Frontends

Service-Oriented Architecture comprises layers of services.

Service-Oriented Architecture

A hierarchy with three layers. There is one component in the top layer, two components below it, and five components in the lowest layer.

Hierarchy

Implementation metapatterns

Plugin Architecture.

Plugins

Hexagonal Architecture with adapters between its core and input, output, database, and libraries.

Hexagonal Architecture

Applications running over a microkernel.

Microkernel

Applications connected through a mesh.

Mesh

Analytics

Services sharing a dataset, a pipeline, dependency inversion in an operating system with device drivers, and an adapter between a client and a service.

Comparison of architectural patterns

Various systems called monoliths.

Ambiguous patterns

A cycle with the following architectures: monolith, layers, layered services, a sandwich cell interacting with orchestrated layered services, and layers with two databases.

Architecture and product life cycle

Three services with queues of people and luggage above a transport layer with train stations and trains.

Real-world inspirations for architectural patterns

The pain level of maintaining a project depends on the project's size, with different architectures being optimal for different project sizes.

The heart of software architecture

Appendices

Acknowledgements

Books referenced

Copyright

Disclaimer

Evolutions of architectures

Format of a metapattern

Glossary

History of changes

Index of patterns


The map of system topologies

The map of system topologies. The vertical asix is partitioning into layers, the horizontal axis is partitioning into services

The book

Cover of Architectural Metapatterns

This website is an online version of my book Architectural Metapatterns: The Pattern Language of Software Architecture which can be downloaded from GitHub or Leanpub.

It is a compendium of architectural patterns which sorts them out into a tree-like hierarchy based on the pattern’s structure and function. This allows for grouping hundreds of patterns into less then 20 classes and exploring the common features, applicability, and performance of each class.

It also includes supplementary topics that range from the discussion on the nature of complexity to the comparison of orchestration, choreography, and integration through shared data. Aside of that, there is a wide range of evolutions which show how a system may change under different forces.

Architectural Metapatterns is AI-free, 440 pages long, and includes hundreds of box-and-arrow diagrams.

If you like the book or website, please tell your friends about them. Knowledge must be free!