The pattern language of software architecture

Lobsters Hottest Papers

Summary

This article presents architectural metapatterns that generalize software architecture patterns into wider classes for local and distributed systems, illustrated with intuitive diagrams and outdated presentations.

<p><a href="https://lobste.rs/s/mkpgrk/pattern_language_software_architecture">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 09/01/26, 07:43 PM

# The pattern language of software architecture Source: [https://metapatterns.io/](https://metapatterns.io/) 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*](https://leanpub.com/metapatterns)is all about patterns and their relations\. It generalizes hundreds of individual patterns into several wider classes \([*metapatterns*](https://metapatterns.io/introduction/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](https://metapatterns.io/introduction/about-this-book/#diagrams)\. It’s concise and AI\-free\. *Have a good time\!* [## Presentations \(outdated\)](https://speakerdeck.com/denyspoltorak)[![Patterns of Patterns](https://metapatterns.io/diagrams/Web/slides/Patterns.png)](https://speakerdeck.com/denyspoltorak/patterns-of-patterns-c322149c-fcdd-4df6-8c6c-f273c7ab17dd)[![Basic Architectures](https://metapatterns.io/diagrams/Web/slides/Basic.png)](https://speakerdeck.com/denyspoltorak/basic-architectures)[![Architectural Extensions](https://metapatterns.io/diagrams/Web/slides/Extensions.png)](https://speakerdeck.com/denyspoltorak/architectural-extensions-c3e506c0-6472-4e2c-8113-b3d8ffa20d63)[![Fragmented Architectures](https://metapatterns.io/diagrams/Web/slides/Fragmented.png)](https://speakerdeck.com/denyspoltorak/fragmented-architectures-bf4d129f-4cd1-46bf-9fb0-248879872b25)[![Implementation Patterns](https://metapatterns.io/diagrams/Web/slides/Implementation.png)](https://speakerdeck.com/denyspoltorak/implementation-patterns) --- [## Introduction](https://metapatterns.io/introduction/)[![There are too many patterns!](https://metapatterns.io/diagrams/Web/About.png)About this book](https://metapatterns.io/introduction/about-this-book/)[![Abstraction, subdomain, and sharding axes with the following text between them: your pattern here.](https://metapatterns.io/diagrams/Web/Metapatterns.png)Metapatterns](https://metapatterns.io/introduction/metapatterns/)[![A monolith, layers, plugins, a hierarchy, and services in a system of coordinates that shows partitioning into layers and subdomains.](https://metapatterns.io/diagrams/Web/Topologies.png)System topologies](https://metapatterns.io/introduction/system-topologies/)[## Foundations of software architecture](https://metapatterns.io/foundations-of-software-architecture/)[![Three components each encapsulating a graph of nodes.](https://metapatterns.io/diagrams/Web/Complexity.png)Modules and complexity](https://metapatterns.io/foundations-of-software-architecture/modules-and-complexity/)[![Messaging in a three-layered system with the lower layer making multiple calls to hardware.](https://metapatterns.io/diagrams/Web/Forces.png)Forces, asynchronicity, and distribution](https://metapatterns.io/foundations-of-software-architecture/forces--asynchronicity--and-distribution/)[![Control, interactive, streaming, and computational systems.](https://metapatterns.io/diagrams/Web/4Kinds.png)Four kinds of software](https://metapatterns.io/foundations-of-software-architecture/four-kinds-of-software/)[![A client above three services with question marks between the components.](https://metapatterns.io/diagrams/Web/Communication.png)Arranging communication](https://metapatterns.io/foundations-of-software-architecture/arranging-communication/)[## Basic metapatterns](https://metapatterns.io/basic-metapatterns/)[![A monolithic system that blends application, domain rules, generic code, and data in a single component.](https://metapatterns.io/diagrams/Web/Monolith.png)Monolith](https://metapatterns.io/basic-metapatterns/monolith/)[![Interconnected shards.](https://metapatterns.io/diagrams/Web/Shards.png)Shards](https://metapatterns.io/basic-metapatterns/shards/)[![A system with three layers: application, domain, and database.](https://metapatterns.io/diagrams/Web/Layers.png)Layers](https://metapatterns.io/basic-metapatterns/layers/)[![Services Architecture.](https://metapatterns.io/diagrams/Web/Services.png)Services](https://metapatterns.io/basic-metapatterns/services/)[![A pipeline made from input, three processing steps, and output.](https://metapatterns.io/diagrams/Web/Pipeline.png)Pipeline](https://metapatterns.io/basic-metapatterns/pipeline/)[## Extension metapatterns](https://metapatterns.io/extension-metapatterns/)[![Services connected through a middleware.](https://metapatterns.io/diagrams/Web/Middleware.png)Middleware](https://metapatterns.io/extension-metapatterns/middleware/)[![Services accessing a shared repository.](https://metapatterns.io/diagrams/Web/Shared%20Repository.png)Shared Repository](https://metapatterns.io/extension-metapatterns/shared-repository/)[![A proxy between a client and services.](https://metapatterns.io/diagrams/Web/Proxy.png)Proxy](https://metapatterns.io/extension-metapatterns/proxy/)[![Orchestrated services.](https://metapatterns.io/diagrams/Web/Orchestrator.png)Orchestrator](https://metapatterns.io/extension-metapatterns/orchestrator/)[![Sandwich Architecture.](https://metapatterns.io/diagrams/Web/Sandwich.png)Sandwich](https://metapatterns.io/extension-metapatterns/sandwich/)[## Fragmented metapatterns](https://metapatterns.io/fragmented-metapatterns/)[![Three-layered services.](https://metapatterns.io/diagrams/Web/Layered%20Services.png)Layered Services](https://metapatterns.io/fragmented-metapatterns/layered-services/)[![Polyglot Persistence.](https://metapatterns.io/diagrams/Web/Polyglot%20Persistence.png)Polyglot Persistence](https://metapatterns.io/fragmented-metapatterns/polyglot-persistence/)[![Backends for Frontends.](https://metapatterns.io/diagrams/Web/Backends%20for%20Frontends.png)Backends for Frontends](https://metapatterns.io/fragmented-metapatterns/backends-for-frontends--bff-/)[![Service-Oriented Architecture comprises layers of services.](https://metapatterns.io/diagrams/Web/Service-Oriented%20Architecture.png)Service\-Oriented Architecture](https://metapatterns.io/fragmented-metapatterns/service-oriented-architecture--soa-/)[![A hierarchy with three layers. There is one component in the top layer, two components below it, and five components in the lowest layer.](https://metapatterns.io/diagrams/Web/Hierarchy.png)Hierarchy](https://metapatterns.io/fragmented-metapatterns/hierarchy/)[## Implementation metapatterns](https://metapatterns.io/implementation-metapatterns/)[![Plugin Architecture.](https://metapatterns.io/diagrams/Web/Plugins.png)Plugins](https://metapatterns.io/implementation-metapatterns/plugins/)[![Hexagonal Architecture with adapters between its core and input, output, database, and libraries.](https://metapatterns.io/diagrams/Web/Hexagonal%20Architecture.png)Hexagonal Architecture](https://metapatterns.io/implementation-metapatterns/hexagonal-architecture/)[![Applications running over a microkernel.](https://metapatterns.io/diagrams/Web/Microkernel.png)Microkernel](https://metapatterns.io/implementation-metapatterns/microkernel/)[![Applications connected through a mesh.](https://metapatterns.io/diagrams/Web/Mesh.png)Mesh](https://metapatterns.io/implementation-metapatterns/mesh/)[## Analytics](https://metapatterns.io/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.](https://metapatterns.io/diagrams/Web/Comparison.png)Comparison of architectural patterns](https://metapatterns.io/analytics/comparison-of-architectural-patterns/)[![Various systems called monoliths.](https://metapatterns.io/diagrams/Web/Ambiguous.png)Ambiguous patterns](https://metapatterns.io/analytics/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.](https://metapatterns.io/diagrams/Web/Life%20cycle.png)Architecture and product life cycle](https://metapatterns.io/analytics/architecture-and-product-life-cycle/)[![Three services with queues of people and luggage above a transport layer with train stations and trains.](https://metapatterns.io/diagrams/Web/Real-world.png)Real\-world inspirations for architectural patterns](https://metapatterns.io/analytics/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.](https://metapatterns.io/diagrams/Web/Heart.png)The heart of software architecture](https://metapatterns.io/analytics/the-heart-of-software-architecture/)[## Appendices](https://metapatterns.io/appendices/)[Acknowledgements](https://metapatterns.io/appendices/acknowledgements/)[Books referenced](https://metapatterns.io/appendices/books-referenced/)[Copyright](https://metapatterns.io/appendices/copyright/)[Disclaimer](https://metapatterns.io/appendices/disclaimer/)[Evolutions of architectures](https://metapatterns.io/appendices/evolutions-of-architectures/)[Format of a metapattern](https://metapatterns.io/appendices/format-of-a-metapattern/)[Glossary](https://metapatterns.io/appendices/glossary/)[History of changes](https://metapatterns.io/appendices/history-of-changes/)[Index of patterns](https://metapatterns.io/appendices/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](https://metapatterns.io/diagrams/Web/Map.png) --- ## The book ![Cover of Architectural Metapatterns](https://metapatterns.io/cover.png)This website is an online version of my book*Architectural Metapatterns: The Pattern Language of Software Architecture*which can be downloaded from[GitHub](https://github.com/denyspoltorak/metapatterns)or[Leanpub](https://leanpub.com/metapatterns)\. 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](https://metapatterns.io/introduction/metapatterns/)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](https://metapatterns.io/foundations-of-software-architecture/modules-and-complexity/)to the comparison of[orchestration](https://metapatterns.io/foundations-of-software-architecture/arranging-communication/orchestration/),[choreography](https://metapatterns.io/foundations-of-software-architecture/arranging-communication/choreography/), and[integration through shared data](https://metapatterns.io/foundations-of-software-architecture/arranging-communication/shared-data/)\. Aside of that, there is a wide range of[evolutions](https://metapatterns.io/appendices/evolutions-of-architectures/)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](https://metapatterns.io/introduction/about-this-book/#diagrams)\. If you like the book or website, please tell your friends about them\.*Knowledge must be free\!*

Similar Articles

Learning Software Architecture

Hacker News Top

A software engineer shares insights on learning software architecture, emphasizing the primacy of social and incentive structures over code, with examples from rust-analyzer and scientific code.

Good architecture shouldn't need a carrot or a stick

Lobsters Hottest

Blog post argues that good software architecture should be self-evident and frictionless, advocating Netflix/Spotify-style “paved road” patterns over coercive governance boards or embedded architects.

Design Patterns Suck

Lobsters Hottest

The article argues that design patterns are overrated and often unnecessary workarounds for language limitations, using Java as a prime example and contrasting it with more expressive languages like Scala.

Agentic Patterns

Hacker News Top

A comprehensive research guide from Veso detailing the universal architecture patterns that have converged across major AI agent systems (Claude Code, OpenAI Codex, Gemini CLI, etc.), presenting 8 postulates for building production-grade agentic systems.