امنیت، هویت، استقرار و تاب‌آوری · فصل ۶ — Chaos، Feature Flags، Rollout و ADR · 104

Chaos and Failure Testing

Design and run a fully synthetic, bounded failure experiment that starts from a falsifiable steady-state hypothesis, injects one controlled fault, watches explicit guardrails, stops safely when required, and records whether recovery evidence supports or refutes the resilience claim. می‌تواند برای «Chaos/Failure Testing» run/release model و signals/recovery checks لازم را برای یک سرویس محدود طراحی کند.

Chaos/Failure Testing — fa-IR

Lesson summary

Design and run a fully synthetic, bounded failure experiment that starts from a falsifiable steady-state hypothesis, injects one controlled fault, watches explicit guardrails, stops safely when required, and records whether recovery evidence supports or refutes the resilience claim.

می‌تواند برای «Chaos/Failure Testing» run/release model و signals/recovery checks لازم را برای یک سرویس محدود طراحی کند.

This lesson produces

می‌تواند برای «Chaos/Failure Testing» run/release model و signals/recovery checks لازم را برای یک سرویس محدود طراحی کند.

Who it is for

Foundation

Terminology bridge, guided evidence table and one worked Chaos and Failure Testing case.

Repair

Repair only the OPS-011 misconception exposed by its dedicated negative probe; do not replay another C06 lesson.

Experienced

Experienced learners may compress definitions but must still produce the full Controlled Failure Experiment Record v1 and independent transfer evidence.

Prerequisites

1. Problem and provable outcome

Breaking a system on purpose is not, by itself, a resilience experiment. A defensible experiment starts with a falsifiable hypothesis about steady state, bounds its blast radius, injects one declared fault into one declared target, watches explicit guardrails and stop conditions, and closes with recovery evidence. The owned artifact is Controlled Failure Experiment Record v1.

The lab is fully local and synthetic. It touches no production system, real customer traffic, real credential, live endpoint, or external target.

2. Lesson boundary and prerequisite

OPS-008 is the hard prerequisite. This lesson does not absorb the outcomes of Incident Response/Postmortems or rollout/canary control. The narrow outcome is to design and interpret one bounded failure experiment. A successful run is evidence about this hypothesis, scope, and observation set—not proof that the whole system is resilient.

3. Mental model: baseline to claim

Use this chain:

steady-state baseline → falsifiable hypothesis → bounded target/fault → guardrail monitoring → continue/stop → rollback/recovery check → supported/refuted/open claim → next experiment

Each arrow is an evidence boundary. Without a baseline, the hypothesis is not testable. Without a precise target, blast radius is not defensible. If recovery is reduced to “the process is alive,” service state remains unproven.

4. Steady state and a falsifiable hypothesis

Steady state describes acceptable behavior before the fault; it is not a vague statement that the system is healthy. In this fixture it can combine success rate, latency, and queue depth. A useful hypothesis can be disproved, for example: “If dependency delay rises for 20 seconds, success remains above 98% and queue depth remains below 40.”

“System is resilient” is not measurable enough to test and must be rewritten before execution.

5. Scope, target, and blast radius

Scope identifies the environment and service graph included in the experiment. Target identifies the exact synthetic component receiving the fault. Blast radius is the maximum permitted impact. In this lesson the blast radius is always restricted to the local fixture.

AWS Well-Architected guidance emphasizes clear scope, rollback capability, and stop conditions. We use that principle but do not invent organization-specific thresholds; every number in the exercise is fixture-specific.

6. Do not collapse action, target, and stop condition

AWS FIS models Actions, Targets, and Stop Conditions as separate experiment-template components. The separation matters: the fault action is what changes, the target is where it changes, and the stop condition defines when continuation is no longer acceptable.

The lab uses no AWS resource. It practices only the evidence model on local synthetic data.

7. Guardrails and the stop branch

A guardrail is a signal that must remain under observation during the experiment. A stop condition is a predeclared threshold or state that requires the experiment to stop. It must not be invented after seeing the result to make the run look successful.

When a guardrail is crossed, continuing merely to collect more data is methodologically wrong. Record the abort reason and the rollback/recovery state.

8. Observability and recovery evidence

Recovery is demonstrated by returning to steady state, not by process liveness alone. If the process is running again while latency remains out of bounds or queue depth keeps rising, recovery is UNPROVEN.

If a required signal is missing, the result remains OPEN/INCONCLUSIVE. Missing evidence cannot be replaced by a guess or a green summary badge.

9. Guided example

Baseline: success=99.6%, p95 latency=85ms, queue=12. The hypothesis says a bounded dependency delay will keep success above 98% and queue below 40. The fault targets dependency-B only. Guardrails watch success and queue.

If the run holds success=99.0% and queue=31, and all three signals return to the baseline window after fault removal, the hypothesis is SUPPORTED_BOUNDED for this scope. “The system is resilient” would overclaim.

10. Failure probe: crossing the stop threshold

In another fixture, dependency delay drives queue=57 while the predeclared stop threshold is 45. The correct decision is STOP_REQUIRED. If fault removal lowers queue only to 49, recovery is still not demonstrated.

This probe falsifies a common shortcut: “continue unless the process crashes.” Guardrails and steady state—not process liveness—govern the decision.

11. Control condition, repeatability, and unknowns

