ITOpsのカオスエンジニアリング

2 Min Read | 9月 25, 2021

以下が最初に登場しました DevOps.com

カオスエンジニアリング(CE)は 生産における乱流条件に耐えるシステムの能力に対する信頼を構築するために、システムで実験する規律。このアプローチは、ソフトウェア開発および運用(DevOps)の実践において一般的になりつつあります。しかし、そのアプリケーションはどのようにITOpsに拡張されるのでしょうか。 CE for ITOpsは、テクノロジープラットフォームのストレステストを行うための同様のフレームワークを提供し、大きなプレッシャーの下での弱点とパフォーマンスの落とし穴を理解します。

CEは、バグテスト中に主にDevOpsで使用される傾向があります。つまり、ピークトラフィックなどのさまざまな条件下でソフトウェアを実行するための実験を設定し、その機能とパフォーマンスを監視します。これは、極端な負荷応答を理解できないと、カスケード障害が暴走したり、さらに悪いことに、実際の作業を行わずにエラー状態を処理する何千もの余分なノードがスピンアップしたりする可能性があるクラウドベースのシステムでますます必要になります。 IT運用管理(ITOM)に適用されるこれらの同じ原則は、極端に達したときの定常状態と無秩序な出力の両方を明確にすることにより、機能ベースラインに加えてインフラストラクチャ、ポリシー、およびプロセスの許容範囲を定義するのに役立ちます。

ITのアプリケーション

DevOpsのCEの理論は、物理インフラストラクチャから仮想インフラストラクチャに移行するにつれてNetflixで早期に注目を集め、AWSにそれを実装したチームが崩壊して形成されましたグレムリン。ただし、ITOMは歴史的に開発から分離されてきたため、CEは通常ITOpsでは使用されません(通常、ITはシステムダイナミクスを監視し、問題が発生すると、エンジニアリング変更管理またはITSMが問題を修正するために導入されます)。

今日のクラウドアプリケーションのコンテナ化の成長に伴い、ITインフラストラクチャは従来の多層アーキテクチャというよりも開発環境のように見えます。しかし、クラウドの無限の規模は、障害も無限になり得ることを意味します。マイクロサービスは、システムに許容範囲の限界までストレスをかけ、パブリッククラッシュの前に欠点を修正することで、弾力性とスケーラビリティ、データフロー、および弾力性をテストすることで十分に機能します。

1、2、3…カオス

ITOMにカオスエンジニアリングを実装すると、マイクロサービスの世界の弱点を特定するための体系的なアプローチが提供されます。モノリシック環境では、マイクロサービスの設計で失われる可能性のあるパフォーマンスとイベントのメトリックを可視化できます。その結果、未知のワークロードにスケーリングする場合、運用上の洞察の必要性がさらに重要になります。

Netflixの カオスモンキー 極端な複雑さを管理するための一般的な開発ツールの能力のギャップに対処することを目的とした、独自のクラウドネイティブコミュニティからのCE原則から生まれました。この方法論はインフラストラクチャに拡張可能であり、プラットフォームの動作全体にガードレールを設定するのに役立ちます。

この考え方をチームのITOMに取り入れるために、従うべき5つの基本的な手順を次に示します。

現在の定常状態を定義する

ベースライン分析の実行は、キャパシティプランニング、アップグレード戦略、およびその他の影響の大きい機能の標準的な概念です。データに圧倒されたり、問題が発生した場合にビジネスに干渉したりしないように、比較的単純な(そして小さい)ものから始めます(セキュリティレッドチームなど)。たとえば、ITショップで一般的なボトルネックであるCPUとネットワークの使用率を監視します。

最適な条件を定義する

システムが一般的にどのように動作するか、そしてどのように動作するかがあります。これらは通常、同じものではありません。 CPU使用率とネットワーク遅延は、アプリケーションの効率、ハードウェアの状態、およびその他の多くの要因によって常に影響を受けます。エンジニアが通常の日、簡単な日、非常に困難な日に何を期待すべきかを概説する標準を作成します。これらは対照群であり、極端な日は
ストレステスト。

仮説を立てる

システムはどこで壊れますか?これまでの最悪の日でも見られたピークトラフィックを2倍にするなどのアプリケーションシナリオを実行している場合、CPUは、可変制御グループのように最適な使用率を維持しますか(または、コンテナープロビジョニングエンジンが追加のノードをスムーズに展開します)、または負荷を管理するのに十分なメモリまたはネットワーク帯域幅が残っていないためにプロセスが停止するほど急激に急上昇しますか?

実世界のイベントを実行します(ただし、爆風半径を含みます)

1つのインターネットサービスプロバイダーへの接続を切断するファイアウォールを停止するなど、極端なことを行います。これにより、アプリケーションが繰り返し失敗する要求に応答しようとするため、アプリケーションが混乱し、デッドネットワークエンドポイントからエラーが返されるとCPUプロセスが増加します。ログイベントがマウントされ、データベースがいっぱいになり、バックボーンが飽和状態になります。

仮説を検証する

どうしたの?テスト中に使用率とネットワークスループットを監視し、システムがどこで倒れたかを確認します。それはあなたが期待したことですか、それともこれまで考えられなかったことが起こったのですか?インフラストラクチャの亀裂から新しい混乱が発生しましたか?安定化、文書化、および修正します。

恐れることをやめないでください

システムに絶対最大値まで、そしてもう少しストレスをかけて、どこで問題が発生するかを確認することで、定常状態の動作とエラー処理を理解できるため、新しい予期しない方法で問題が発生する前にシステムを修正できます。トラフィックの急増はどのように見えますか?実際のイベントとその組織への影響は何ですか?

CEはDevOpsだけのものではありません。これは、障害が発生するまでの(快適ゾーン外での)負荷テストの体系的な方法である必要があります。これは、マイクロサービスの導入以上の責任があり、IT組織内のあらゆる種類の分野に適用されます。

次のステップ:

OpsRamp-Fall-2019_Release-webinar-CTA


Recommended posts