System Design References
A curated list of system design articles, architecture patterns, and engineering best practices.
Start here
| Resource | What it is |
|---|---|
| The System Design Primer | The canonical free curriculum. Index of topics, a study guide by interview length, and seven fully worked designs (Pastebin, Twitter timeline, web crawler, Mint, key-value store, sales ranking, scaling to millions on AWS) plus object-oriented design solutions. |
| Latency numbers every programmer should know | The gist the whole estimation habit is built on. Annotated locally in Latency Numbers. |
| Designs, lessons and advice from building large distributed systems | Jeff Dean, LADIS 2009 — where those numbers originate. |
| CAP twelve years later | Brewer correcting the "pick two of three" reading. Summarised in CAP Theorem. |
| High Scalability | Real architecture write-ups, ongoing. |
Architecture & Patterns
| Topic | Link |
|---|---|
| The LMAX Architecture | Martin Fowler |
| CQRS Pattern: The Good, the Bad, and the Ugly | Better Programming |
| Domain-Driven Design Series | Dev.to |
| How to Work with Exceptions in DDD | Sudonull |
| Agile Software Development: Principles, Patterns, and Practices |
Microservices & Data
Dealing with Data in Microservice Architectures
| Part | Topic | Link |
|---|---|---|
| 1 | Share the Data | Dev.to |
| 2 | Synchronous Calls | Dev.to |
| 3 | Replication | Dev.to |
| 4 | Event-Driven Architectures | Dev.to |
Other
| Topic | Link |
|---|---|
| Building Scalable Subscription Service | Medium |
| Payment Transaction Management in Microservices | Mercari Engineering |
| Why Uber Switched from Postgres to MySQL | Uber Blog |
Messaging & Event Streaming
| Topic | Link |
|---|---|
| RabbitMQ Exchanges, Routing Keys & Bindings | CloudAMQP |
| Synchronous Request-Reply over Kafka | Callista |
| When to Use Request-Response with Kafka | Kai Waehner |
| Confluent Parallel Consumer | Confluent Blog |
Distributed Systems
| Topic | Link |
|---|---|
| Designing a Distributed Job Scheduler (LeetCode) | LeetCode Discussion |
| Designing a Distributed Job Scheduler | Level Up |
Spring Ecosystem
| Topic | Link |
|---|---|
| Spring Boot + Kafka + Protobuf | GitHub |
| Spring Cloud Supported Versions | GitHub Wiki |
| Microservices with Spring Cloud + Docker (Netflix Stack) | Dev Genius |
| Spring Security without WebSecurityConfigurerAdapter | Spring Blog |
| Spring Boot OAuth2 with Keycloak | Medium |
| Using Keycloak with Spring Boot 3.0 | Medium |
| Spring Boot with ReactJS (Gradle) | YouTube |
| Scaling WebSockets in Spring Services | Medium |
| Spring Boot REST API Error Handling | Toptal |
| HikariCP Pool Sizing | GitHub Wiki |
Observability
| Topic | Link |
|---|---|
| ELK Stack from Scratch with Docker | Viblo |
| Distributed Tracing with Zipkin, Sleuth & ELK | Medium |
Data & Messaging
| Topic | Link |
|---|---|
| Scalable System with RabbitMQ, Java & MySQL | Dev Genius |
| Using Postgres as a Message Queue | Java Advent |
| Integrating Oracle and Kafka | GitHub |
Miscellaneous
| Topic | Link |
|---|---|
| Mixing Java & Python | |
| Python Zeebe | GitHub |