„Všechno funguje, dokud to nefunguje.” Chaos Engineering je disciplína, která tuto pravdu bere vážně — a záměrně injektuje selhání do produkčních systémů, aby odhalila slabiny dřív než skutečný incident. V roce 2026 už nejde o exotickou praktiku z Netflixu. Je to standardní součást SRE a platform engineering workflow, s vyspělými nástroji jako Gremlin, Litmus a Chaos Mesh, formalizovanými procesy GameDay a přímou vazbou na observability a SLO Engineering.
Co je Chaos Engineering a proč ho potřebujete¶
Chaos Engineering je experimentální přístup k testování odolnosti distribuovaných systémů. Na rozdíl od tradičního testování, které ověřuje, že systém dělá to, co má, chaos engineering ověřuje, že systém přežije podmínky, které neočekává — výpadek databáze, network partition, saturace CPU, ztráta celé availability zone nebo kaskádové selhání downstream služby.
Koncept formalizoval Netflix v roce 2011 vydáním Chaos Monkey — nástroje, který náhodně vypínal produkční instance EC2. Myšlenka byla jednoduchá: pokud vaše architektura nepřežije ztrátu jedné instance, dozvíte se to raději v úterý v 10:00 než v sobotu ve 3:00 ráno. Od té doby disciplína vyspěla do strukturovaného vědeckého přístupu s jasně definovanými principy.
60%
enterprise organizací praktikuje chaos engineering (Gartner 2025)
3×
rychlejší MTTR u týmů s pravidelnými GameDay cvičeními
45%
méně kritických incidentů po zavedení chaos testů
$2.5M
průměrná cena hodiny výpadku enterprise systému
Principy Chaos Engineeringu¶
Chaos Engineering není „vypneme random server a uvidíme co se stane”. Je to strukturovaný vědecký experiment s jasně definovanými kroky. Dokument Principles of Chaos Engineering (principlesofchaos.org) definuje pět základních principů:
1
Definujte Steady State¶
Než začnete cokoliv rozbíjet, musíte vědět, jak vypadá „normální” chování systému. Steady State Hypothesis je měřitelná definice zdravého systému — typicky vyjádřená pomocí SLI/SLO metrik: latence, error rate, throughput. Bez jasného steady state nemůžete poznat, jestli experiment odhalil problém, nebo je systém prostě pomalý.
2
Formulujte hypotézu¶
Každý chaos experiment začíná hypotézou: „Věříme, že při výpadku Redis cache bude systém nadále sloužit požadavky z databáze s latencí pod 500ms a error rate pod 1 %.” Hypotéza musí být falsifikovatelná — jinak to není experiment, ale demo.
3
Simulujte reálné události¶
Injektujte selhání, která se skutečně stávají: network latency, disk failures, process crashes, DNS resolution failures, certificate expiration. Fantazijní scénáře typu „co když se změní gravitační konstanta” nejsou užitečné. Podívejte se na své postmortem reporty — to jsou vaše chaos scénáře.
4
Omezte blast radius¶
Začněte malým. Blast radius je rozsah dopadu experimentu. Nikdy nespouštějte chaos experiment, který by mohl způsobit nekontrolovaný výpadek. Začněte ve staging, pak canary na 1 % produkčního trafficu, pak na 5 %, pak na celý region. Vždy mějte kill switch.
5
Spouštějte experimenty v produkci¶
Kontroverzní, ale zásadní: staging prostředí nikdy přesně nereplikuje produkci. Traffic patterns, data volumes, race conditions — to vše se projeví jen v reálném prostředí. Samozřejmě s kontrolovaným blast radius a připraveným rollbackem. Ale pokud testujete jen ve staging, testujete staging, ne produkci.
Steady State Hypothesis v praxi¶
Steady State Hypothesis (SSH) je formální definice normálního chování systému, vyjádřená jako sada měřitelných podmínek. Je to základ každého chaos experimentu — ověříte ji před experimentem (baseline), spustíte injekci selhání, a pak znovu ověříte SSH. Pokud SSH stále platí, systém je odolný. Pokud ne, máte nález.
SSH přímo navazuje na SLO definice vašich služeb. Příklad pro e-commerce checkout:
# Steady State Hypothesis: Checkout API
steady_state:
- probe: http_availability
type: probe
provider:
type: http
url: "https://api.example.com/health"
tolerance:
status: 200
- probe: p99_latency
type: probe
provider:
type: prometheus
query: "histogram_quantile(0.99, rate(http_request_duration_seconds_bucket{service='checkout'}[5m]))"
tolerance:
type: range
range: [0, 0.5] # max 500ms
- probe: error_rate
type: probe
provider:
type: prometheus
query: "rate(http_requests_total{service='checkout',code=~'5..'}[5m]) / rate(http_requests_total{service='checkout'}[5m])"
tolerance:
type: range
range: [0, 0.01] # max 1%
Klíčové: SSH musí být automatizovaná. Žádné manuální kontroly „podívej se na dashboard”. Probes se spouštějí programaticky, tolerance se vyhodnocují strojově. To umožňuje integraci chaos experimentů do CI/CD pipeline — experiment se spustí automaticky po deployi, ověří SSH, a pokud steady state nedrží, deployment se rollbackne.
Nástroje pro Chaos Engineering v roce 2026¶
Ekosystém chaos engineering nástrojů dozrál. Tři hlavní hráči pokrývají různé use cases:
Gremlin
Enterprise SaaS platforma. Nejširší knihovna fault injection scénářů, safety controls, týmová kolaborace, compliance reporting.
Litmus
CNCF project pro Kubernetes-native chaos. ChaosHub s 50+ předpřipravenými experimenty, GitOps workflow, open-source.
Chaos Mesh
CNCF project od PingCAP. Kubernetes-native, Chaos Dashboard UI, podpora pro síťové, IO, kernel a JVM fault injection.
Chaos Toolkit
Open-source CLI framework. Platform-agnostic, deklarativní YAML/JSON experimenty, extensible přes drivery pro AWS, Azure, GCP, K8s.
Gremlin — Enterprise chaos platforma¶
Gremlin je nejkompletnější komerční řešení pro chaos engineering. Nabízí širokou paletu attack vektorů: resource attacks (CPU, memory, disk IO), network attacks (latency, packet loss, DNS failure, blackhole), state attacks (process kill, time travel, shutdown). Klíčová výhoda pro enterprise: safety controls — automatické halt conditions, blast radius limits, audit logging a role-based access control. Gremlin se v roce 2026 zaměřuje i na reliability scoring — automatické hodnocení resilience vašich služeb na základě výsledků experimentů.
Litmus — Kubernetes-native chaos¶
Litmus je CNCF inkubovaný projekt navržený primárně pro Kubernetes.
Chaos experimenty se definují jako CRD (Custom Resource Definitions) — ChaosEngine,
ChaosExperiment, ChaosResult. To znamená, že chaos experimenty
žijí vedle vašich Kubernetes manifestů v git repozitáři a procházejí code review.
Kubernetes-native přístup
zajišťuje přirozené napojení na existující tooling.
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: checkout-pod-kill
namespace: production
spec:
appinfo:
appns: production
applabel: "app=checkout-api"
appkind: deployment
chaosServiceAccount: litmus-admin
experiments:
- name: pod-delete
spec:
components:
env:
- name: TOTAL_CHAOS_DURATION
value: "30"
- name: CHAOS_INTERVAL
value: "10"
- name: FORCE
value: "false"
probe:
- name: check-availability
type: httpProbe
httpProbe/inputs:
url: "http://checkout-api.production.svc:8080/health"
method:
get:
criteria: "=="
responseCode: "200"
mode: Continuous
runProperties:
probeTimeout: 5
interval: 2
retry: 1
Chaos Mesh — granulární fault injection¶
Chaos Mesh vyniká v granularitě fault injection. Kromě standardních pod kill a network chaos nabízí JVM chaos (exception injection do Java aplikací), IO chaos (filesystem latency, errno injection), kernel chaos (kernel fault injection přes BPF), a HTTP chaos (injection chyb na úrovni HTTP requestů). Chaos Dashboard poskytuje vizuální přehled běžících experimentů a jejich dopadů v reálném čase.
GameDay — řízené cvičení odolnosti¶
GameDay je strukturované cvičení, kde tým záměrně provokuje selhání systému a procvičuje incident response. Na rozdíl od automatizovaných chaos experimentů, které běží v CI/CD, GameDay je sociální událost — celý tým sedí společně (nebo na video callu), sleduje dashboardy a reaguje na injektované incidenty v reálném čase.
Jak zorganizovat GameDay¶
- Plánování (1–2 týdny předem) — Vyberte cílový systém, definujte scénáře, připravte Steady State Hypothesis, informujte stakeholdery. Určete Game Master (řídí experiment), Red Team (injektuje selhání) a Blue Team (reaguje na incident).
- Briefing (30 min) — Game Master vysvětlí pravidla, cíle, safety controls a kill switch procedury. Blue Team neví, jaké konkrétní selhání přijde — jen ví, že bude testován cílový systém.
- Execution (1–3 hodiny) — Red Team postupně eskaluje selhání. Začněte jednoduchou injekcí (single pod kill), pozorujte reakci, eskalujte (network partition, AZ failure). Blue Team detekuje, diagnostikuje a mitiguje. Vše se nahrává pro retrospektivu.
- Debriefing (1 hodina) — Blameless review. Co fungovalo? Co ne? Kde byly mezery v observability? Jaké runbooky chyběly? Kde selhala automatizace? Výstupem jsou konkrétní action items s ownerem a deadline.
- Follow-up (1–2 týdny) — Implementace action items. Nové alerty, opravené runbooky, vylepšená automatizace, nové chaos experimenty pro regresi nalezených problémů.
Tip: Začněte s GameDay ve staging prostředí. Po 2–3 úspěšných staging GameDays přejděte na produkci s kontrolovaným blast radius. Frekvence: minimálně jednou za kvartál pro kritické služby, měsíčně pro tier-1 systémy.
Blast Radius — kontrola dopadu¶
Blast radius je rozsah systémů a uživatelů potenciálně ovlivněných chaos experimentem. Kontrola blast radius je to, co dělí chaos engineering od sabotáže. Praktické techniky:
- Canary targeting — Injektujte selhání jen do canary instance, která obsluhuje 1–5 % trafficu. Pokud canary selže, zbytek produkce je nedotčen.
- Namespace isolation — V Kubernetes spouštějte experimenty v dedikovaném namespace s resource quotas a network policies.
- Feature flag targeting — Kombinujte chaos experimenty s feature flags. Selhání se projeví jen uživatelům v experimentální skupině.
- Time-boxing — Každý experiment má maximální dobu trvání. Po jejím uplynutí se automaticky ukončí, i když ho nikdo manuálně nezastaví.
- Auto-halt conditions — Definujte automatické zastavení experimentu, pokud SLO metrika klesne pod kritický threshold (např. error rate > 5 %).
# Gremlin attack s blast radius kontrolou
gremlin attack network latency \
--length 300 \
--delay 200 \
--target-tags "service=checkout,canary=true" \
--halt-condition "p99_latency > 1000ms" \
--halt-condition "error_rate > 0.05" \
--percent 10
Jak začít s Chaos Engineeringem — 8týdenní roadmapa¶
Nemusíte hned pouštět Chaos Monkey v produkci. Začněte postupně:
Týden 1–2: Observability assessment¶
Než začnete cokoliv rozbíjet, potřebujete vidět, co se děje. Ověřte, že máte funkční observability stack — metriky, logy, traces. Umíte odpovědět na otázku „jak se má můj systém teď” za méně než 30 sekund? Pokud ne, začněte tady. Chaos engineering bez observability je řízení naslepo. Definujte SLI a SLO pro kritické služby.
Týden 3–4: První experiment ve staging¶
Vyberte nejjednodušší scénář: pod-delete jedné repliky vaší služby.
Definujte Steady State Hypothesis, spusťte experiment, pozorujte. Očekávaný výsledek:
Kubernetes vytvoří nový pod, služba zůstane dostupná. Pokud i to selže,
máte první cenný nález. Zaznamenejte výsledky, napište krátký report.
Týden 5–6: Rozšíření scénářů + CI/CD integrace¶
Přidejte network latency injection, DNS failure, disk pressure. Integrujte chaos experimenty do CI/CD pipeline — spouštějte je automaticky po deployi do staging. Pokud experiment selže (SSH se neverifikuje), deployment se zablokuje. Nastavte dashboard pro výsledky experimentů.
Týden 7–8: První produkční GameDay¶
Zorganizujte první GameDay s kontrolovaným blast radius v produkci. Začněte single pod kill s canary targeting. Postupně eskalujte. Dokumentujte nálezy, vytvořte action items, naplánujte follow-up GameDay za 4–6 týdnů.
Reálné chaos scénáře pro enterprise¶
Scénář 1: Availability Zone failure¶
Simulujte výpadek celé AZ. V AWS to znamená blackhole na všechny IP adresy v jedné AZ. Ověřte, že load balancer přesměruje traffic na zbývající AZ, že databáze provede failover, a že služba zůstane v rámci SLO. Tento test odhalí hidden single points of failure — služby, které tvrdí, že jsou multi-AZ, ale ve skutečnosti mají sticky sessions nebo stateful data v jedné AZ.
Scénář 2: Downstream dependency failure¶
Injektujte 100 % error rate na volání do downstream služby (payment gateway, email provider, third-party API). Ověřte, že circuit breaker se otevře, že fallback logika funguje (graceful degradation), a že systém nezačne kaskádově selhávat kvůli thread pool exhaustion. Toto je nejčastější nález v chaos experimentech — chybějící nebo špatně nakonfigurované circuit breakery.
Scénář 3: Resource exhaustion¶
Injektujte CPU stress, memory pressure nebo disk fill na subset podů. Ověřte, že Kubernetes HPA správně škáluje, že OOM killer zabije správný proces, že alerty se spustí včas a že tým má funkční runbook pro resource exhaustion.
Scénář 4: Certificate a secret expiration¶
Simulujte expiraci TLS certifikátu nebo rotaci database credentials. Tento scénář odhalí služby s hardcoded credentials, chybějící cert-manager konfigurace nebo secret rotation, která vyžaduje restart podu.
Chaos Engineering × SRE × Observability¶
Chaos Engineering není izolovaná disciplína. Funguje nejlépe jako součást širšího SRE a observability ekosystému:
- SLO jako Steady State — Vaše SLO definice jsou přímo vaše Steady State Hypothesis. Chaos experiment ověřuje, že SLO drží i pod stresem.
- Error budget jako governance — Chaos experimenty konzumují error budget. Pokud je error budget nízký, odkládáte agresivnější experimenty. Pokud je zdravý, máte prostor pro riskantnější testy.
- Observability jako feedback loop — OpenTelemetry traces a metriky jsou to, co vám umožňuje vidět dopad chaos experimentu v reálném čase. Bez distributed tracing je diagnostika nalezených problémů nemožná.
- DevSecOps integrace — Chaos experimenty testují i security resilience: co se stane, když WAF dostane spike malicious trafficu? Jak reaguje rate limiter? Funguje graceful degradation při DDoS?
- Postmortem → Chaos experiment — Každý produkční incident by měl generovat nový chaos experiment, který ověří, že oprava funguje a problém se neopakuje. To je nejcennější zdroj scénářů.
Anti-patterns — čeho se vyvarovat¶
- Chaos without observability — Spouštět chaos experimenty bez funkčního monitoringu je jako dělat operaci poslepu. Nejdřív observability, pak chaos.
- Chaos as punishment — Chaos engineering není nástroj k prokázání, že „tenhle tým má špatný kód”. Je to collaborative learning. Blameless culture je prerequisite.
- Big bang approach — Začít rovnou multi-AZ failover testem v produkci je recept na katastrofu. Postupná eskalace je klíčová.
- One-time event — Jednorázový GameDay je PR událost, ne chaos engineering. Hodnota přichází z opakování, automatizace a kontinuálního zlepšování.
- Ignoring human factors — Chaos engineering testuje nejen technologii, ale i procesy a lidi. Fungují runbooky? Ví on-call, koho eskalovat? Jsou kontakty aktuální?
Závěr: Chaos Engineering je investice do spánku¶
Chaos Engineering v roce 2026 je zralá disciplína s vyspělými nástroji, formalizovanými procesy a prokazatelným ROI. Organizace, které pravidelně provádějí chaos experimenty, mají kratší MTTR, méně kritických incidentů a sebevědomější on-call inženýry. Nejde o to, jestli váš systém selže — selže. Jde o to, jestli to zjistíte v kontrolovaném experimentu v úterý dopoledne, nebo v produkčním výpadku v pátek o půlnoci.
Začněte jednoduše: observability → SLO → první chaos experiment ve staging → automatizace → produkční GameDay. Za 8 týdnů budete mít funkční chaos engineering program, který prokazatelně zlepšuje odolnost vašich systémů.