PR

障壁(3)
意図的な障害で想定外の影響
安全性を高めるツールを開発

 こうしたSimian Armyによる耐障害性テストを本番環境で繰り返してきたNetflixだが、最近は安全性を高めるべく手法を改善している。

 きっかけはレイテンシーモンキーで起きた問題だ。Netflixでシニアカオスエンジニアという役職のノラ・ジョーンズ氏は、「レイテンシーモンキーの使用中に、本来意図していない機能で悪影響が発生し、システム全体に重大な問題を起こした」と打ち明ける。

 耐障害性を高めるテストによって本当に本番環境の障害を起こすようでは、本末転倒だ。

 問題解決のため、Netflixが新たに開発したのが「ChAP(チャップ=カオス・オートメーション・プラットフォーム)」というツール(次ページの図6)。ChAPを使うと、障害を起こすタイミングを自動的にコントロールできる。

図6 カオスエンジニアリングの安全性を高める自動化ツールを開発
図6 カオスエンジニアリングの安全性を高める自動化ツールを開発
[画像のクリックで拡大表示]

 ジョーンズ氏は「(本番環境に)重大な悪影響が及んでもITエンジニアがすぐに対応できる勤務時間内や、システムが健全な状態であるときなどの条件が満たされているときに絞って、意図的に障害を起こせる」と話す。

 意図的に障害を起こす際、ユーザーへの影響度を制御する機能もある。ジョーンズ氏によると、「ChAPは障害注入テストによるユーザーへの悪影響が最小限になるように、テスト対象のトラフィック量を自動計算する」。

 例えばAというサービスからBというサービスに流れているトラフィックを100%として、ChAPがテスト対象のトラフィック量を2%と算出したとする。

 その場合、テスト用に監視対象とする本番環境を二つ切り出し、トラフィックを1ポイントずつ流す。

 切り出した二つの本番環境のうち意図的に障害を起こすのは一つだけで、もう一つは比較用だ。

 そのうえで、もしユーザーに過度の悪影響が出そうな場合は、「早期にテストの実行時間を短くする」(ジョーンズ氏)などの対処をして、深刻な事態を回避する。

 「カオスエンジニアリングというリスクの高いテストは、ネット専業のNetflixだからできること」と思ったとしたら、それは間違いだ。

 ジョーンズ氏は「当社のようなネット動画配信企業に限らず、大規模な金融機関や製造業、ヘルスケア業界などでも適用されている」と語る。金融機関のようにシステム障害の影響が大きい企業ほど、重要度は増す。

 前出の元Netflixで現AWSのコッククロフト氏も、カオスエンジニアリングの必要性をこう語る。「多くの企業がオフィス火災の避難訓練を実施しているが、(カオスエンジニアリングのような)ITの避難訓練をしている企業は少ない」。

 コッククロフト氏が重要だと強調するのは、システム障害対応を日常的に行うことである。「DR(Disaster Recovery)の仕組みを整えたとしても、日常的に有効性を試していなければ、いざ本当に障害が起きたときにツールが動作しないといった事態に陥りがちだ」(同氏)。

 適切な指揮や連絡といった組織面での対応も、日々訓練しておくべきだろう。