# ChAP(Chaos Automation Platform)
Netflix が開発した、故障注入シナリオを本番環境で自動実行するプラットフォーム。デプロイパイプラインへユーザ指定のサービスを問い合わせ、そのシステムの実験クラスタとコントロールクラスタを起動して、それぞれに少量のトラフィックをルーティングする。指定された故障注入シナリオが実験クラスタに適用され、結果が作成者に報告される。共通の Java ライブラリを通じて「特定の呼び出しは失敗する」というメタデータをリクエストに付与し、サービス間をリクエストが伝わる過程でこのメタデータを利用してトラフィックを実験(カナリア)クラスタとコントロール(ベースライン)クラスタへ振り分ける。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 9 先見性を生み出す]] §9.3)
出典論文: Ali Basiri et al., "Automating Chaos Experiments in Production," International Conference on Software Engineering (ICSE), 2019, https://arxiv.org/abs/1905.04648.(Source: 同章 §9.3 訳注†5)
## wiki 内の言及
- [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 9 先見性を生み出す]]: 著者(Casey Rosenthal)が2017年にNetflixで携わったツール。ChAP の Runs ページで実行者を分析した結果、実際にツールを使い続けていたのは作成者であるカオスエンジニア4人にとどまり、他チームへの展開には多大な人的サポートが必要だったことが判明した。実験を自動生成するアルゴリズム開発のため組織横断で約30人にインタビューし、安全に実験を実行するための判断材料(タイムアウト・リトライ・フォールバックの有無・通常時トラフィック割合)を特定した。最終的には自動化そのものより、副産物として生まれたダッシュボードによる可視化がチームのメンタルモデル更新に最大の価値をもたらしたと総括される。図9-1は API サービスから Bookmarks サービスへ故障を注入する ChAP の実験構成(上流トラフィック 98% はそのまま、残り 2% がベースライン/カナリアの2クラスタへ1%ずつ振り分けられる)を示す。
- [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 3 原則の全体像]]: 原則5「影響範囲を局所化する」の具体的な工学的実装として言及され、シャドートラフィック・高額トランザクションの除外・失敗リクエストの自動リトライといった技法により、局所化に加えてシグナル検出を強化する副次効果を持つと説明される。
- [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 13 カオスエンジニアリングの費用対効果]]: ChAP の費用対効果(ROI)の実証手法を扱う客観的事例として言及される。Netflix では可用性向上のための取り組みが複数同時並行していたため、可用性向上の記録だけでは ChAP 固有の寄与を切り分けられなかった。そこで反証された仮説を SPS(1秒あたりの映像ストリーミング開始件数)というビジネス KPI への影響として記録し、実際のインシデントが SPS に及ぼす影響の確率分布(例: SPSが20%下がるインシデントは平均15分継続)に当てはめることで、脆弱性が本番環境で顕在化した場合に想定される影響を「救えたSPS」として推定・積算した。この指標は時間経過とともに右肩上がりで伸び、ChAP が継続的に価値をもたらしていることを示したが、Kirkpatrick モデル(教育・トレーニングの効果測定に用いる4段階モデル)の水準ではレベル2(学習)の実証に留まり、エンジニアの行動変化(レベル3)や可用性向上との相関確立(レベル4)には至っていないと章自身が評価する。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 13 カオスエンジニアリングの費用対効果]] §13.3)
- [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]]: 継続的ベリフィケーション(CV)の実世界における最良の実例として詳述される。ChAP 導入の一部として開発された Monocle が、Netflix のサービスから収集した依存関係情報(RPC クライアント・Hystrix コマンドのタイムアウト・リトライ動作)をもとに実験対象マイクロサービスの優先順位づけと安全性判定を行う。Netflix の CD ツール Spinnaker と連携し、選ばれたマイクロサービスに対して制御グループ・可変グループの2インスタンスを追加で立ち上げ、本番トラフィックの一部を振り分ける。可変グループには下流依存先へのレイテンシ注入などの加工処理が行われ、KPI(SPS)が両グループで同水準に維持される限り実験は継続(通常45分、最低20分)し、KPI が外れれば実験は直ちに停止されリクエストのルーティングも打ち切られる。ChAP は継続的に業務時間中稼働し仮説が反証されるたびに新たなナレッジを生成する点、Monocle による自動優先順位づけの点、多少の変更で CI/CD パイプラインの1段階として構成できCI/CD/CVの深い統合を実現できる点が、CVツールとしての重要な特性として整理される。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.3–§16.3.4)