カオスエンジニアリング
🔥 Vibe プロンプト
「カオス実験を実行:5レプリカのサービスで2ポッドを強制終了。自動修復とユーザー影響なしを確認。」
原則
1. 定常状態を定義(通常のメトリクス)
2. 仮説を立てる(システムは耐える)
3. 障害を注入(Pod強制終了、ネットワーク遅延)
4. 定常状態と比較
5. 修正して拡大
Chaos Mesh
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
spec:
action: pod-kill
mode: fixed-percent
value: "40"
selector:
namespaces: ["production"]
labelSelectors:
app: api
duration: "60s"
ネットワークカオス
apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
spec:
action: delay
delay:
latency: "500ms"
selector:
namespaces: ["production"]
labelSelectors:
app: api
ゲームデイ
1. スケジュール: ピーク時間を避ける
2. スコープ: ステージングから開始
3. シナリオ:
- 3/10ポッドを強制終了
- DBトラフィックを30秒ブロック
- 外部APIに1秒遅延
4. 結果検証
ベストプラクティス
- 小さく始める(ステージング)
- ロールバック計画を持つ
- 実験を自動化(CronJob)
- 結果を社内共有
- 監視なしではカオスを実行しない!
章のまとめ
- コアコンセプトと原理を理解
- 実装方法とテクニックを習得
- 一般的な問題と解決策に精通
- 実際のプロジェクトに適用可能
さらに読む
- 公式ドキュメントとAPIリファレンス
- GitHubのオープンソース例
- 技術書とオンラインコース
- コミュニティディスカッションと技術ブログ
実装例
基本例
# 完全な実装例を提供します
手順
- セットアップ: 開発環境の設定
- データ: 必要なデータの準備
- 実装: コア機能の構築
- テスト: 動作確認
- 最適化: パフォーマンスの向上
よくあるエラー
| エラー種別 | 原因 | 解決方法 | |-----------|------|---------| | コンパイル | 構文 | コードの構文を確認 | | 実行時 | 環境 | 依存パッケージの確認 | | 論理 | アルゴリズム | ステップごとのデバッグ | | パフォーマンス | 効率 | プロファイラーの使用 |
コード例
import sys
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
参考資料
- 公式ドキュメント
- APIリファレンス
- オープンソース例
- コミュニティディスカッション