Architectural pattern
An architectural pattern is a reusable, named solution to a recurring structural problem in software design, applied at the level of a whole system or major subsystem rather than to a single class or function (which is the scope of a design pattern). Architectural patterns describe how the major components of a system are organized and how they communicate, not the fine-grained implementation details within any one component.
Examples found throughout this garden include:
- Event sourcing: Capturing every change in application state as an immutable event.
- Event-driven architecture: Components communicate by publishing and subscribing to events.
- Hexagonal architecture and onion architecture: Isolating business logic from infrastructure concerns.
- Micro frontend: Independently-developed front-end applications composed into a greater whole.
- Strangler fig pattern: Incrementally replacing a legacy system by routing functionality to new code over time.
- Entity Component System (ECS): Composing game objects from reusable components rather than inheritance hierarchies.
Choosing an architectural pattern is one of the most consequential decisions in system design, because it shapes how easy a system is to change, scale, test, and reason about for the lifetime of the project. Unlike a design pattern applied locally to a single class, an architectural pattern is difficult and expensive to change once a system is built around it.