カオスエンジニアリングとは?回復力のあるシステムを作る技術

Quynh Pham

Quynh Pham | 28/10/2024

カオスエンジニアリングとは?回復力のあるシステムを作る技術

テクノロジーが飛躍的なスピードで進歩するにつれ、遅れをとることがいかに簡単であるかを忘れてしまいがちかもしれない。一見些細なミスが大きな損害やダウンタイムを引き起こす可能性があり、多くの企業にはそのような余裕はない。そのため、企業はあらゆる最悪のシナリオに備えてシステムを準備する方法を模索してきた。

その方法のひとつがカオスエンジニアリングだ。カオスエンジニアリングという名前は奇妙で、やや矛盾しているように聞こえるが、これはネットフリックス、アマゾン、グーグル、マイクロソフトといった業界の巨人たちによって使われてきた正当なテスト方法である。

カオス工学とは何か?

カオスエンジニアリングとは、コンピュータ分散システムをテストする手法のことで、予期せぬ中断を発生させることで、システムの耐障害性を判断し、潜在的な弱点を突き止める。

このような予期せぬ中断は、ハードウェアを破壊する突然の自然災害、停電、またはサイバー攻撃かもしれない。要するに、カオスエンジニアリングとは、アプリケーションが本番の「カオス」を乗り切るのに十分な強度を持つかどうかを確認するための実践なのである。

カオス工学はテストよりも実験に重点を置いている。カオス工学の実験は、ランダムで予測不可能なシナリオに集中する。カオスエンジニアリングとテストのもうひとつの違いは、テストはしばしば二値的であることで、つまりテストが実行された後、その結果によって何かが真実か否かが決定される。一方、実験は新鮮な洞察を生み出し、新しいデータを明らかにすることが多い。

カオスエンジニアリングの仕組み

カオスエンジニアリングの仕組み

カオスエンジニアリングの目的は、システムに対する新たな洞察を得ることである。意図的にシステムを壊し、弱点を見つけて特定し、システムの改善に取り組むことでそれを実現する。

カオス工学の特殊な分野に分散コンピューティングがある。分散コンピューティングとは、ネットワークを介して共有リソースに接続されたコンピューターの集合体を指す。このシステムは、予期せぬ事態が発生したときに故障する可能性があり、企業に数百ドルから数千ドルの損害を与える。Information Technology Intelligence Consulting Researchによると、1時間のダウンタイムが企業に与えるコストは平均100,000ドルにのぼるという。

予測不可能な依存コンポーネントを持つ大規模で複雑なシステムとなると、この数字はさらに大きくなる。システムの規模が大きくなればなるほど、その挙動はカオスになるので、デバッグは厄介だ。

そのため、隠れたバグやパフォーマンスのボトルネックなど、目に見えない新たな知識を得るために、カオス・エンジニアは根本原因が無限にあるような問題に目を向ける。より明白な原因よりも、可能性の低い原因に対処する。問題やいくつかの問題は、分散システムに対してテストされ、新しい知識を得る。

カオス工学の原理

カオスエンジニアリングはカオス実験以上のものである。この実践では、予期せぬ障害が発生した場合にシステムがどのように振る舞うかをよりよく理解するために、計画的な実験による体系的なアプローチを用いる。カオス工学は、いくつかのセットと原則に従っている。

ベースラインから始める

システムの「定常」状態とは何か?つまり、カオス・エンジニアは正常なシステム出力の尺度を特定しなければならない。これらの尺度とは、システムのスループット、エラー率、レイテンシ・パーセンタイルなどである。

仮説を立てる

対照群でも実験群でも定常状態が継続すると仮定する。例えば、あるサービスが利用できないときにも定常状態が継続すると仮定する。

テスト

次のステップは、負荷テストと組み合わせて不確実性のシミュレーションを設定することです。次に、テスターは、アプリケーションの以下の4つの柱のうち、1つ以上の柱で発生する変化に目を光らせる必要がある:コンピュート、ネットワーキング、ストレージ、アプリケーションインフラです。テストによって、重要なプロセスに何か問題があることや、意外な因果関係が明らかになるかもしれない。

仮説に対する反論の試み

システムの定常状態に基づいて仮説を立てたので、対照群と実験群の間に違いがあれば、作成した仮説は無効になる。それ以降、エンジニアはシステムの不具合を切り分けて研究し、その知識を使って修正や変更を加える。実験後、システムはより安定し、弾力的になる。

カオス工学のベストプラクティス

カオス工学のベストプラクティス

カオス工学の原理を理解してもなお、カオス工学は複雑である。したがって、カオス工学の実験を行う際には、以下のカオス工学のプラクティスに従って実験を成功させるようにしてください。

  • 本番環境で実験を行う:実験は本番環境で行うべきである。ユーザがいる場所であり、トラフィック・スパイクが現実に発生する場所であるため、そう考えるのは怖いかもしれない。しかし、本番環境でテストを実行することは、システムの回復力について最も正確な答えを得るための、圧倒的に信頼性の高い方法である。
  • 小さな爆発半径を維持する:爆発半径とは、実験によってもたらされる危害や影響のことである。しかし、実験によってプロダクション全体が崩壊するようなことがあってはならない。無秩序な実験には多数のチームによる調整が必要なため、実験は小規模で意図的なものにとどめるべきである。もし実験がシステムに悪影響を及ぼしたとしても、システムを稼働させ続けるためのバックアッププランを用意しておくこと。
  • システムをよく理解する:事故が起きたときに正確な主張をするためには、まずシステムをよく理解する必要がある。
  • 予測される失敗の頻度/影響をカバーする:ソフトウェアのテストカバレッジを完全に100%にすることは不可能である。そのため、何百時間もかけて可能性のある実験をひとつひとつ調べるのではなく、最も失敗する可能性の高いものをテスト可能にすることで、カバレッジは機能する。この文脈でのカバレッジとは、ストレージ障害のような重大な影響をもたらす事象や、分散システムにおけるネットワーク障害のような定期的に発生する事象を調べることを意味する。

