12章実験の選択に関する課題(と、その解決策)

Peter Alvaro

大規模な実世界のシステムが、人間と機械の相互作用なしに動くとは想像しにくいものです。私たちがそのようなシステムを設計するとき、最も難しくかつ重要な部分は、これらの異なるリソースをどのように利用するのが最適かを見いだすことです。この章では、人間とコンピュータをリソースとして活用する方法を、レジリエンスのコミュニティは考え直す必要があることを述べていきます。とりわけ、可観測性のインフラを利用してシステムの故障モードに対する直感を養う際の課題について議論し、その直感を最終的にカオス実験という形に落とし込むのは、人間よりもコンピュータの方が得意であることを述べていきます。そして最後に、コミュニティがこの方向性に向かっていく準備ができている証拠を紹介できればと思います。

12.1 実験の選択

本書の他の部分で議論された方法論から独立して(また、補足して)いるのは、実験の選択の課題、すなわちどのシステムの実行に対してどの故障を注入するかです。すでに見てきたように、適切な実験を選択することはユーザが見つける前にバグを特定することにもなり得ますし、大規模な分散システムの振る舞いについて新たな学びを得られるかもしれません。しかし残念ながら、そのようなシステムに備わった複雑性ゆえに、実行できる可能性のある実験の数は天文学的な数字になります。これは、インスタンス同士の通信の数が指数的に増加するからです。例えば、20個のサービスを持つアプリケーションのノードが落ちた場合のあらゆる組み合わせの影響を網羅的にテストしたいと考えましょう。このように適度なサイズの分散システムであっても、1つのノードの故障で2の20乗、すなわち100万とおり以上の影響がありえるのです!  ...

Get カオスエンジニアリング ―回復力のあるシステムの実践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.