障害に耐えるクラウド サービスを構築することの重要性は、日曜日に Amazon Web Services (AWS) が大きな障害に見舞われたときに実証されました。
AWS プラットフォーム上の 20 以上のサービスに障害が発生し、インターネットの最大のサイトやアプリの一部が断続的に利用できなくなった。
障害の影響を受けた AWS のサービスは、バージニア州北部のデータセンター (同社では US-EAST-1 リージョンと呼んでいる) から実行されています。
AWSは多くの大手企業にオンライン業務のサポートとして利用されています。その結果、Netflix、Tinder、Airbnb、IMDbのユーザーは、Amazonのクラウドサービスが影響を受けた6~8時間の間、コンテンツにアクセスできない問題を報告しました。また、クラウドベースの音声認識システム「Alexa」を搭載したAmazonのスマートスピーカー「Echo」などのAmazon製品にも影響が出ました。
問題は日曜日の午前3時(太平洋夏時間)に初めて現れたようで、AWS の NoSQL データベース DynamoDB でエラー率の増加がユーザーに見られ始めた。
しかしその後、AWS Elastic Compute Cloud (EC2)、仮想デスクトップサービスのAWS WorkSpaces、AWSイベント駆動型コンピューティングサービスのAWS Lambdaなどの主要なサービスを含む約22の他のAWSサービスでも、エラーと遅延の増加に関する問題が発生し始めました。
数時間以内にAWSはDynamoDBの問題の「根本原因」を特定し、「テーブルとパーティション情報を管理する内部サブサービスの障害」であると特定しました。
午前9時過ぎ(太平洋夏時間)にはAWSはDynamoDBの問題を解決し、正常に動作していると報告しました。この時点でほとんどのサービスは正常に稼働していましたが、AWS Auto Scalingなど一部のサービスは午前11時30分近くまで影響を受けていました。
Netflixは混乱にどう対処したか
広報担当者によると、AWSの顧客のうち、障害による「重大な影響」を回避できたのは、動画ストリーミングサイトのNetflixだった。
このオンラインメディア大手は、世界中の5000万世帯以上に映画やテレビ番組をストリーミングするためにアマゾンウェブサービスを利用しており、広報担当者によれば、サービスを「迅速に」完全に復旧させることができたという。
サービス中断を乗り切るために役立ったのは、同社が「カオスエンジニアリング」と呼ぶ実践だった。
Netflixは、このエンジニアリングアプローチの一環として、システムに意図的に大混乱をもたらそうとするソフトウェア「Simian Army」を導入しています。Simian ArmyはNetflixのインフラを様々な側面から攻撃します。Chaos Monkeyは本番環境のインスタンスをランダムに無効化し、Latency Monkeyはクライアントとサーバー間の通信に遅延を引き起こし、そしてChaos GorillaはAmazonのアベイラビリティゾーン全体の機能停止をシミュレートします。
同社は、自社のシステムに絶えず障害を誘発することで、日曜日に AWS に影響を与えたような問題に対して自らを強化することができる。
この場合、Netflix は影響を受けた AWS リージョンから影響を受けていないエリアのデータセンターにトラフィックを迅速にリダイレクトすることができました。
Netflix がこれを実現できたのは、マルチリージョンのアクティブ-アクティブ レプリケーションと呼ばれる手法を実践しているからです。この手法では、サービスに必要なすべてのデータが異なる AWS リージョン間で複製され、障害からの迅速な回復が可能になります。
「地域のインフラが完全に停止する可能性は極めて低いが、当社の変化のペースによっては、地域内の重要なサービスが中断されることがあり、Netflixをあらゆる基盤の依存関係に対して耐性を持たせたいと考えていた」とNetflixは、この取り組みを概説したブログ投稿で述べた。
ネットフリックスの元高性能技術コンピューティング担当チーフアーキテクト、エイドリアン・コッククロフト氏はツイッターで、アクティブ・アクティブ・レプリケーションはコストを「約25パーセント」増加させると述べ、このアプローチを「保険」と表現した。
「追加コストのほとんどは、両側で常に 100% スケールのストレージ層の複製によるものです」と彼は付け加えました。
NetflixはオープンソースのNoSQL分散データベースであるApache Cassandraを使用しています。コッククロフト氏によると、サービスの可用性を維持するためには、「すべての地域」で「数千」のCassandraノードを維持する必要があるとのことです。