# 継続的ベリフィケーション (Continuous Verification, CV)
## 定義
継続的ベリフィケーション(CV)は、「ソフトウェアにおけるプロアクティブな実験を行うための規律で、システムの振る舞いを検証するツールとして実装される」(Casey Rosenthal による定義)。複雑なシステムが提起する課題が、継続的インテグレーション(CI)を継続的デリバリ(CD)へ、さらに CV へと導いた「自然な進化」の延長線上に位置づけられる、頭角を現し始めた分野である。CV は CI/CD を含む従来のプラクティス(アラート・テスト・コードレビュー・モニタリング・SRE の実践)を無効化するものではなく、それらの上に構築され、複雑なシステム独特の問題に対処することを狙う。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.1)
CV と従来のプラクティスは5軸で対照づけられる: プロアクティブ対リアクティブ、実験対テスト、ツール対方法論、ベリフィケーション対バリデーション、システムの振る舞い対既知の特性。組織にはシステム内部が意図どおりに動いているかを検証する時間やリソースが足りないため、代わりにシステムの出力が期待に沿ったものになっているかを検証するのが CV の狙いであり、これは複雑なシステムの管理成功を示すバリデーションよりも、出力を実証するベリフィケーションに重きを置くことを意味する。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.1)
CV に属するツールは、実験による経験的な検証を提供するもの(ChAP のような自動化されたカオスエンジニアリングプラットフォーム)と、人間の解釈を支援する定性的な検証を提供するもの(Vizceral のような直感エンジニアリングのツール)という両極に大別され、両者の中間領域の探究が業界で進んでいる。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.2)
## 横断的知見
- **『ウェブオペレーション』17章(2011)の「フェイルオーバーの定期テスト」は、CV/カオスエンジニアリングが定式化される以前の、同じ問題意識を持つ実務的先駆けである**: 16章(Rosenthal, 2022)は CV を「システムの振る舞いを検証するプロアクティブな規律」として定義し、CI/CD の自然な延長線上に位置づける。これに先立つ17章([[Mike Christian]]、[[Yahoo!]]、2011年)は、「BCP は単なる計画であり、実際に実行に移さなければならない」「フェイルオーバーは緊急時以外にも定期的にテストしなければ、実際に必要になったときに機能するかわからない」と述べ、1つのデータセンタのトラフィックを遮断してアップグレード・QA テストを行い戻すという手順を、他のデータセンタでも繰り返す運用を提案する。これは CV が強調する「プロアクティブ対リアクティブ」「実験対テスト」という軸のうち、少なくとも「プロアクティブに定期実行する」という要素を、正式な CV/カオスエンジニアリングの語彙(ChAP のような自動化プラットフォーム)が確立する10年以上前に、手動運用の慣行として先取りしている。ただし17章の提案はあくまで人手による定期実施の推奨にとどまり、16章が言う「システムの出力が期待に沿うかを継続的に検証するツール」としての自動化は伴わない——CV の「規律」の面は先取りしているが、「ツール」の面はまだ存在しない時代の記述である。(Source: [[@2011__OReillyJapan__ウェブオペレーション - Chapter 17 夜中に聞こえる奇妙な物音(と、ぐっすり眠る方法)]] §17.7, [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.1)
- **17章は「フェイルオーバーのテスト」を保守作業のリスク回避の手段としても位置づけており、CV が扱う「本番システムの振る舞いの検証」より広い動機を持つ**: 16章は CV を主に障害注入・実験による検証という文脈で論じるが、17章はフェイルオーバーの仕組みを、ルータ交換や UPS テストのような日常的な保守作業自体をユーザに影響させずに行う手段としても使うと述べる。これは CV の適用範囲を「障害への備え」から「日常の保守作業の安全な実施手段」へと広げる、実務側からの補完的な視点である。(Source: [[@2011__OReillyJapan__ウェブオペレーション - Chapter 17 夜中に聞こえる奇妙な物音(と、ぐっすり眠る方法)]] §17.7)
## 未解決の問い
- CV の分野に属するツールは「まだ未成熟」と16章自身が述べる一方、カオスエンジニアリングには既に洗練された自動化プラットフォーム(ChAP)がある。CV がカオスエンジニアリングを包含するより広い規律だとすれば、この成熟度の非対称(下位カテゴリの方が上位カテゴリより成熟している)はなぜ生じたのか、他章・他ソースでの CV の発展から確認する必要がある。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.2)
- ChAP(経験的・実験による検証)と Vizceral(定性的・人間の解釈を支援する検証)という CV の両極の「中間に属する領域」を16章は名指ししない。この中間領域を埋める具体的なツールやプラクティスは何か。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.2)
- 16章は CV の将来的なユースケースとしてパフォーマンステスト・データの成果物・正確性の3カテゴリを挙げるが、いずれも「有望な方向性」の域を出ず、具体的な CV パイプラインへの統合方法(ChAP を CI/CD の1段階として構成する場合の実装詳細など)は示されない。この統合はどのように実現されるべきか。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.3.4, §16.4)
- CV は [[プロアクティブ検証]](GPU クラスタのハードウェア検証等で使われる語)と語感・問題意識が重なるが、16章は両者の関係を明示しない。CV は「事後対応でなく事前検証を行う」という設計原則のソフトウェア版であり、プロアクティブ検証はそのハードウェア版という位置づけで統合できるか、それとも別概念として並置すべきか。(Source: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] §16.1, [[プロアクティブ検証]])
## 関連
- 概念: [[カオスエンジニアリング]] / [[プロアクティブ検証]] / [[オブザーバビリティ]] / [[カナリアテスト]] / [[事業継続計画(BCP)]]
- 実体: [[ChAP]] / [[Vizceral]] / [[Netflix]] / [[Casey Rosenthal]] / [[Mike Christian]] / [[Yahoo!]]
- ソース: [[@2022__OReillyJapan__カオスエンジニアリング - Chapter 16 継続的ベリフィケーション]] / [[@2011__OReillyJapan__ウェブオペレーション - Chapter 17 夜中に聞こえる奇妙な物音(と、ぐっすり眠る方法)]]
## 出典
- Casey Rosenthal, 「継続的ベリフィケーション」, Casey Rosenthal・Nora Jones 編『カオスエンジニアリング ― 回復力のあるシステムの実践』, オライリー・ジャパン, 2022, 16章.
- マイク・クリスチャン, 「夜中に聞こえる奇妙な物音(と、ぐっすり眠る方法)」, John Allspaw・Jesse Robbins 編, 角 征典 訳, 『ウェブオペレーション ―サイト運用管理の実践テクニック』, オライリー・ジャパン, 2011, 17章(§17.7: フェイルオーバーの定期テスト).