Appearance
System Design Guide
1. Fundamentals
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Scalability | Link | Understand horizontal vs vertical scaling and when to apply each. | Identify a service in our system that needs to scale and propose a strategy. |
| Latency vs Throughput | Link | Learn the difference and how to measure them. | Benchmark an API endpoint using wrk or ab. |
| CAP Theorem | Link | Understand the tradeoff between Consistency, Availability, and Partition Tolerance. | Classify which part of CAP applies to PostgreSQL and MongoDB. |
| ACID Transactions | Link | Learn how databases ensure transaction integrity. | Write a sample ACID transaction in PostgreSQL. |
2. Consistency & Reliability
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Strong vs Eventual Consistency | Link | Learn how data consistency behaves in distributed systems. | Describe how eventual consistency applies to our replication setup. |
| Fault Tolerance | Link | Learn strategies to maintain service availability during failures. | Design a failover plan for one backend service. |
| Disaster Recovery | Link | Understand DR concepts like RTO and RPO. | Write a short DR plan for our system. |
| Data Replication & Redundancy | Replication / Redundancy | Differentiate between replication and redundancy. | Draw how replication works in our databases. |
3. Communication Between Services
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Synchronous vs Asynchronous | Link | Compare synchronous and asynchronous messaging. | Design an async version of an existing sync API. |
| REST vs RPC | Link | Learn when to use REST vs RPC. | Write a REST and RPC version of the same endpoint. |
| API Design | Link | Understand REST best practices and versioning. | Design an API and document it using OpenAPI. |
| API Gateway & Rate Limiting | Gateway / Rate Limit | Protect services and manage traffic effectively. | Implement a rate limiter using Redis. |
4. Data & Storage
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| SQL vs NoSQL | Link | Understand when to choose SQL or NoSQL. | Match data types to the right database type. |
| Database Indexes | Link | Learn query optimization with indexes. | Compare query times with and without indexes. |
| Database Scaling & Sharding | Scaling / Sharding | Learn how databases scale horizontally. | Draw a sharding architecture diagram. |
5. Infrastructure & Distribution
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Load Balancing | Link | Learn load balancing algorithms and use cases. | Implement a simple load balancer using Nginx or Traefik. |
| Service Discovery | Link | Understand how microservices find each other. | Explain how Consul or Istio manages service discovery. |
| Proxy Server | Link | Understand how proxies route and cache traffic. | Analyze our system’s proxy architecture. |
| CDN (Content Delivery Network) | Link | Learn how CDNs reduce latency globally. | Describe how a CDN improves our user experience. |
6. Distributed Systems Concepts
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Consistent Hashing | Link | Understand data distribution among nodes. | Simulate a consistent hashing ring. |
| Consensus Algorithms | Link | Learn Raft and Paxos basics. | Summarize how Raft reaches agreement. |
| Gossip Protocol | Link | Understand peer-to-peer communication. | Design a health-check system using gossip. |
| Distributed Locking | Link | Learn about concurrency control across services. | Implement Redis-based distributed locks. |
7. Observability & Resilience
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Distributed Tracing | Link | Learn to trace requests across services. | Integrate OpenTelemetry tracing. |
| Heartbeat | Link | Monitor service health. | Write a simple heartbeat monitor. |
| Circuit Breaker | Link | Prevent cascading failures. | Use a circuit breaker library in your service. |
| Checksum | Link | Verify data integrity. | Implement a SHA256 checksum for a file transfer. |
8. Performance & Optimization
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Caching & Distributed Caching | Cache / Dist Cache | Learn how caching improves speed and scalability. | Add a cache layer to one API endpoint. |
| Bloom Filters | Link | Understand probabilistic data structures. | Implement a simple Bloom Filter in code. |
| Horizontal vs Vertical Scaling | Link | Decide how to scale services effectively. | Create a scaling plan for one service. |
9. Tradeoffs & Decision-Making
| Topic | Link | Learning Objective | Exercise |
|---|---|---|---|
| Top 15 Tradeoffs | Link | Learn to evaluate pros and cons of system design decisions. | Analyze 3 design choices in our system and identify their tradeoffs. |