Software Architecture Comparison Table
| Architecture | Choose When | Optimizes | Main Trade-offs |
|---|---|---|---|
| Monolithic see: monolith |
- Small team - Simple domain - Fast iteration |
- Simplicity - Fast development - Easy deployment - Poor scalability - Hard to isolate failures - Grows rigid - A deployment affects everything e |
|
| Modular Monolith see: monolith |
- Clear domain boundaries - Long-term maintainability |
- Separation of concerns - Maintainability - Future service extraction |
- Requires discipline - More upfront des |
| Microservices see: microservice |
- Large system - Multiple teams - Independent scaling - Independent deployment units |
- Scalability - Team autonomy - Fault isolation |
- Operational complexity - Latency & consistency is |
| Event-Driven (EDA) | - Async workflows - Loose coupling - High throughput |
- Decoupling - Scalability - Extensibility |
- Hard debugging - Eventual consis |
| Layered (N-Tier) | - Traditional business apps - Clear responsibility split |
- Understandability - Testability - Maintainability |
- Rigid structure - Performance ov |
| Domain Centric see: domain-centric-architecture |
- Long-lived business logic - Multiple interfaces |
- Testability - Tech independence - Maintainability |
- More abstractions - Higher initial com |
| SOA | - Enterprise integration - Shared services |
- Reuse - Interoperability |
- Central governance - Slower e |
| Serverless | - Unpredictable workloads - Minimal ops |
- Cost efficiency - Auto-scaling |
- Cold starts - Vendo |
| CQRS |
- Read-heavy systems - Complex domain |
- Scalability - Performance |
- Increased complexity - Eventual c |
| Microkernel | - Extensible platforms - Plugin-based systems |
- Extensibility - Customization |
- Plugin lifecycle |