Netflix Kills 200 Servers a Day - On Purpose
Every weekday during business hours, Netflix's Chaos Monkey randomly terminates production server instances. Not staging. Not test environments. Production - the same servers streaming video to 238 million subscribers. In 2011, this seemed insane. By 2015, when AWS US-East-1 had a major outage and Netflix stayed up while competitors went down, it seemed brilliant. Chaos engineering is the discipline of proactively injecting failures to discover weaknesses before your customers do.
The Chaos Engineering Process
Chaos Experiment Workflow:
1. Define Steady State
Metric: request success rate = 99.5%
Metric: p99 latency < 200ms
Metric: orders/minute = baseline +/- 10%
2. Hypothesize
'If we kill 1 of 3 API server instances,
the load balancer will route traffic to
surviving instances within 5 seconds.
Steady-state metrics will hold.'
3. Inject Failure (Blast Radius: LIMITED)
- Kill 1 instance in 1 availability zone
- During business hours
- With rollback plan ready
- Team watching dashboards
4. Observe
Did metrics stay within steady-state bounds?
YES -> System is resilient to this failure
NO -> Found a real weakness, fix it
5. Expand Blast Radius (gradually)
Instance -> AZ -> Region -> Multi-serviceNetflix's Simian Army
Netflix Chaos Tools:
Tool What It Does Failure Type
---------------- ---------------------------- ---------------
Chaos Monkey Kill random EC2 instances Server failure
Chaos Gorilla Kill entire availability zone AZ failure
Chaos Kong Kill entire AWS region Region failure
Latency Monkey Inject 500ms-5s delays Network latency
Conformity Monkey Flag non-compliant instances Config drift
Security Monkey Find security vulnerabilities Misconfig
Janitor Monkey Clean up unused resources Resource waste
Modern alternatives:
- Gremlin: managed chaos platform (SaaS)
- Litmus: Kubernetes-native chaos engineering
- AWS Fault Injection Simulator: AWS-managed
- Chaos Mesh: CNCF project for K8sCommon Failure Modes to Test
Chaos experiments should cover the real failure modes that production systems encounter. Instance termination tests if your auto-scaling and load balancing work. Network partition tests if services degrade gracefully when they cannot reach a dependency. Latency injection (adding 500ms to every response from a service) tests if your timeouts and circuit breakers are configured correctly - this often reveals more bugs than outright failures because services hang rather than fail fast. Disk fill tests if your log rotation and monitoring alerts work. DNS failure tests if your services have proper fallback behavior when service discovery is unavailable.
Game Days: The Human Dimension
Automated chaos tests validate the technical systems, but game days validate the human response. A game day is a planned exercise where you inject a realistic failure scenario and the on-call team responds as if it were a real incident. The team must detect the issue through monitoring, diagnose the root cause, decide on a mitigation strategy, and communicate progress to stakeholders. Game days consistently reveal three types of gaps: missing runbooks (the team does not know what to do), alert fatigue (critical alerts are buried in noise), and communication breakdowns (the right people are not notified). Amazon runs weekly game days called Wheel of Misfortune, where a random failure scenario is selected and teams practice incident response.
Building a Chaos Engineering Culture
Chaos engineering only works if your organization supports it. Start with the simplest possible experiment (kill one non-critical instance during low traffic) and share the results - especially when you find real weaknesses. This builds trust. Always have an abort mechanism: every experiment should have a big red button that stops the failure injection instantly if metrics cross dangerous thresholds. Graduate from opt-in experiments to automated, continuous chaos runs as your team's confidence grows. The goal is not to break things - it is to prove your system can handle the failures that will inevitably happen in production.
Interview Tip
Chaos engineering follows a scientific method: define steady-state metrics, hypothesize about failure impact, inject controlled failure, observe results. Start small (one instance) and expand blast radius gradually. The key insight for interviews: chaos engineering is not about finding bugs in code - it's about finding gaps in architecture (missing health checks, no circuit breakers, single points of failure). Game days add the human dimension by simulating full incidents including on-call response.
Key Takeaway
Chaos engineering proves resilience through controlled failure injection. Follow the scientific method: define steady state, hypothesize, inject, observe. Start with small blast radius and expand gradually. Test both technical systems (instance failure, latency, network partitions) and human processes (game days for incident response). The strongest systems are the ones that have already practiced failing.
