System Design Fundamentals
Scaling, load balancing, replication, sharding and the classic design problems.
Backend Engineer track
Junior
Write correct code, ship small changes safely, ask good questions.
- CDNA network of edge servers serving content close to users.
- Load BalancerDistributing traffic across servers.
- Static Content HostingServing files straight from storage or a CDN instead of your app.
- Vertical ScalingScaling up with a bigger machine.
Mid-level
Own a feature end to end without hand-holding.
Core: start here
- Database ReplicationCopying data to other servers for availability and read scaling.
- Horizontal ScalingScaling out with more machines.
- Read ReplicaA copy of the database for serving reads.
- Stateless ServiceA service that keeps no session data locally, so any instance can serve any request.
10 more mid-level concepts
- API GatewayA single entry point handling routing, auth and rate limits for many services.
- Clarifying RequirementsAsking what the system must do, and at what scale, before designing it.
- Database Connection PoolReusing database connections, with tools like PgBouncer at scale.
- Designing a URL ShortenerA classic beginner system design exercise.
- Forward ProxyA proxy acting on behalf of clients.
- Reverse ProxyA server in front of your app that handles TLS, routing and caching.
- ScalabilityHandling more load by adding resources.
- Sticky SessionsRouting a user to the same server every time.
- System DesignDesigning the components, data flow and trade-offs of a whole system.
- System Design InterviewThe interview format, and how it differs from real design work.
Senior
Own a system, its failure modes, and its trade-offs.
Core: start here
- Back-of-the-Envelope EstimationRough math for traffic, storage and bandwidth.
- CQRSSeparating the write model from the read model.
- Replication LagFollowers falling behind the leader.
- ShardingSplitting data across databases by key.
24 more senior concepts
- Consistent HashingHashing that moves only a few keys when servers are added or removed.
- Coordination ServiceSystems like ZooKeeper and etcd for configuration, locks and leader election.
- Data LocalityKeeping data close to where it's processed.
- Database FederationSplitting databases by function, e.g. users and orders in separate databases.
- Designing a Chat SystemReal-time messaging, presence and message storage.
- Designing a News FeedFan-out on write vs on read, a classic design problem.
- Designing a Notification SystemFan-out across email, SMS and push, with preferences and retries.
- Designing a Rate LimiterCounting requests across many servers under high load.
- Designing AutocompleteTries, ranking and caching for type-ahead search.
- Distributed ID GenerationGenerating unique IDs across machines, e.g. UUIDv7 or Snowflake IDs.
- Event SourcingStoring every change as an event and deriving state from them.
- Hot PartitionOne shard getting far more traffic than the others.
- Hot, Warm and Cold StorageTiering data by how often it's accessed.
- L4 vs L7 Load BalancingBalancing by connection vs by HTTP content.
- Leader-Follower ReplicationOne node takes writes; followers copy them and serve reads.
- Load Balancing AlgorithmsRound robin, least connections and consistent hashing.
- Multi-Leader ReplicationSeveral nodes accept writes and sync with each other.
- PartitioningDividing data into parts, within one machine or across many.
- Push vs Pull CDNUploading content to the CDN vs letting it fetch on demand.
- Read-Heavy vs Write-HeavyHow the dominant traffic shape drives the design.
- Read-Your-Writes ConsistencyUsers always seeing their own updates.
- RebalancingMoving data around when shards are added or removed.
- Refresh-Ahead CacheRefreshing cache entries before they expire.
- Shard KeyThe field that decides which shard data lives on.
Staff
Shape how many teams build, across systems.
- Multi-Region ArchitectureRunning in several regions for lower latency and resilience.
Principal
Set technical direction for the organization.
Nothing here yet.
Data Engineer track
Junior
Build and fix pipelines from clear specs; write correct SQL.
Core: start here
- PartitioningDividing data into parts, within one machine or across many.
1 more junior concepts
- Vertical ScalingScaling up with a bigger machine.
Mid-level
Own pipelines and models end to end, including their quality.
- Data LocalityKeeping data close to where it's processed.
- Database ReplicationCopying data to other servers for availability and read scaling.
- Horizontal ScalingScaling out with more machines.
- Hot, Warm and Cold StorageTiering data by how often it's accessed.
- Read ReplicaA copy of the database for serving reads.
- ShardingSplitting data across databases by key.
Senior
Design the platform's storage, processing and modeling choices.
Core: start here
- Back-of-the-Envelope EstimationRough math for traffic, storage and bandwidth.
- CQRSSeparating the write model from the read model.
- Event SourcingStoring every change as an event and deriving state from them.
3 more senior concepts
- Consistent HashingHashing that moves only a few keys when servers are added or removed.
- Distributed ID GenerationGenerating unique IDs across machines, e.g. UUIDv7 or Snowflake IDs.
- Replication LagFollowers falling behind the leader.
Staff
Shape how the whole organization produces and uses data.
- Multi-Region ArchitectureRunning in several regions for lower latency and resilience.
Principal
Set data strategy and architecture across the company.
Nothing here yet.
Frontend Engineer track
Junior
Build UI that works, ship small changes safely, ask good questions.
- CDNA network of edge servers serving content close to users.
- Load BalancerDistributing traffic across servers.
- Static Content HostingServing files straight from storage or a CDN instead of your app.
Mid-level
Own a feature end to end without hand-holding.
- API GatewayA single entry point handling routing, auth and rate limits for many services.
- Clarifying RequirementsAsking what the system must do, and at what scale, before designing it.
- Forward ProxyA proxy acting on behalf of clients.
- Reverse ProxyA server in front of your app that handles TLS, routing and caching.
- ScalabilityHandling more load by adding resources.
- System DesignDesigning the components, data flow and trade-offs of a whole system.
- System Design InterviewThe interview format, and how it differs from real design work.
Senior
Own an app's architecture, performance, and failure modes.
- Back-of-the-Envelope EstimationRough math for traffic, storage and bandwidth.
- CQRSSeparating the write model from the read model.
- Designing a Chat SystemReal-time messaging, presence and message storage.
- Designing AutocompleteTries, ranking and caching for type-ahead search.
- Push vs Pull CDNUploading content to the CDN vs letting it fetch on demand.
- Read-Your-Writes ConsistencyUsers always seeing their own updates.
Staff
Shape how many teams build, across apps.
- Multi-Region ArchitectureRunning in several regions for lower latency and resilience.
Principal
Set technical direction for the organization.
Nothing here yet.