自社システムを攻撃するカオスエンジニアリングとは?運用方法、便利ツールなど紹介
2023.03.09
カオスエンジニアリングとは、本番環境で正常に稼働している自社システムに故意に障害を発生させ、自動で復旧するシステムの動作を確認させたりする検証実験や方法論です。
本記事では、カオスエンジニアリングの概念や用いられるツール・サービス、実際に導入した企業の実例などをご紹介します。
はじめに
カオスエンジニアリングという言葉を聞いたことはありますでしょうか。カオスエンジニアリングとは本番環境が障害等に耐久するようシステム能力に自信を持つために、故意にその検証実験をする学問及び方法論を指します。
大手企業が導入したことで、一躍注目を浴びているこのカオスエンジニアリングですが、現在では、「Well-Architected Framework(※1)」にも記載されるほど設計において欠かせないものとなりつつあります。
本記事ではその手法やツールなどに触れていきます。
※1 AWSやMicrosoftが提供するクラウドの設計におけるベストプラクティスをまとめたもの
Netflixが火付け役。注目されるカオスエンジニアリングの手法とは
このカオスエンジニアリングはサブスクリプション型の動画配信サービスを提供するNetflix社が起用したことで有名となりました。
実際にどの様な手法で行われるかについて本項目で触れていきたいと思います。
カオスエクスペリメント
一般的な手法は、正常稼働している本番環境に故意に障害を発生させ、自動で復旧するシステムの動作を確認させることが挙げられます。
この手法のことを「カオスエクスペリメント」と呼称されます。
カオスエクスペリメントは、カオスエンジニアリングの根本的な手法となりますが、どの様に障害を引き起こすかといった手法は多岐に渡ります。
先述したNetflix社では週に1000回以上自社のネットワークを攻撃する「Chaos Monkey」というツールを開発し、自動復旧システムの動作確認をしています。
これにより、小さな障害から大きな障害まで原因を追求し、同様の障害を引き起こさないよう実際の障害に備えることができます。
カオスエンジニアリングを利用することで環境の不確実性さを洗い出すことが可能となり、顧客への障害の影響を最小限に抑えることが期待されます。
次項では実際に現在使われている、カオスエンジニアリングツールをいくつか紹介いたします。
カオスエンジニアリングにて用いられるツール・サービス
カオスエクスペリメントでは、自社のネットワークを攻撃するためのさまざまなツールが用いられています。Netflix社が独自で開発したChaos Monkeyをはじめ、現在では多種多様なツールが各サービスより提供されています。
また、現在のツールはKubernetes環境を前提としており、その可用性も変わりつつあります。
本章ではその中からいくつかのツールとサービスを紹介します。
Chaos Monkey(カオスモンキー)- Netflix社
Chaos MonkeyはNetflix社が開発したオープンソースの一つです。特徴としては故意サーバーをランダムにオフライン状態へするといったオーソドックスな仕組みとなっております。
このツールがカオスエンジニアリングの前進とも言え、様々な企業での取り組みへの火付け役となりました。
Gremrin(グレムリン)- Gremlins, Inc.
GremlinはGremlins, Inc.が提供するカオスエンジニアリングサービスの一つです。
AWS、Microsoft Azure、Google Cloud Platformなどのメジャーなクラウドの他にKubernetesなどのコンテナ基盤を活用したシステム環境に対してさまざまな障害を疑似的に発生させることができるサブスクリプションサービスです。
マネージドサービスとしては、ほとんどの企業が候補に挙げるであろうサービスだと思います
AWS Fault Injection Simulator – Amazon Web Services, Inc.
AWS Fault Injection Simulator(以降、FIS)は大手クラウドサービスのAWSが提供するマネージドサービスの一つです。
FISの特徴はセットアップが簡単なことが挙げられます。
AWSのサービス上で実行でき、AWSが提供するカオスエンジニアリングのベストプラクティスのパラメータもサポートしています。別途、エージェントのインストールが不要な点も使いやすいと思います。また、サンプルも用意されていることから初めてでも使いやすいツールなのが特徴的です。
参考:AWS Fault Injection Simulator公式サイト
Chaos Mesh – PingCAP社
カオス状態を引き起こすモジュールをアプリケーションPodのサブコンテナに配置することが可能なツールです。
上記で紹介したサービスやツールはほんの一部となりますが、他にも開発されているものがあるため、特徴を理解した上で要件にあったツールを採用する必要があります。
導入の実例
前章ではNetflix社の実例を紹介いたしました。カオスエンジニアリングをクラウドの設計の一部として取り込むことは海外企業では一般的となって来ています。大手ではGoogleやAmazon、IBMでもこの手法を活用し、障害に備えていると発表しています。
日本企業ではまだまだカオスエンジニアリングを導入できている企業は少ないですが、クックパッド社では実際にこれを導入することに成功していると発表しています。
参考:カオスエンジニアリングを導入したクックパッドの挑戦 マイクロサービス化に伴う可用性の低下に対応
導入事例が少ないといっても、実際にカオスエンジニアリングを活用する中小企業が増えているのは事実です。導入する上で、テストの技法だけでなく、Netflix社の論文「Chaos Engineering paper」などの資料を参考にすることも重要視されております。
おわりに
いかがでしたでしょうか。当記事では現在注目されつつあるカオスエンジニアリングに焦点を当てて、簡単に紹介しました。
まだまだ、日本では注目されてはいるものの実際に導入している事例が少なく、カオスエンジニアリングの黎明期と言えるかもしれません。
ですが、今後クラウドの運用をする上で、一般化される可能性が高いと考えています。ぜひこの機会に、カオスエンジニアリングを通して、自社のクラウドシステムの設計を見直してみてはいかがでしょうか。