Markdown Editor

Chaos Experiment Plan Template

Chaos engineering experiment: steady state, hypothesis, faults, blast radius, abort conditions, runbook, results, actions

운영표준Principles of Chaos Engineeringchaosexperiment

사용법: Use it for each fault-injection experiment, in staging or production. Write the steady-state metrics, hypothesis and abort conditions first and get them approved before the run. The main pitfall is starting with a large blast radius or changing the hypothesis after seeing the results.

미리보기

Chaos Experiment Plan: [Experiment name]

Plan and record for a single chaos engineering experiment: the steady state you expect, the hypothesis, the faults you inject, how you limit the blast radius and when you stop, then what you observed and what you will change. Based on the experiment process described in the Principles of Chaos Engineering (principlesofchaos.org, last updated March 2019). Replace every [bracketed] value and every row marked Example.

FieldValue
Experiment ID[CE-SERVICE-012]
Title[Kill one ledger writer instance during peak load]
System / service[Service name], [version]
Experiment owner[@owner]
Approver[@service-owner or SRE lead]
Planned date and windowYYYY-MM-DD, [14:00-15:00 UTC]
Environment[Staging / Production canary / Production]
Status[Draft / Approved / Run / Analysed / Closed]
Related[FMEA FM-003], [Runbook], [Dashboards], [Previous run CE-SERVICE-011]

1. Purpose and background

This experiment tests whether [system] continues to deliver [function] when [fault]. It is motivated by [reason].

Example: Incident INC-2291 showed that duplicate ledger writes can occur when a writer crashes between commit and acknowledgement. Action ACT-01 in the payment FMEA added idempotency keys. This experiment checks that the fix holds under realistic load and that the duplicate-write alert fires if it does not.

2. Steady state and metrics

The steady state is defined by the following metrics, measured over the last [14] days at comparable load.

Metric IDMetricSourceNormal rangeTolerance during experiment
SS-01Example: Successful authorisations per second[Metrics query link]950 to 1,150 at peakNo drop greater than 5% versus control
SS-02Example: Authorisation p99 latency[Query]280 to 340 msBelow 400 ms
SS-03Example: Duplicate ledger entriesReconciliation job00
SS-04Example: Ledger lag[Query]Under 2 sUnder 5 s
[SS-NN][Metric][Source][Range][Tolerance]

3. Hypothesis

Hypothesis: When [fault] occurs in [scope], the steady-state metrics SS-01 to SS-04 for the experimental group will stay within tolerance and will not differ from the control group by more than [5%].

Example: When one of the six ledger writer pods is terminated every 5 minutes for 30 minutes during peak load, successful authorisations, latency and ledger lag stay within tolerance, and no duplicate ledger entries are created.

GroupDefinitionSize
ControlExample: Partitions 0-29 handled by unaffected writers50% of traffic
ExperimentalExample: Partitions 30-59 handled by writers targeted for termination50% of traffic

4. Variables and faults injected

Fault IDFault typeTargetMagnitudeDuration / frequencyTool / method
F-01Example: Process terminationOne ledger writer pod in experimental groupSIGKILLEvery 5 min for 30 min[Chaos tool] pod-kill action
F-02Example: Network latencyCalls to fraud provider+800 ms on 20% of calls15 min[Chaos tool] network delay
F-03Example: Dependency unavailableMessage broker node 2Node stopped10 minPlatform runbook step
[F-NN][Type][Target][Magnitude][Duration][Tool]

Faults are introduced one at a time unless the hypothesis is about a combination. Each fault has a tested way to stop it immediately (see 5.3).

5. Blast radius and safety

5.1 Blast radius

DimensionLimit
Users or traffic affectedExample: At most 50% of authorisations for partitions 30-59
Regions / zonesExample: [Region A] only
Customers excludedExample: Merchants on the high-value list
Data at riskExample: None expected; ledger is reconciled after the run
Maximum durationExample: 30 minutes of fault injection plus 15 minutes observation

