PR

障壁(2)
システムの安定稼働が課題に
本番障害起こし耐障害性向上

 マイクロサービスの導入に伴って直面した課題が安定稼働だ。そもそもクラウドはAWSに限らず障害がつきもの。そんなインフラ上で、マイクロサービスに分割したアプリケーションを稼働させる。

 しかもシステムの規模は2017年11月時点で、マイクロサービスが数千、仮想マシンは15万台以上だ。

 そこでNetflixが独自に考えて取り組んだのが、わざと本番障害を起こしてすぐ復旧させることを繰り返し、本当の障害発生に備える、という運用方法「カオスエンジニアリング」である(図5)。

図5 意図的に本番環境に障害を発生させ耐障害性を向上
図5 意図的に本番環境に障害を発生させ耐障害性を向上
[画像のクリックで拡大表示]

 その効果は実証されている。Netflixが全面的に採用しているAWSで、2017年2月に中核施設の一つ、米バージニア北部リージョンで大規模障害が起きたとき、別のリージョンに速やかに切り替えられたという。

 カオスエンジニアリングのベースとなるのは、Netflixが独自に構築したシステム自動復旧の仕組みだ。

 AWSが提供する仮想マシンなどのリソースをコードで制御する技術を用い、本番環境のインフラ障害が発生したときに、仮想マシンなどを再起動させたり障害の起きていない別リージョンに移行させたりする。

 Netflixがカオスエンジニアリングで、あえて本番環境に障害を起こすのはなぜか。それは、自動復旧の仕組みが実際に想定通り動作するかどうかは、本番環境で試さないと分からないからだという。

「サル軍団」が本番障害を起こす

 カオスエンジニアリングでは、意図的に本番環境で障害(サーバーダウンや応答遅延)を起こすことを「カオスエクスペリメント」と呼ぶ。カオスエクスペリメントでは、「障害注入テスト(FIT=Failure Injection Testing)」を日常的に繰り返して、クラウドに障害が起きてもユーザーに影響を与えないというシステムの「弾力性」を検証する。

 Netflixは障害注入テストに使うツールの総称を「Simian Army(サルの軍団)」と呼ぶ(表1)。一部はOSSとして公開済みだ。

表1 Simian Army(サルの軍団)と名付けた独自ツール
表1 Simian Army(サルの軍団)と名付けた独自ツール
[画像のクリックで拡大表示]

 最も有名なツールは、最初に開発した「Chaos Monkey(カオスモンキー)」だ。一種の運用ロボットで、本番環境の仮想マシンをランダムに停止させる。2012年にOSSとして、ソースコード管理サービスのGitHubで公開している。

 カオスモンキーには、もっと破壊力の大きい兄弟がいる。仮想マシン1台ではなく、AWSの一つのAvailability Zone(AZ)にあるNetflixのインフラを一気にダウンさせるのが、「Chaos Gorilla(カオスゴリラ)」だ。

 加えて複数のAZで構成されるリージョン単位で同社のインフラに障害を起こす「Chaos Kong」がある。

 別種のサルもいる。「Latency Monkey(レイテンシーモンキー)」は、システム内部の連携に使うWeb APIで意図的に遅延を発生させる。これにより、深刻な障害が発生しないかどうかを検証する。