Architectural Patterns
High-level software architecture approaches for structuring applications, from strategic domain modelling to distributed system patterns.
Choosing an architecture? Clean Architecture, Hexagonal Architecture, and Onion Architecture all share the same core principle — dependency inversion with the domain at the centre — but differ in terminology and layer naming. DDD pairs well with any of these as a strategic design approach. Start with a Modular Monolith and extract Microservices only when you have a clear scaling or team-boundary need.
Filter by tag:
Strategic Design
Domain-Driven Design (DDD)
A strategic approach to software design that focuses on modelling the core business domain, using bounded contexts, aggregates, and ubiquitous language.
Hexagonal Architecture (Ports & Adapters)
Isolates the core business logic from external concerns by defining ports (interfaces) and adapters (implementations) for all I/O.
Clean Architecture
Robert C. Martin's architecture emphasising dependency inversion — business rules at the centre, frameworks and UI at the edges.
Onion Architecture
Concentric layers with the domain model at the core, application services in the middle, and infrastructure at the outer ring.
Distributed Systems
Microservices Architecture
Decompose applications into small, independently deployable services that communicate over lightweight protocols.
Event-Driven Architecture
Systems that produce, detect, and react to events — enabling loose coupling, real-time processing, and eventual consistency.
CQRS (Command Query Responsibility Segregation)
Separates read and write models to optimise each independently — often paired with Event Sourcing for complex domains.
Event Sourcing
Persist state as a sequence of immutable events rather than current state — enables full audit trails and temporal queries.
Service Mesh
Infrastructure layer for managing service-to-service communication with observability, traffic control, and security (e.g., Istio, Linkerd).
Application Structure
Monolithic Architecture
A single deployable unit containing all application logic — simpler to develop and deploy, ideal for smaller teams and early-stage products.
Modular Monolith
A monolithic application structured into well-defined modules with clear boundaries — combining monolith simplicity with microservice-like modularity.
Serverless Architecture
Build and run applications without managing servers — using functions-as-a-service (FaaS) and managed cloud services.