カオスエンジニアリング企業 Gremlin は、アプリケーションを簡単に破壊できる「現実世界の障害のテンプレート」であるシナリオを発表しました。
Gremlinは、サンフランシスコで開催されたChaos Conf 2019でこの製品を発表しました。シナリオには、高負荷時に何が起こるかをテストするためのトラフィックスパイク、マイクロサービスAPI呼び出しの応答に時間がかかるようになった場合の信頼性の低いネットワーク、クラウドリージョンが利用できなくなった場合のリージョン退避などが含まれます。
カオスエンジニアリングの考え方は、アプリケーションやシステムの回復力を調べるために、意図的に障害を発生させることです。カオスエンジニアリングツールは、CPUを100%消費させたり、ホストの一部をシャットダウンさせたり、DNS呼び出しを応答不能にしたり、ネットワークに深刻な遅延を発生させたりすることで、フェイルオーバーシステムなどの計画された回復力が実際に設計通りに機能するかどうかを検証できます。これは、テストリストアを実行してバックアップを検証するのと同じです。
Gremlin ユーザー インターフェースの障害の種類
ロンドンで開催されたQconカンファレンスで、グレムリンのシニアサイト信頼性エンジニア(SRE)であるタミー・バトウ氏に話を聞いた。「この歴史はNetflixがAWSに移行した時に始まりました」と彼女は語った。「彼らは、どうすればAWSが確実に機能するかを考えました。そこでまずChaos Monkeyを開発し、後にオープンソース化しました。これは、サーバーをシャットダウンしても問題ないかどうかを確認するためのツールでした。このツールは、AWSへのフィードバックを提供するのに役立ちました。」
Chaos Monkey は無料ですが、導入が複雑になる場合があります。
「ダウンタイムを防ぎ、データ損失を防ごうと努力しています」とブトウ氏は付け加えた。「私がナショナル・オーストラリア銀行に勤めていた頃は、災害復旧テストを行っていました。銀行免許を取得するには、こうしたテストを受ける必要があります。しかし、テクノロジー系スタートアップ企業では、システムの堅牢性や顧客データの保護が適切であることを証明し、責任を問う人は誰もいません。」
Gremlinによって注入される障害は、一時停止したり削除したりできるという点を除けば、シミュレートされているわけではない。「間違ったやり方をすると危険な場合があります」とButow氏は述べた。
重要なのは、小さく始めることです。テストの「爆発半径」によって、その影響範囲が決まります。「私はまずCPU攻撃をするのが好きで、これはカオスエンジニアリングのHello Worldです」とブトウ氏は言います。
まずは1台か2台のサーバーを停止することから始め、徐々にサービス全体、あるいはリージョン全体の停止へと拡張できます。GremlinのようなサービスはAPIとコントロールプレーンを提供しているので、テストの自動化とスケジュール設定が可能です。
セキュリティの世界と同様に、多くの障害は、人々がサービスを予期せぬ方法で使用することで発生します。よくある例の1つがAPIです。「APIを構築する人は、誰かがAPIを悪用するとは考えていません」とButow氏は言います。「SREとして、私は常に何が問題を引き起こすのかを探しています。」
大規模な障害に耐えられるかどうか確認するまでは、システムの復元力があるとは言えないというのは常識ですが、バックアップの場合と同様に、多くの組織は結局、苦労して学ぶことになります。®