Running Chaos Engineering Game Days

DevOpsInfrastructureChaos EngineeringSRE
Share on LinkedIn

You don't know if your circuit breaker works until something trips it. You don't know if your fallback cache works until the primary database is unreachable. Waiting for production to teach these lessons at 3 AM is expensive. Chaos engineering game days inject controlled failures in daylight, with the team watching dashboards, to find weaknesses before customers do.

Game day structure

Plan (1 week before) → Brief (day of) → Execute → Observe → Debrief → Action items

Duration: 2–4 hours. Not a full day — attention fades.

Participants: On-call engineers, service owners for affected systems, optional observer from leadership.

Writing hypotheses

Every experiment starts with a hypothesis:

## Experiment: Redis primary failure

**Hypothesis:** When Redis primary becomes unavailable, the app falls back
to read-only mode from Redis replica within 30 seconds and serves
cached data with < 5% error rate.

**Blast radius:** staging environment, 10% of traffic via feature flag
**Abort condition:** error rate > 10% for 2 minutes
**Rollback:** restore Redis primary via kubectl, max 5 minutes
**Metrics to watch:** error rate, p95 latency, cache hit ratio, fallback activation

No hypothesis = no learning. "Let's break Redis and see what happens" produces chaos, not engineering.

Experiment examples by maturity

Level 1 (staging):

Level 2 (staging, multi-service):

Level 3 (production, limited):

Tools

Tool What it does
Chaos Mesh K8s-native fault injection (pod kill, network, IO)
Litmus K8s chaos experiments with workflows
AWS FIS EC2, RDS, network fault injection
Toxiproxy TCP proxy for latency/timeout/reset
Gremlin Multi-platform fault injection SaaS

Chaos Mesh example:

apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
  name: kill-api-pod
spec:
  action: pod-kill
  mode: one
  selector:
    namespaces: [staging]
    labelSelectors:
      app: api-server
  duration: "30s"

Blast radius controls

Non-negotiable safety rails:

  1. Environment: staging first, prod only with approval
  2. Traffic percentage: feature flag or service mesh limits affected requests
  3. Time box: experiment auto-reverts after duration
  4. Abort button: one person has authority to stop immediately
  5. Business hours: never during peak traffic or freeze periods
  6. Monitoring: dashboards open before injection starts

During the game day

Facilitator role: Runs the experiment, calls abort if needed, keeps time.
Observer role: Watches dashboards, notes timestamps of anomalies.
Service owner: Validates service-specific behavior.

Timeline:

Don't fix things during the experiment — note them for debrief. Fixing mid-game corrupts the learning.

Debrief template

## Game Day: [date]

### Hypothesis result
Confirmed / Partially confirmed / Refuted

### What happened
[Timeline of events with metric screenshots]

### Surprises
[Things we didn't expect]

### Action items
| Item | Owner | Due |
|------|-------|-----|
| Add circuit breaker to payment client | @alex | Feb 15 |
| Fix alert threshold on Redis failover | @sam | Feb 10 |

### Follow-up experiments
[What to test next game day]

Action items are the product. Game days without follow-up are performance art.

Building a program

I've seen teams discover missing timeouts, silent fallback failures, and alerting gaps that would have caused hour-long outages — found in 30 minutes on a Tuesday afternoon.

Schedule the next game day before closing action items from the last one — momentum dies when experiments wait for quarterly planning cycles.

Steady-state vs game day experiments

Not all chaos needs a calendar invite:

Type Frequency Scope Tooling
Steady-state Continuous Kill random pod, verify recovery Chaos Mesh, Litmus
Game day Quarterly Multi-service failure scenarios Manual + runbooks
Drill Monthly Single dependency failure Fault injection API

Steady-state catches regressions between game days — a new deploy without circuit breaker surfaces in CI chaos tests, not six months later.

Blast radius controls

Never run uncontrolled experiments in production without guardrails:

# Chaos Mesh experiment scope
spec:
  selector:
    namespaces: [staging]
  mode: one
  action: pod-failure
  duration: "30s"

Production game days need: executive approval, comms plan, rollback owner on-call, abort criteria ("error rate > 5% for 2 min → stop"), and customer impact assessment.

Measuring game day ROI

Track outcomes, not activity:

Pair with postmortems blameless culture when game day experiments surface production weaknesses.

Common production mistakes

Teams get engineering game days wrong in predictable ways:

Production implementations of engineering game days fail when staging mirrors production topology poorly, rollback is untested, and on-call runbooks describe the happy path only.

Resources

Frequently asked questions

What is a chaos engineering game day?

A game day is a scheduled exercise where the team injects controlled failures into staging or production — killing pods, adding latency, blocking dependencies — to test whether the system handles them gracefully. The goal is learning, not breaking things. Every experiment has a hypothesis, blast radius limit, and rollback plan.

Should chaos experiments run in production?

Mature teams run limited experiments in production during low-traffic windows with strict blast radius controls. Start in staging until you've validated monitoring, rollback, and team response. Production game days require leadership approval, on-call awareness, and automatic abort conditions.

How is a game day different from disaster recovery testing?

DR testing validates backup restoration and failover to a secondary region — a planned, all-hands event. Game days inject small, specific failures to test detection and graceful degradation — 'what if Redis is slow?' not 'what if the region is gone.' Both are valuable; game days happen more frequently.

Hiring a senior Android / Flutter engineer?

I architect and ship production mobile software — Kotlin, Jetpack Compose, Flutter — for robotics, EV infrastructure, fintech, and real-time systems. Open to remote roles in Europe and the US.

Get in touch →