sdlc.dev

Design walkthroughs

Patterns, companies and the systems we build, one narrated diagram at a time.

Resilience 101

Keep one failing dependency from taking everything down.

0 of 4 watched
  1. 1TimeoutBeginner · 6:33
  2. 2Retry with backoff and jitterBeginner · 6:35
  3. 3Circuit breakerIntermediate · 5:11
  4. 4BulkheadIntermediate · 6:19

Consistency across services

Change data in more than one place without losing or doubling anything.

0 of 5 watched
  1. 1Idempotency keysBeginner · 6:42
  2. 2Transactional outboxIntermediate · 7:09
  3. 3SagaAdvanced · 7:37
  4. 4Event sourcingAdvanced · 6:59
  5. 5CQRSIntermediate · 6:23

Scaling out

Spread load across many machines and keep them from drowning.

0 of 5 watched
  1. 1ShardingIntermediate · 7:00
  2. 2Consistent hashingIntermediate · 6:23
  3. 3Rate limitingBeginner · 7:00
  4. 4BackpressureIntermediate · 6:54
  5. 5Leader electionAdvanced · 6:52

Event-driven systems

Let services react to what happened, and make long processes finish.

0 of 6 watched
  1. 1Publish/subscribeBeginner · 7:13
  2. 2Competing consumersBeginner · 6:49
  3. 3Event streamingIntermediate · 7:01
  4. 4Transactional outboxIntermediate · 7:09
  5. 5SagaAdvanced · 7:37
  6. 6Durable workflowsAdvanced · 6:49

APIs and the edge

Shape what clients see, and keep the contract honest as both sides change.

0 of 7 watched
  1. 1API gatewayBeginner · 6:23
  2. 2Sidecar and service meshAdvanced · 7:32
  3. 3Backend for frontendIntermediate · 6:37
  4. 4Server-driven UIAdvanced · 6:22
  5. 5Rate limitingBeginner · 7:00
  6. 6Cursor paginationBeginner · 6:25
  7. 7Contract testingIntermediate · 7:11

Fast reads

Serve the same answer cheaply, close to the reader, without serving it wrong.

0 of 3 watched
  1. 1Cache-asideBeginner · 7:21
  2. 2CDN and edge cachingBeginner · 6:57
  3. 3CQRSIntermediate · 6:23

Evolving a system safely

Replace and change running systems without a big-bang rewrite.

0 of 4 watched
  1. 1Strangler figIntermediate · 7:12
  2. 2Anti-corruption layerIntermediate · 7:01
  3. 3Feature flagsBeginner · 6:44
  4. 4Contract testingIntermediate · 7:11

Staying up at scale

Contain failures so most users never notice them.

0 of 4 watched
  1. 1Graceful degradationIntermediate · 6:16
  2. 2BulkheadIntermediate · 6:19
  3. 3Circuit breakerIntermediate · 5:11
  4. 4Cell-based architectureAdvanced · 7:47

Inside the database

How databases stay durable, scale reads, and share their changes.

0 of 4 watched
  1. 1Write-ahead logIntermediate · 6:28
  2. 2Read replicasBeginner · 7:20
  3. 3Change data captureIntermediate · 7:26
  4. 4Bloom filtersIntermediate · 6:40

Coordinating services

Get several machines to agree, take turns, or commit together.

0 of 4 watched
  1. 1Two-phase commitAdvanced · 6:38
  2. 2Distributed locksAdvanced · 7:04
  3. 3Leader electionAdvanced · 6:52
  4. 4SagaAdvanced · 7:37