Skip to content

System Design Guide

1. Fundamentals

TopicLinkLearning ObjectiveExercise
ScalabilityLinkUnderstand 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 ThroughputLinkLearn the difference and how to measure them.Benchmark an API endpoint using wrk or ab.
CAP TheoremLinkUnderstand the tradeoff between Consistency, Availability, and Partition Tolerance.Classify which part of CAP applies to PostgreSQL and MongoDB.
ACID TransactionsLinkLearn how databases ensure transaction integrity.Write a sample ACID transaction in PostgreSQL.

2. Consistency & Reliability

TopicLinkLearning ObjectiveExercise
Strong vs Eventual ConsistencyLinkLearn how data consistency behaves in distributed systems.Describe how eventual consistency applies to our replication setup.
Fault ToleranceLinkLearn strategies to maintain service availability during failures.Design a failover plan for one backend service.
Disaster RecoveryLinkUnderstand DR concepts like RTO and RPO.Write a short DR plan for our system.
Data Replication & RedundancyReplication / RedundancyDifferentiate between replication and redundancy.Draw how replication works in our databases.

3. Communication Between Services

TopicLinkLearning ObjectiveExercise
Synchronous vs AsynchronousLinkCompare synchronous and asynchronous messaging.Design an async version of an existing sync API.
REST vs RPCLinkLearn when to use REST vs RPC.Write a REST and RPC version of the same endpoint.
API DesignLinkUnderstand REST best practices and versioning.Design an API and document it using OpenAPI.
API Gateway & Rate LimitingGateway / Rate LimitProtect services and manage traffic effectively.Implement a rate limiter using Redis.

4. Data & Storage

TopicLinkLearning ObjectiveExercise
SQL vs NoSQLLinkUnderstand when to choose SQL or NoSQL.Match data types to the right database type.
Database IndexesLinkLearn query optimization with indexes.Compare query times with and without indexes.
Database Scaling & ShardingScaling / ShardingLearn how databases scale horizontally.Draw a sharding architecture diagram.

5. Infrastructure & Distribution

TopicLinkLearning ObjectiveExercise
Load BalancingLinkLearn load balancing algorithms and use cases.Implement a simple load balancer using Nginx or Traefik.
Service DiscoveryLinkUnderstand how microservices find each other.Explain how Consul or Istio manages service discovery.
Proxy ServerLinkUnderstand how proxies route and cache traffic.Analyze our system’s proxy architecture.
CDN (Content Delivery Network)LinkLearn how CDNs reduce latency globally.Describe how a CDN improves our user experience.

6. Distributed Systems Concepts

TopicLinkLearning ObjectiveExercise
Consistent HashingLinkUnderstand data distribution among nodes.Simulate a consistent hashing ring.
Consensus AlgorithmsLinkLearn Raft and Paxos basics.Summarize how Raft reaches agreement.
Gossip ProtocolLinkUnderstand peer-to-peer communication.Design a health-check system using gossip.
Distributed LockingLinkLearn about concurrency control across services.Implement Redis-based distributed locks.

7. Observability & Resilience

TopicLinkLearning ObjectiveExercise
Distributed TracingLinkLearn to trace requests across services.Integrate OpenTelemetry tracing.
HeartbeatLinkMonitor service health.Write a simple heartbeat monitor.
Circuit BreakerLinkPrevent cascading failures.Use a circuit breaker library in your service.
ChecksumLinkVerify data integrity.Implement a SHA256 checksum for a file transfer.

8. Performance & Optimization

TopicLinkLearning ObjectiveExercise
Caching & Distributed CachingCache / Dist CacheLearn how caching improves speed and scalability.Add a cache layer to one API endpoint.
Bloom FiltersLinkUnderstand probabilistic data structures.Implement a simple Bloom Filter in code.
Horizontal vs Vertical ScalingLinkDecide how to scale services effectively.Create a scaling plan for one service.

9. Tradeoffs & Decision-Making

TopicLinkLearning ObjectiveExercise
Top 15 TradeoffsLinkLearn to evaluate pros and cons of system design decisions.Analyze 3 design choices in our system and identify their tradeoffs.