カオスエンジニアリングは、システムが生産時の不安定な状況に耐える能力に自信をつけるために、システムを実験する分野です。[1]
コンセプト
ソフトウェア開発では、特定のソフトウェアが障害に耐えながらも十分なサービス品質を確保する能力(レジリエンスと呼ばれることが多い) が、通常、要件として指定されます。ただし、開発チームは、短い納期やドメイン知識の不足などの要因により、この要件を満たせない場合があります。カオス エンジニアリングには、レジリエンス要件を満たすことを目的とした手法が含まれます。
カオス エンジニアリングは、インフラストラクチャ障害、ネットワーク障害、アプリケーション障害に対する回復力を実現するために使用できます。
カオスエンジニアリングを使用した運用準備
実稼働環境に導入される相互接続された複雑なシステムに対する信頼性を計算するには、運用準備の指標が必要です。運用準備は、カオス エンジニアリング シミュレーションを使用して評価できます。プラットフォームの回復力と運用準備を向上させるソリューションには、バックアップ、復元、ネットワーク ファイル転送、フェイルオーバー機能、環境全体のセキュリティの強化などがあります。
Kubernetes環境で混乱を引き起こすための評価では、ビッグデータネットワークで分析を処理している間に、データセンターのエッジデバイスからデータを受信しているポッドをランダムに終了しました。ポッドの回復時間は、応答時間を推定する回復力の指標でした。[2] [3]
歴史
1983年 – アップル
MacWriteとMacPaintが最初のApple Macintoshコンピュータ向けに開発されていた頃、スティーブ・キャップスは「Monkey」というデスクアクセサリを作成した。これは、猿が必死にキーボードを叩いたり、マウスを動かしたりクリックしたりする様子をシミュレートし、ユーザーインターフェイスイベントを高速でランダムに生成する。自動テストが不可能だったため、プログラマーが修正できるようにエラーを生成し、デバッグにすぐに利用された。最初の Macintosh には、より高度なものを作るための空きメモリ領域が少なすぎたためである。[4]
1992 – プロローグ ABAL2 と SING が PROLOGUE オペレーティング システムの最初のグラフィカル バージョン用に開発されていたとき、Iain James Marshall は「La Matraque」を作成しました。これは、有効なグラフィカル インターフェイス イベントと無効なグラフィカル インターフェイスイベントの両方のランダム シーケンスを高速でランダムに生成し、基盤となるグラフィックス ライブラリのクリティカルエッジ動作をテストするデスク アクセサリです。このプログラムは、製品出荷前に何日もかけて起動され、必要なレベルの総合的な回復力を確保しました。このツールはその後拡張され、ABAL 言語のデータベースおよびその他のファイル アクセス命令が組み込まれ、その後の回復力のチェックと確保が行われました。このツールのバリエーションは現在、OPENABAL として知られる最新バージョンの認定に使用されています。
2003年 – アマゾン
ジェシー・ロビンズはアマゾンでウェブサイトの信頼性向上に取り組んでいた際、「ゲームデー」[5]を考案した。これは、意図的に大きな障害を定期的に発生させることで信頼性を高める取り組みである。ロビンズによると、この取り組みは消防士の訓練や、複雑系や信頼性工学などの他の分野の研究からヒントを得たものであるという。[6]
2006 – グーグル
グーグル在籍中、クリパ・クリシュナンはアマゾンのゲームデー(上記参照)に似た「DiRT」というプログラムを作成しました。[6] [7] [8]グーグルの サイト信頼性エンジニア[9]であるジェイソン・カフーン氏は、 「カオスエンジニアリング」の本[11]にGoogle DiRT [10]に関する章を寄稿し、GOTOpia 2021カンファレンスでそのシステムについて説明しました。[12]
2011 – ネットフリックス
2011年にNetflixのクラウドへの移行を監督していたNora Jones、Casey Rosenthal、Greg Orzell [11] [13] [14]は、Netflixで協力しながら、Netflixの顧客が使用する環境である本番環境で障害を引き起こすツールを設定することで、規律を拡張しました。その目的は、障害がないことを想定した開発モデルから、障害は避けられないと考えられるモデルに移行し、開発者が組み込みの回復力をオプションではなく義務と考えるように促すことでした。
「Netflix では、自由と責任の文化があるため、エンジニアに特定の方法でコードを設計するように強制することはありません。その代わりに、サーバーの中立化によって生じる問題を分離し、極限まで追い込むことで、インフラストラクチャの回復力という概念を中心にチームをまとめることができることを発見しました。私たちは、サーバーをランダムに選択し、通常の稼働時間中にサーバーを無効にするプログラム、Chaos Monkey を作成しました。これはおかしいと思う人もいるでしょうが、イベントのランダムな発生に頼って、そのイベントの結果に直面した私たちの行動をテストすることはできませんでした。これが頻繁に発生することを知っていたため、何百万人もの Netflix ユーザーに影響を与えることなく、そのようなインシデントを乗り切るために冗長性とプロセス自動化を構築するためのエンジニア間の強い連携が生まれました。Chaos Monkey は、サービスの品質を向上させるための最も効果的なツールの 1 つです。」[15]
ソフトウェア サービスのインスタンスを定期的にランダムに「強制終了」することで、冗長アーキテクチャをテストし、サーバー障害が顧客に顕著な影響を与えないことを検証できるようになりました。
カオスエンジニアリングの概念は、 2012年にマーティン・ファウラーによって初めて導入されたフェニックスサーバーの概念に近い。[16]
カオスエンジニアリングツール
カオスモンキー
カオスモンキーは、2011年にNetflixがITインフラの回復力をテストするために開発したツールです。 [13]このツールは、Netflixの生産ネットワーク内のコンピューターを意図的に無効にして、残りのシステムが停止にどのように反応するかをテストします。カオスモンキーは現在、さまざまなシステム障害やエッジケースへの対応をシミュレートしてテストするために設計された、Simian Armyと呼ばれる大規模なツールスイートの一部です。
Chaos Monkeyのコードは2012年にNetflixによってApache 2.0ライセンスの下でリリースされました。[17] [18]
「カオスモンキー」という名前は、アントニオ・ガルシア・マルティネスの著書『カオスモンキーズ』の中で説明されている。 [19]
猿が「データ センター」、つまりオンライン アクティビティの重要な機能をすべてホストするサーバーの「農場」に入るところを想像してください。猿はケーブルを無作為に引きちぎり、デバイスを破壊し、手近に渡ったものをすべて返します (つまり、排泄物を投げつけます)。IT 管理者の課題は、責任を負っている情報システムを、これらの猿がいつやって来て何を破壊するか誰にもわからないにもかかわらず機能するように設計することです。
猿軍
シミアンアーミー[18]は、 NetflixがAmazon Web Servicesインフラストラクチャの信頼性、セキュリティ、または回復力をテストするために開発したツールスイートであり、次のツールが含まれています。[20]
- シミアン軍の階層の最上位では、カオスコングがAWSの「リージョン」全体を落とします。[21]まれではありますが、リージョン全体の喪失は起こり得ます。カオスコングは、この種のイベントに対するシステムの応答と回復をシミュレートします。
- Chaos GorillaはAmazonの「アベイラビリティゾーン」(地理的な地域にサービスを提供する1つまたは複数のデータセンター全体)を完全に削除します。[22]
他の
Voyages-sncf.comの2017年の「カオスの日」[23]は 、2017年のDevOps REXカンファレンスで発表するために、プリプロダクションの障害をシミュレーションするゲーム化[24]でした。 [25] 2019年に設立されたSteadybitは、プリプロダクションのカオスと信頼性エンジニアリングを普及させました。[26]オープンソースのReliability HubはSteadybitを拡張します。[27] [28]
Proofdockは、 Microsoft Azure DevOpsにインフラストラクチャ、プラットフォーム、アプリケーションの障害を注入することができます。[26] Gremlinは「failure-as-a-service」プラットフォームです。[29] FacebookのProject Stormは、自然災害に対する耐性のためにデータセンターの障害をシミュレートします。[30]
参照
- データの冗長性
- エラー検出と修正
- フェイルファストシステム
- フェイルファスト(ビジネス)は、ビジネス管理の関連テーマです。
- 後退と前進
- フォールト注入
- フォールトトレランス
- フォールトトレラントコンピュータシステム
- グリース(ネットワーキング)
- レジリエンス(ネットワーク)
- 堅牢性(コンピュータサイエンス)
注釈と参考文献
- ^ 「カオスエンジニアリングの原則」。principlesofchaos.org 。2017年10月21日閲覧。
- ^ Siwach, Gautam (2022年11月29日). ビッグデータにおけるKubernetesアーキテクチャ上のカオスエンジニアリングシミュレーションを使用した運用準備状況の評価(pdf) . 2022 International Conference on Smart Applications, Communications and Networking (SmartNets). ボツワナ. pp. 1–7 . 2023年1月3日閲覧。
- ^ 「機械学習ポッドキャストのホスト兼テクノロジーインフルエンサー:Gautam Siwach」。LA Weekly。2022年10月7日。
- ^ Hertzfeld, Andy. 「Monkey Lives」.フォークロア. 2023年9月11日閲覧。
- ^ 「 Game day」。AWS Well-Architected Framework 用語集。Amazon。2020年 12 月 31 日。2024 年2 月 25 日に閲覧。
- ^ ab Limoncelli, Tom (2012年9月13日). 「レジリエンスエンジニアリング:失敗を受け入れることを学ぶ」ACM Queue . 10 (9) – ACM経由。
- ^ Krishnan, Kripa (2012年9月16日). 「Weathering the Unexpected」. ACM Queue . 10 (9): 30–37. doi :10.1145/2367376.2371516 – ACM経由。
- ^ Krishnan, Kripa (2015年11月8日~13日). 10 Years of Crashing Google (html) . 2015 Usenix LISA. ワシントンDC . 2024年2月25日閲覧。
- ^ Beyer, Betsy; Jones, Chris (2016). サイト信頼性エンジニアリング (第 1 版). O'Reilly Media . ISBN 9781491929124. OCLC 1291707340.
- ^ 「第 5 章 Google DiRT: 災害復旧テスト」。『Chaos Engineering』書籍の Web サイト。O'Reilly Media。2020年 4 月 30 日。2024年2 月 25 日に閲覧。
- ^ abジョーンズ、ノラ; ローゼンタール、ケイシー ( 2020 )。カオスエンジニアリング (第 1 版)。オライリーメディア。ISBN 9781492043867. OCLC 1143015464.
- ^ Cahoon, Jason (2021 年 6 月 2 日). 「WATCH: The DiRT on Chaos Engineering at Google」(動画) . youtube.com . GOTO Conferences.
- ^ ab 「Netflix Simian Army」。Netflix Tech Blog。Medium。2011年7月19日。2017年10月21日閲覧。
- ^ US 20120072571、Orzell、Gregory S.、Izrailevsky、Yury、「ネットワーク アプリケーションの回復力の検証」、2012 年 3 月 22 日公開
- ^ 「Netflix Chaos Monkey がアップグレード」。Netflix Tech Blog。Medium。2016年10月19日。2017年10月21日閲覧。
- ^ 「PhoenixServer」。martinFowler.com。Martin Fowler(ソフトウェアエンジニア)。2012年7月10日。 2021年1月14日閲覧。
- ^ 「Netflix libère Chaos Monkey dans la jungle Open Source」[Netflix が Chaos Monkey をオープンソースのジャングルに解放]。Le Monde Informatique (フランス語) 。2017 年11 月 7 日閲覧。
- ^ ab 「SimianArmy: 最高の状態でクラウドを運用するためのツール。Chaos Monkey は、アプリケーションがランダムなインスタンス障害を許容できるようにする回復力ツールです」。Netflix, Inc. 2017 年 10 月 20 日。2017年10 月 21 日閲覧。
- ^ 「しかし、これらの混沌の猿たちは誰なのか?」15marches(フランス語)。2017年7月25日。 2017年10月21日閲覧。
- ^ SemiColonWeb (2015 年 12 月 8 日)。 「インフラストラクチャ : アダプタ aux nouvelles アーキテクチャ クラウドを注ぐ quelles メソッド ? - D2SI ブログ」。D2SI ブログ(フランス語)。 2017 年 10 月 21 日のオリジナルからアーカイブ。2017 年11 月 7 日に取得。
- ^ 「Chaos Engineering Upgraded」、medium.com、2017年4月19日、2020年4月10日閲覧
- ^ 「Netflix Simian Army」、medium.com 、2017年12月12日閲覧
- ^ “Days of Chaos”. Days of Chaos (フランス語) . 2022年2月18日閲覧。
- ^ 「DevOps: Voyages-sncf.com からのフィードバック」。モデレーターのブログ(フランス語)。2017 年 3 月 17 日。2017年10 月 21 日閲覧。
- ^ devops REX (2017 年 10 月 3 日)。 「[devops REX 2017] 混沌の日々 : 文化開発の開発 - Sncf.com à l'aide de la gamification」。2022 年2 月 18 日に取得。
- ^ ab Miller, Ron (2022年9月22日). 「Steadybitは、本番稼働前に開発者がカオスエンジニアリングに参加することを望んでいる」. Tech Crunch .
- ^ steadybit/reliability-hub-db、Steadybit、2024年8月26日、 2024年8月26日閲覧
- ^ 「ホーム」。Steadybit Reliability Hub 。 2024年8月26日閲覧。
- ^ 「Gremlin が 1,800 万ドルを調達し、「failure-as-a-service」テスト プラットフォームを拡張」VentureBeat 2018 年 9 月 28 日。2018年10 月 24 日閲覧。
- ^ Hof, Robert (2016年9月11日). 「インタビュー: FacebookのProject Stormがデータセンターの災害をいかに防ぐか」. Forbes . 2024年8月26日閲覧。
外部リンク
- カオスエンジニアリングの原則 – カオスエンジニアリングの宣言
- カオスエンジニアリング – エイドリアン・ホーンズビー
- カオスエンジニアリングの実践がソフトウェア設計の向上にどのように役立つか – Mariano Calandra