カオスエンジニアリングの利点

カオスエンジニアリングの利点

アプリケーションの限界に挑戦すると、いくつかの利点がある。

システムの回復力を高める

実施された実験により、チームや組織は、システムが特定のストレス下でどのように機能するかをよりよく理解することができる。その結果、企業はシステムを強化するための対策を講じる。

増収

ダウンタイムを最小限に抑えるということは、コストのかかる停電や予期せぬ問題で企業が損失を被ることがないということです。また、システムの安定性を損なうことなく、ビジネスの規模を拡大するスペースが企業に与えられることを意味します。

顧客満足度の向上

顧客はシームレスなオンライン体験に慣れています。そのため、アプリケーションのパフォーマンスが良く、レスポンスが速く、顧客の要求に常に応えていれば、顧客はポジティブな体験を残すことができます。

より良いコラボレーションを促進

経験から得られた洞察は、エンジニア間だけでなく、企業内のチーム間でも共有される。カオスエンジニアリングは、誰もが恩恵を受けるため、実験中にチームが効果的に協力し、望ましい結果を達成するよう動機づける。

障害回復の強化

同じような停電が発生した場合、カオス・テストによって、さまざまな停電シナリオ下でのシステムの能力と動作を包括的に理解できるため、組織は復旧を早めることができる。

カオス工学への挑戦

カオスエンジニアリングを導入しようとする人は、その課題も認識しておく必要がある。

最初の課題は、限られたリソースである。先に述べたように、カオス・エンジニアリングを実現するためには、複数のチーム、さらには部門が協力する必要がある。しかし、これは企業によっては問題となりうる。

次に、強力な監視システムの欠如である。カオス・エンジニアリングの最中は、システムの健全性と指標を注意深く監視し、制御下に置く必要がある。爆発半径は簡単に手に負えなくなり、システム全体がダウンする原因となる。また、可視性がないため、問題の根本原因を突き止めることも難しい。

最後に、テスト実行前のシステムの初期状態が明確でないことが挙げられます。システムの安定した状態について明確な理解がなければ、チームはテストが現実にもたらす結果を完全に把握することが難しくなる可能性がある。それゆえ、カオステストの有効性は著しく低下し、他のシステムを危険にさらすことさえある。

カオス工学ツール

カオス・エンジニアリングのプロセスをより効率的にするために、いつでもツールを採用することができる。オープンソースのツールも有償のソリューションもある。選択する前に、ビジネス要件と目標をすでにリストアップしていることを確認してください。

カオス・モンキー

Netflixが2010年に作成した最初のカオスエンジニアリングツールは、Chaos Monkeyと呼ばれている。これは、AWSシステムをテストするために作られたオープンソースのアプリケーションである。現在、Netflixに加え、多くの企業がChaos Monkeyを使っている。詳細なドキュメントがあり、これは良い出発点だ。

シミアン・アーミー

シミアン・アーミーは、クラウドベースの障害発生、異常状態検出、回復力テスト・サービス(「モンキー」と呼ばれる)の集合体である。レイテンシー・モンキー、ジャニター・モンキー、ドクター・モンキー、セキュリティ・モンキーなど、多くのカオス・エンジニアリング・ツールで構成されています。

グレムリン・プラットフォーム

グレムリン・サービスの助けを借りて、カオス・エンジニアリングの実験ができる。あなたには採用すべき攻撃がいくつも与えられる。それらはシステムに入力され、さまざまな計画、プロット、シナリオに変換される。そして、これらの攻撃の効果や害を記録することができる。

カオスエンジニアリングを始めよう

カオス・エンジニアリングは、ますます複雑化するワールド・ワイド・ウェブにおいて価値ある実践となっている。私たちは今や、数多くの複雑なシステムにますます依存するようになっている。サイバーセキュリティもまた、近年深刻な問題となっている。カオス工学を適切かつ健全に管理することで、エンジニアはストレス下でシステムがどのように反応するかをよりよく理解し、より強固で回復力のあるシステムを構築することができる。堅牢なシステムは、デジタル黄金時代において不可欠なものとなっている。

Orient Softwareの経験豊富な専任のQAおよびテストチームで、システムの健全性をできるだけ早く監視し、改善しましょう。システムの安定性を真剣に考慮する時です。弊社にご連絡いただき、この分野で最高の専門家の助けを得てください。

Content Map

関連トピック

マネージドサービスの概要

マネージドサービスの概要

マネージドサービスは、社内リソースでは得られない多くのメリットを企業にもたらします。その一端を紹介しよう。

Trung Tran | 29/11/2023

Hidden

お気軽にお問合せください!


連絡