A control condition helps attribute the observed change to the injected fault. Preserve a pre-run snapshot, fault duration, target selector, and signal window so the experiment is repeatable. Repeatability does not eliminate every unknown.

Keep unknowns explicit: production interactions, real traffic, dependencies outside the fixture, and missing observability remain outside the claim.

12. Controlled Failure Experiment Record v1

Each row includes at least: Hypothesis, Steady-State Signal, Fault, Target, Blast Radius, Guardrail, Stop Condition, Observation, Recovery Evidence, Supported/Refuted/Open, and Next Experiment.

Keep Direct Evidence, Inference/Decision, and Unknown separate. If a decision requires organization policy that the fixture does not provide, leave it open.

13. Transfer practice

The second service graph changes topology, fault location, steady-state signal, and threshold. Do not copy the first hypothesis. Start from the new graph's observations and rebuild the record. Transfer passes only when the decision is independent of first-case identifiers and numbers.

14. Assessment and acceptance criteria

You must distinguish steady state, hypothesis, blast radius, and stop condition; construct the record before fault injection; reject false recovery based on process liveness; decide continue/stop/rollback/defer from guardrail evidence; and design a new experiment for the changed graph.

Three blocking failures are unsupported operational claims, happy-path-only evidence, and missing independent transfer.

15. Sources, freshness, and claim limits

This lesson uses current AWS Well-Architected, AWS Prescriptive Guidance, and AWS FIS documentation. On 19 September 2026, AWS guidance still describes controlled experiments, hypothesis/stop conditions, starting small, and bounded impact; AWS FIS still separates Actions, Targets, and Stop Conditions, and defines stop conditions through CloudWatch alarms.

Controlled Failure Experiment Record v1 is a MAKNOW instructional artifact, not an AWS-required document. Source review is due 17 October 2026. No result from the local fixture is generalized into a production-survivability claim.

Assessment

There is no answer key in this lesson pack; answer it yourself and mark honestly. "Needs review" sends the lesson to your review queue.

OPS-011-S1 retrieval

Define steady state, hypothesis, blast radius, and stop condition, and distinguish their roles.

lesson ✗AI ✗notes ✗

OPS-011-S2 application

Construct Controlled Failure Experiment Record v1 before running the synthetic fault.

lesson ✗AI ✗notes ✗

OPS-011-S3 diagnosis

Explain why process liveness alone is insufficient recovery evidence.

lesson ✗AI ✗notes ✗

OPS-011-S4 decision

From guardrail observations, choose continue, stop, rollback/verify, or defer.

lesson ✗AI ✗notes ✗

OPS-011-S5 transfer

Design a new bounded experiment for the changed service graph without copying the first hypothesis or threshold.

lesson ✗AI ✗notes ✗
Assessment rubric
  • Experiment design integrity — critical: hypothesis, fault, target, blast radius, guardrail, and stop condition are distinct and traceable.
  • Safety boundary — critical: synthetic scope never expands beyond the declared local fixture.
  • Recovery evidence — critical: recovery is supported by steady-state signals, not process survival alone.
  • Learning transfer — critical: changed-context experiment uses a new hypothesis and preserves bounded claims.

Blocking failure: unsupported operational conclusion, happy-path-only evidence, collapsed scope/stop boundary, or copied transfer conclusion.

References & freshness

REL12-BP04 Test resiliency using chaos engineering
·
Increasing resilience and improving customer experience by using chaos engineering on AWS — Overview
·
Stop conditions for AWS FIS
·
AWS FIS experiment template components
·
Continuous chaos engineering experiment lifecycle
·

Case studies

Lab files

This exercise uses synthetic local evidence only. No production system, credential, customer data, live endpoint, cloud resource, or external target is required.

  1. Run python run_checks.py to verify fixture structure.
  2. Implement analyze_experiment(case) in starter.py.
  3. Return these eight keys: baseline_state, hypothesis_state, scope_state, guardrail_state, stop_state, observability_state, recovery_state, experiment_decision.
  4. Keep baseline, hypothesis, target/scope, guardrail, stop branch, observability, and recovery evidence separate.
  5. Crossing a stop threshold requires a stop decision even if the synthetic process remains alive.
  6. Missing required signals keeps the resilience claim open.
  7. Recovery requires steady-state evidence; liveness alone is insufficient.
  8. Rebuild the transfer case from graph-B evidence; do not copy graph-A thresholds or hypothesis.

The structural checker never reveals expected classifications.

Lesson media & slides

MAKNOW_OPS-011_DECISION_EVIDENCE_TABLE_v1.0.svg
DECISION EVIDENCE TABLE v1.0.svg
MAKNOW_OPS-011_FAILURE_REPAIR_v1.0.svg
FAILURE REPAIR v1.0.svg
MAKNOW_OPS-011_PRIMARY_MODEL_v1.0.svg
PRIMARY MODEL v1.0.svg
MAKNOW_OPS-011_WORKED_EXAMPLE_v1.0.svg
WORKED EXAMPLE v1.0.svg

Teaching files (download)

XLSXControlled Failure Experiment Record v1 v1.0.0.xlsxTeaching files (download)
DOCXControlled Failure Experiment Record v1 WORKSHEET v1.0.0.docxTeaching files (download)
PDFControlled Failure Experiment Record v1 WORKSHEET v1.0.0.pdfTeaching files (download)