Chaos engineering deneylerini planlama, çalıştırma veya öğrenme aşamalarında kullanın. "Chaos experiment", "fault injection", "gameday", "resilience test", "blast radius", "steady state", "abort criteria", "Chaos Toolkit", "Chaos Mesh", "Litmus", "Gremlin", "AWS FIS" veya herhangi bir deliberate failure-injection sorusunda aktif hale gelir. Experiment designer, blast-radius calculator ve postmortem generator içerir.
cd ~/.claude/skills
git clone https://github.com/alirezarezvani/claude-skills.git claude-skills mkdir -p ~/.claude/skills/chaos-engineering
curl -fsSL https://raw.githubusercontent.com/alirezarezvani/claude-skills/HEAD/.gemini/skills/chaos-engineering/SKILL.md \
-o ~/.claude/skills/chaos-engineering/SKILL.md Üretim sistemlerindeki gerçek zayıflıkları ortaya çıkaran deneyler tasarlayın — bunları kesintiye dönüştürmeden. Çoğu "kaos mühendisliği" girişimi sabit durum ölçümünü atlar, durdurma kriteri tanımlamaz ve patlama yarıçapı sınırı koymaz. Bu beceri, kaos deneylerini güvenli ve yararlı kılan disiplini uygular.
incident-response)red-team, threat-detection)Kaos Mühendisliğinin 4 İlkesi (Netflix, 2016):
Beşinci ekleyin: Durdurma kriterlerini önceden tanımlayın. Durdurma kritereri olmayan kaos deneyimi başka bir adla bir kesintiye eşittir.
SKILL=engineering/chaos-engineering/skills/chaos-engineering
# 1. Deneyim tasarla
python "$SKILL/scripts/experiment_designer.py" --target "checkout-svc" --hypothesis "p99 latency stays <500ms" --attack latency --duration-min 15
# 2. Patlama yarıçapını hesapla
python "$SKILL/scripts/blast_radius_calculator.py" --traffic-share 0.05 --user-pop 1000000 --duration-min 15
# 3. Deneyimden sonra postmortem oluştur
python "$SKILL/scripts/experiment_postmortem.py" --plan experiment.json --result-log results.txt
Hepsi stdlib-only. --help ile çalıştırın.
experiment_designer.pyGirdilerden yapılandırılmış deneyim planı oluşturur. Gerekli bölümleri (hipotez, sabit durum metriği, patlama yarıçapı, durdurma kriterleri, geri alma) uygular.
python scripts/experiment_designer.py \
--target "checkout-svc" \
--hypothesis "p99 latency stays <500ms when payment-svc is slow" \
--attack latency \
--magnitude "+200ms" \
--duration-min 15 \
--blast-radius "5% of US traffic" \
--abort-if "p99 > 1000ms OR error_rate > baseline + 1pp"
Çıktı: hipotez, sabit durum, saldırı, büyüklük, süre, patlama yarıçapı, durdurma kriterleri, geri alma prosedürü, izleme panoları ve öğrenme sorusu içeren markdown plan.
blast_radius_calculator.pyPlanlanan deneyimin patlama yarıçapını hesaplar. Trafik payı + kullanıcı popülasyonu + süre verildiğinde, beklenen etkilenen kullanıcıları, beklenen hata bütçesi tüketimini ve risk puanını hesaplar.
python scripts/blast_radius_calculator.py \
--traffic-share 0.05 \
--user-pop 1000000 \
--duration-min 15 \
--baseline-availability 0.999 \
--expected-impact-availability 0.95
Çıktı:
GREEN = <%1 hata bütçesi; YELLOW = %1-10; RED = >%10.
experiment_postmortem.pyDeneyim planı + sonuçlarından yapılandırılmış postmortem üretir. Yaygın postmortem başarısızlık modlarını yakalar: kaydedilen öğrenme yok, takip eylemi yok, suçlayıcı dil.
python scripts/experiment_postmortem.py --plan experiment.json --result-log results.txt
Çıktı: özet, hipotez (doğrulandı mı/çürütüldü mü?), öğrendiklerimiz, bizi şaşırtanlar, sahibi olan takip eylemleri ve sonraki deneyim bağlantısı içeren markdown.
Farklı saldırılar farklı zayıflıkları ortaya çıkarır. Tam ayrıntı için references/attack_taxonomy.md dosyasına bakın.
| Saldırı | Neyi test eder | Araçlar |
|---|---|---|
| Gecikme | Zaman aşımları, yeniden denemeler, devre kesiciler | tc, Chaos Mesh NetworkChaos |
| Hata | Hata işleme, geri dönüş yolları | Chaos Mesh HTTPChaos, Toxiproxy |
| Kaynak (CPU, hafıza, disk) | Doygunluk işleme, otomatik ölçekleme | Chaos Mesh StressChaos, stress-ng |
| Ağ bölünmesi | Bölünmüş beyin, fikir birliği, yük devretme | Chaos Mesh NetworkChaos partition |
| Bağımlılık hatası | Zarifce degradasyon, geri dönüş | Service mesh fault injection |
| Zaman | Saat eğriltmesi, NTP sorunları | libfaketime, Chaos Mesh TimeChaos |
| Altyapı (örnek öldür) | Otomatik kurtarma, yük devretme | AWS FIS, Chaos Monkey |
Hipoteze uyan saldırıyı seçin. "X yavaşsa ne olur?" → gecikme. "X ağ bağlantısını kaybetse ne olur?" → bölünme.
| Araç | En iyi kullanım | Fiyatlandırma | Stack |
|---|---|---|---|
| Chaos Toolkit | Hafif, dil-agnostik, JSON deneyimleri | OSS | Herhangi biri |
| Chaos Mesh | Kubernetes-native, zengin CRD'ler, içi-küme | OSS | Kubernetes |
| Litmus | Kubernetes, Argo-entegre, geniş kütüphane | OSS + Enterprise | Kubernetes |
| Gremlin | Kurumsal SaaS, multi-bulut, denetim | Ödemeliİ | Herhangi biri |
| AWS FIS | AWS-native, IAM-entegre, EC2/ECS/EKS | Ödemeliİ (AWS) | AWS |
| Özel | Niş ihtiyaçlar, tek-bulut, düşük bütçe | Yok | Herhangi biri |
Karar kuralları:
Ödünleşmeler için references/tooling_landscape.md dosyasına bakın.
1. Hipotez belirtin: "[Hata] olduğunda, sabit durum metriği X, Y içinde kalır."
2. Sabit durum metriğini tanımlayın — deneyimden ÖNCESİ ölçülebilir olmalıdır.
3. blast_radius_calculator.py çalıştırın — devam etmeden önce GREEN olduğunu doğrulayın.
4. Planı üretmek için experiment_designer.py çalıştırın.
5. Planın eş incelemesini alın; durdurma kriterlerinin somut olduğunu doğrulayın.
6. #incidents (veya başka bir kanal) içinde on-call ekibini bilgilendirin.
7. Deneyimi izleme açık olduğu şekilde çalıştırın.
8. Durdurma kriterleri karşılanırsa, hemen durdurun; ne olduğunu kaydedin.
9. Öğrenmeleri yakalamak için experiment_postmortem.py çalıştırın.
10. Takip eylemlerini dosyalayın; sonraki deneyime bağlantı verin.
1. Senaryo seçin (örn., "birincil veritabanı yük devretme").
2. Çalışmaya devam etmesi gereken tüm bağımlı hizmetleri tanımlayın.
3. Her katmanı kapsayan çok deneyimli plan oluşturun.
4. Paydaşlar ile zamanla; on-call kapsamı gerekli.
5. Senaryoyu yöneten bir kolaylaştırıcı ile çalıştırın.
6. Gözlemleri gerçekleştikçe paylaşılan belgede yakalayın.
7. Tüm gözlemleri kapsayan tek birleştirilmiş postmortem.
8. Sahibi olan takip eylemlerini yönetim panosunda izleyin.
1. Başlangıç: haftalık Game Day staging'de.
2. Şuna geç: haftalık Game Day üretimde sınırlı patlama yarıçapı ile.
3. Olgunlaş: zamanlanmış deneyimler aracılığıyla sürekli kaos (Litmus kaos takvimi, Gremlin senaryoları).
4. Dağıtıma bağlayın: her prod dağıtımı temel kaos taraması tetikler.
5. İzle: hafta başına deneyimler, keşfedilen zayıflıklar, MTTR trendi.
Bu beceri, bu kütüphanedeki iki diğer beceri ile açık şekilde bileşim yapır:
| Beceri | Bileşim |
|---|---|
feature-flags-architect |
Orada tanımlanan kill switch'ler buradaki durdurma tetikleyicileridir |
kubernetes-operator |
Operatörler yaygın kaos hedefleridir (hatası altında uyumunu test et) |
incident-response |
Tırmanılan kaos deneyimleri olaylar haline gelir |
references/chaos_principles.md — 4 ilke, tarih, ne zaman başlanacağıreferences/experiment_design.md — hipotez yapısı, sabit durum metrikleri, durdurma kriterlerireferences/attack_taxonomy.md — örnekler ve araçlar içeren 7 saldırı türüreferences/tooling_landscape.md — Chaos Toolkit / Mesh / Litmus / Gremlin / FIS / DIY/chaos-experiment — 3 aracı da çalıştıran etkileşimli deneyim tasarım sihirbazı.
assets/experiment_template.md — doldur-boşluğu planı şablonuassets/postmortem_template.md — yapılandırılmış postmortem şablonuBu beceriyi kullanan bir takım şunu başarmalıdır:
Herhangi bir yaratıcı çalışmaya başlamadan önce bunu mutlaka kullanın - feature oluştururken, component inşa ederken, functionality eklerken veya davranış değiştirirken. Kullanıcı niyetini, gereksinimleri ve tasarımı implementation öncesinde araştırır.
Uygulama tamamlandığında, tüm testler geçtiğinde ve çalışmanızı nasıl entegre edeceğinize karar vermeniz gerektiğinde kullanın - merge, PR veya cleanup seçeneklerini sunarak geliştirme sürecinin tamamlanmasını rehberlik eder.
Kod incelemesi geri bildirimi alırken, önerileri uygulamadan önce kullanın; özellikle geri bildirim belirsiz veya teknik olarak şüpheli görünüyorsa - performatif anlaşmadan veya körü körüne uygulamadan ziyade teknik titizlik ve doğrulama gerekir.
Görevleri tamamlarken, büyük özellikleri hayata geçirirken veya merge etmeden önce çalışmanın gereksinimleri karşıladığını doğrulamak için kullanın.
Yeni bir feature üzerinde çalışmaya başlarken veya implementasyon planını yürütmeden önce kullanın - native araçlar veya git worktree fallback aracılığıyla izole edilmiş bir workspace sağlar.
Herhangi bir konuşma başlatırken kullanın - skill'lerin nasıl bulunacağını ve kullanılacağını belirler, clarification soruları da dahil olmak üzere HERHANGİ bir yanıt vermeden önce skill invocation gerektirir.