Designing for failure
summary
Compares airplane redundancy to microservices and shows concrete techniques and libraries: set client timeouts using Go 1.13’s HTTP NewRequestWithContext, add server read/write/idle timeouts, and use circuit breakers and retries via Heimdall (Hystrix pattern) with exponential backoff. Implements isolation with goroutine/thread pools and the outbox pattern (Postgres + AMQP/Kafka) to avoid lost events. Recommends service mesh (e.g. Istio) to offload retries/outlier detection and exports metrics/traces to Prometheus/OpenCensus/OpenTracing (and upcoming OpenTelemetry).
AI-written summary · about
chapters (12)
- 0:00Introduction
- 3:57Resilience is a requirement
- 5:43Timeouts
- 8:15Circuit Breakers
- 11:46Retry
- 13:21Load Balancing
- 14:55Go Isolation
- 17:20Health Checks
- 20:28SelfHealing
- 24:43Traffic Control
- 26:52Service Mesh
- 31:30Observability
related talks
42mDesigning for failure
31mDesigning for failure
55mGoing Resilient
53mResiliency and Availability Design Patterns for the Cloud
43mFault tolerance – look, it’s possible!
29mThe art of being resilient. How to handle failures gracefully in Distributed Systems.
57mResilience by Design
36mDesigning for failure - architecting fault-tolerant system
