-
Notifications
You must be signed in to change notification settings - Fork 53
Home
This site has multiple goals:
-
There are many patterns here. I invested over a year in collecting architectural patterns and styles that relate to the structure of a system.
You will find here Microservices and Microkernel but not Test-Driven Development (which is a methodology pattern) or Dead Letter Channel (a communication pattern).
-
There are way too many patterns. Thus some of them are similar, as there are only so many different things a human mind can invent. This wiki groups patterns according to their structure and function, and describes specific features, use cases, benefits and drawbacks for each group of patterns as a whole to outline the big picture and avoid repetition.
For example, Scatter-Gather and MapReduce are almost identical (Scatter-Gather lacks the Reduce step) while their relation to Saga is more remote but still traceable (each of the three patterns coordinates components of a system).
-
Having patterns arranged into a hierarchy greatly reduces the amount of information one must remember to learn a new pattern as it differs from others in its group in minor details.
Also, if we can enumerate patterns and see how they relate to each other, then we can compare them and even spot empty spaces in our knowledge - which is how I discovered Polyglot Persistence.
Places to start:
You can download this as a book from GitHub or Leanpub (which also features a few testimonials and a detailed table of contents). The work is licensed under Creative Commons Attribution 4.0 International.
Any help with the content, including adding new patterns or correcting the ones already described, is appreciated.
- Modules and complexity
- Forces, asynchronicity, and distribution
- Four kinds of software
- Arranging communication
- Layered Services
- Polyglot Persistence
- Backends for Frontends (BFF)
- Service-Oriented Architecture (SOA)
- Hierarchy
- Comparison of architectural patterns
- Ambiguous patterns
- Architecture and product life cycle
- Real-world inspirations for architectural patterns
- The heart of software architecture
- Acknowledgements
- Books referenced
- Copyright
- Disclaimer
-
Evolutions of architectures
- Evolutions of a Monolith that lead to Shards
- Evolutions of a Monolith that result in Layers
- Evolutions of a Monolith that make Services
- Evolutions of a Monolith that rely on Plugins
- Evolutions of Shards that share data
- Evolutions of Shards that share logic
- Evolutions of Layers that make more layers
- Evolutions of Layers that help large projects
- Evolutions of Layers to improve performance
- Evolutions of Layers to gain flexibility
- Evolutions of Services that add or remove services
- Evolutions of Services that add layers
- Evolutions of a Pipeline
- Evolutions of a Middleware
- Evolutions of a Shared Repository
- Evolutions of a Proxy
- Evolutions of an Orchestrator
- Evolutions of a Combined Component
- Format of a metapattern
- Glossary
- History of changes
- Index of patterns
| << Index of patterns | Introduction >> |
|---|
CC BY Denys Poltorak. Editor: Lars Noodén. Download the book from Leanpub or GitHub. Generated with odt2wiki.
Analytics
Appendices
- Acknowledgements
- Books referenced
- Copyright
- Disclaimer
-
Evolutions of architectures
- Evolutions of a Monolith that lead to Shards
- Evolutions of a Monolith that result in Layers
- Evolutions of a Monolith that make Services
- Evolutions of a Monolith that rely on Plugins
- Evolutions of Shards that share data
- Evolutions of Shards that share logic
- Evolutions of Layers that make more layers
- Evolutions of Layers that help large projects
- Evolutions of Layers to improve performance
- Evolutions of Layers to gain flexibility
- Evolutions of Services that add or remove services
- Evolutions of Services that add layers
- Evolutions of a Pipeline
- Evolutions of a Middleware
- Evolutions of a Shared Repository
- Evolutions of a Proxy
- Evolutions of an Orchestrator
- Evolutions of a Combined Component
- Format of a metapattern
- Glossary
- History of changes
- Index of patterns