Software Architectural Patterns
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope
Layered Pattern:
- Clean/Onion Architecture
- Layered (n-tire): Separates software into logical layers
Event-Driven:
- Event-Driven: Promotes the production, detection, consumption of, and reaction to events
- Publish-Subscribe
Component-Based:
- Object-Oriented
- Microkernel: Separates a minimal function core from extended functionality and customer-specific parts
- Plug-in
Service-Oriented:
- Service-Oriented (SOA)
- Broker
- Microservices: This architecture designs a software application as a suite of independently deployable, small, modular services
- Serveless (Faas)
Data-Centric:
- CQRS: Separates read and write operations for a data store. It enables independent scaling of read and write workloads and optimizes them separately
- Event-Sourcing
- Kappa
- Lambda
Distributed System:
- Space-Based: This resolves the issues of data consistency, reliable performance, and scalability for large-scale distributed systems
- Peer-to-Peer
Domain-Driven:
- Hexagonal (Ports & Adapters)
- Domain-Driven Design (DDD): Focuses on the domain logic and complexity rather that the technology used
Separation Of Concern:
- Model-View Presenter: Derivative of the Model-View-Controller (MVC) pattern, which aims to separate the concerns of data management, user interface, and control flow
- Model-View-Controller
Concurrency:
- Orchestration Choreography: A central coordinator (often called an orchestrator) that directs the interaction between services. The orchestrator is responsible for managing the control flow and data flow between services
- Primary-Secondary
- Pipeline/Pipe-Filter
Interpreter: Written in a high-level language, which the interpreter translates into executable code