カオスエンジニアリング

意図的に障害や欠陥のあるシナリオを本番環境へ導入して、ランダムな混乱に直面したときの回復力を検証する分散型ソフトウェアのテスト手法
Contributed by

Sebastien Wains

Published July 22, 2022
Collection
1

概要

カオスエンジニアリングは、組織が予測不可能なことを予測しようとするプラクティスです。インフラ障害、ネットワーク障害、アプリケーション障害に対する回復力を獲得するために使われます。

一般的にテスト駆動開発とは、2+2=4であることをテストするとか、データベースに書き込む前にデータベースが利用可能であることをテストするといった、予測可能な不具合をテストすることです。

カオスエンジニアリングでは、本番システムにわざと障害を導入し、そのカオスにどう耐えるかをチェックします。

障害にはさまざまな性質がある:

  • サーバーのシャットダウン(サービス、サーバー、データセンター全体のシャットダウンなど)
  • ネットワークの劣化や停止をシミュレートするための遅延注入
  • CPUの高負荷やディスクの一杯といったリソースの枯渇

このような障害は、アプリケーションに予測不可能な反応を引き起こす可能性があります。

障害が発生した場合、特定の障害シナリオに耐えられるようにアプリケーションを改善する必要があります。

メリット

  • 開発者は、CI/CDパイプラインで再現するのが難しい障害シナリオに耐えられるよう、アプリケーションを改善することができます。
  • CI/CDパイプラインでは実装が困難な障害シナリオ(ネットワーク遅延など)をオペレーションでテストできます。
  • アプリケーションの改善に繋がります。

実施方法

カオスメッシュ(Chaos Mesh) は、Kubernetesのためのカオスエンジニアリングプラットフォームです。

カオスモンキー(Chaos Monkey) は、本番環境でランダムにインスタンスを停止します。

カオスブレイド(Chaos Blade) は、マルチ環境、マルチクラスタ、マルチ言語をサポートするクラウドネイティブなカオスエンジニアリングプラットフォームです。

実施例

参考

カオスエンジニアリング をチームや顧客、ステークホルダーと実施するにあたりより詳細にお知りになりたい場合は、以下のリンクを参照してください。


Except where noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license. This site is graciously hosted by Netlify