chaos-engineering-resilience について
制御されたカオス実験を計画し、システムのレジリエンスを評価するスキルです。測定可能な仮説、障害注入の範囲設定、影響分析、手順書の作成を支援します。
主な機能
- 01定常状態の指標を定義
- 02ネットワークやインフラ障害を注入
- 03影響範囲とロールバックを管理
- 04調査結果を手順書に記録
活用シーン
- 01分散システムの検証
- 02災害復旧手順のテスト
- 03リリース前の耐障害性確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill chaos-engineering-resilienceインストール後、Claude Code で/chaos-engineering-resilienceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/chaos-engineering-resilience.yamlschemas/output.jsonscripts/validate-config.json詳細
カオスエンジニアリングとレジリエンステスト
<default_to_action> システムのレジリエンスをテストしたり、障害を注入したりする場合は、次の手順に従います。
- 定常状態を定義します(通常時の指標:エラー率、レイテンシ、スループット)
- 障害発生中もシステムが定常状態を維持すると仮定します
- 現実に起こり得る障害を注入します(ネットワーク、インスタンス、ディスク、CPU)
- 定常状態からの逸脱を観察し、測定します
- 発見した弱点を修正し、ランブックを文書化して、繰り返します
カオステストの手順:
- 小さく始めます:開発 → ステージング → 本番の 1% → 段階的な展開
- 明確なロールバックのトリガーを定義します(error_rate > 5%)
- 影響範囲を測定し、計画した範囲を決して超えないようにします
- 発見事項を文書化 → ランブックを作成 → レジリエンスを向上
成功に不可欠な要素:
- 自動ロールバックを備えた、制御された実験
- 定常状態を測定可能にする
- 非本番環境から始め、本番環境へ段階的に進める </default_to_action>
クイックリファレンスカード
使用する場面
- 分散システムの検証
- 災害復旧テスト
- フォールトトレランスへの信頼の構築
- 本番前のレジリエンス検証
注入する障害の種類
| カテゴリ | 障害 | ツール |
|---|---|---|
| ネットワーク | レイテンシ、パケットロス、分断 | tc, toxiproxy |
| インフラストラクチャ | インスタンスの強制終了、ディスク障害、CPU | Chaos Monkey |
| アプリケーション | 例外、応答の遅延、リーク | Gremlin, LitmusChaos |
| 依存関係 | サービス停止、タイムアウト | WireMock |
影響範囲の段階的な拡大
Dev (safe) → Staging → 1% prod → 10% → 50% → 100%
↓ ↓ ↓ ↓
Learn Validate Careful Full confidence
定常状態の指標
| 指標 | 通常値 | アラートしきい値 |
|---|---|---|
| エラー率 | < 0.1% | > 1% |
| p99 レイテンシ | < 200ms | > 500ms |
| スループット | ベースライン | -20% |
カオス実験の構成
// Chaos experiment definition
const experiment = {
name: 'Database latency injection',
hypothesis: 'System handles 500ms DB latency gracefully',
steadyState: {
errorRate: '< 0.1%',
p99Latency: '< 300ms'
},
method: {
type: 'network-latency',
target: 'database',
delay: '500ms',
duration: '5m'
},
rollback: {
automatic: true,
trigger: 'errorRate > 5%'
}
};
エージェント主導のカオス
// qe-chaos-engineer runs controlled experiments
await Task("Chaos Experiment", {
target: 'payment-service',
failure: 'terminate-random-instance',
blastRadius: '10%',
duration: '5m',
steadyStateHypothesis: {
metric: 'success-rate',
threshold: 0.99
},
autoRollback: true
}, "qe-chaos-engineer");
// Validates:
// - System recovers automatically
// - Error rate stays within threshold
// - No data loss
// - Alerts triggered appropriately
エージェント連携のヒント
メモリの名前空間
aqe/chaos-engineering/
├── experiments/* - Experiment definitions & results
├── steady-states/* - Baseline measurements
├── runbooks/* - Generated recovery procedures
└── blast-radius/* - Impact analysis
フリートの連携
const chaosFleet = await FleetManager.coordinate({
strategy: 'chaos-engineering',
agents: [
'qe-chaos-engineer', // Experiment execution
'qe-performance-tester', // Baseline metrics
'qe-production-intelligence' // Production monitoring
],
topology: 'sequential'
});
関連スキル
- シフトライトテスト - 本番環境でのテスト
- パフォーマンステスト - 負荷テスト
- テスト環境管理 - 環境の安定性
お忘れなく
計画外の停止を防ぐために、意図的に障害を起こしましょう。 ユーザーより先に弱点を見つけます。定常状態を定義し、障害を注入して影響を測定し、弱点を修正して、ランブックを作成します。小さく始め、影響範囲を段階的に広げます。
エージェントを使用する場合: qe-chaos-engineer は、影響範囲の制御、自動ロールバック、包括的なレジリエンス検証を備えたカオス実験を自動化します。実験結果からランブックを生成します。
コメント
Markdown 対応