Backend architecture defines how server-side systems are structured, organized, and scaled to handle business logic, data processing, and service orchestration. From traditional monoliths to distributed microservices and cell-based architectures, each architectural pattern represents trade-offs between simplicity, scalability, team independence, and operational complexity. Choosing the right architecture depends on team size, deployment frequency, performance requirements, and how much complexity your organization can effectively manage — there's no universal "best" architecture, only the one that fits your current constraints and enables your team to deliver value efficiently.
What This Cheat Sheet Covers
This topic spans 11 focused tables and 91 indexed concepts, 90 flashcards. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
Table 1: Primary Architecture Styles
These are the big-picture shapes a backend can take — the first and most consequential decision, made before any code is written. The spectrum runs from the simplicity of a monolith through the team autonomy of microservices to the extreme-scale and resilience plays like cell-based and space-based architectures. A useful default sits early in this list: a modular monolith gives you most of the organizational benefits of microservices without the distributed-systems tax, which is why it's the recommended starting point for most projects.
| Style | Example | Description | |
|---|---|---|---|
application.war└── all components in single deployable | • Single unified codebase deployed as one unit • simplest to develop and deploy initially but becomes difficult to scale and modify as the application grows. | ||
user-service, order-service, payment-service(each independently deployed) | • Application split into independently deployable services organized around business capabilities • enables team autonomy and technology diversity but adds operational complexity. | ||
app.jar├── users/├── orders/└── payments/ | • Monolith with strong internal boundaries between modules • provides organizational benefits of microservices without distributed system complexity — recommended starting point for most projects. | ||
AWS Lambda, Azure Functionstriggered by events | • Event-driven functions managed by cloud provider • eliminates server management and scales automatically but introduces cold starts and vendor lock-in. | ||
Kafka/RabbitMQservices react to events | • Services communicate through asynchronous event streams rather than direct calls • enables loose coupling and real-time processing but requires careful event schema management. | ||
Presentation → Business → Data(3-tier or more) | • Application divided into horizontal layers with each layer depending only on layers below • provides separation of concerns but can lead to bloated middle tiers. | ||
Enterprise Service Bus (ESB)connecting reusable services | • Enterprise-scale approach with services communicating through a central bus • coarser-grained services than microservices, often using SOAP and focused on enterprise-wide reuse. | ||
cell-router → cell-1 (users A-M)cell-router → cell-2 (users N-Z) | • Workload partitioned into isolated, self-contained cells each serving a subset of traffic • failures stay within one cell, limiting blast radius to a small percentage of users. | ||
In-memory data gridwith processing units | • Removes database as bottleneck by using distributed in-memory storage (tuple spaces) • achieves extreme scalability for high-traffic applications but complex to implement. | ||
BitTorrent, blockchain nodes(each peer is client and server) | • Decentralized network where nodes share resources directly • provides resilience and no single point of failure but challenging to coordinate and secure. |