5.2 Abort conditions

Stop the experiment immediately and roll back when any of the following is true for more than [1 minute]:

  • SS-01 drops more than [10%] below control.
  • SS-02 exceeds [600 ms].
  • SS-03 shows any duplicate entry.
  • Any unrelated incident of severity [SEV-2] or higher is declared.
  • The experiment owner or the on-call engineer asks to stop for any reason.

5.3 Rollback

StepActionExpected time
1Example: Halt the chaos tool run with [command or button]Under 10 s
2Example: Confirm terminated pods are rescheduled and readyUnder 2 min
3Example: Remove network fault rules and verify with probeUnder 1 min
4Example: Announce stop in [channel] and record timeImmediate

6. Environment and prerequisites

PrerequisiteStatusChecked by
Example: Dashboards for SS-01 to SS-04 split by control and experimental group[Ready][@name]
Example: On-call engineer informed and available[Ready][@name]
Example: No change freeze or major event in the window[Ready][@name]
Example: Rollback tested in staging on YYYY-MM-DD[Ready][@name]
Example: Customer support informed (production only)[Ready][@name]
[Prerequisite][Status][@name]

7. Runbook

Time (T+)StepWhoCheck
T-30 minExample: Go/no-go check of prerequisites; announce start in [channel]OwnerAll prerequisites ready
T-10 minExample: Record baseline values for SS-01 to SS-04ObserverWithin normal range
T+0Example: Start fault F-01OperatorTool shows run active
T+0 to T+30Example: Watch abort conditions every minuteObserverNo abort condition met
T+30Example: Stop fault injectionOperatorTool shows run complete
T+30 to T+45Example: Observe recovery; run reconciliation jobOwnerMetrics back to baseline
T+45Example: Announce end in [channel]OwnerMessage posted

8. Observations

Time (UTC)ObservationMetric valuesRecorded by
Example: 14:05First writer pod killed; replacement ready after 38 sSS-04 peaked at 3.1 s[@name]
Example: 14:10Second kill; broker redelivered 214 messagesSS-03 = 0[@name]
Example: 14:22Alert "ledger lag high" did not fire although lag reached 4.6 sThreshold set at 10 s[@name]
[HH:MM][Observation][Values][@name]

9. Results

Outcome: [Hypothesis held / Hypothesis disproved / Inconclusive]

MetricControlExperimentalWithin tolerance
SS-01Example: 1,042/s1,031/sYes
SS-02Example: 310 ms352 msYes
SS-03Example: 00Yes
SS-04Example: 1.2 s4.6 s peakYes, but close to limit

Example: The hypothesis held. The idempotency fix prevented duplicates under 214 redeliveries. However, ledger lag approached the tolerance and the lag alert threshold is too high to warn operators in time.

10. Follow-up actions

Action IDActionOwnerDueTicketStatus
CE-12-A1Example: Lower ledger lag alert threshold from 10 s to 4 s[@sre]YYYY-MM-DD[OPS-412]Open
CE-12-A2Example: Reduce writer start-up time by preloading partition map[@dev]YYYY-MM-DD[PAY-901]Open
CE-12-A3Example: Automate this experiment weekly in staging[@sre]YYYY-MM-DD[OPS-413]Open
CE-12-A4Example: Update FMEA FM-003 detection score with this evidence[@owner]YYYY-MM-DD[Link]Open

Next run: [Repeat in production canary / Increase to two pods / Automate / Close].

Standard and licence note

Based on the experiment process and advanced principles published in the Principles of Chaos Engineering (https://principlesofchaos.org/): defining steady state, forming a hypothesis, introducing real-world variables, looking for a difference between control and experimental groups, and minimising the blast radius. No licence is stated for that page, so this template uses only its general concepts and credits the source; all text here is original. Template licence: MIT.

관련 템플릿