1章複雑なシステムとの出会い

この章の前半では、複雑なシステムを扱う際に浮上する問題について探究します。カオスエンジニアリングは、複雑な分散ソフトウェアシステムにおける必要性から生まれました。特に複雑なシステム、すなわち非線形(https://oreil.ly/PiC5D)で、予測不可能かつ望まざる結果につながりやすいシステムを運用するニーズに対処するものです。エンジニアである私たちにとって、これはしばしば心地の悪いものでした。なぜなら私たちは、不確実性を前もって回避できる手立てがあると考えたいからです。システムの望まざる振る舞いを、往々にして私たちはシステムを作り運用する人のせいにしたくなりますが、実のところこれは、複雑なシステムに生来備わった性質によるものです。この章の後半では、私たちがシステムから複雑性を取り除くことができるのか、またそれにより望まざる振る舞いを排除できるのかを問いかけます(ネタバレ:いいえ、できません)。

1.1 複雑性についてじっくり考える

あなたのシステムにとって、カオスエンジニアリングが意味のあるものかどうかを考える前に、シンプルさと複雑さをどこで線引きするかを理解する必要があります。システムを特徴づける1つの方法は、システムの入力の変化に対して出力がどれくらい変化するかをみることです。シンプルなシステムは、たいてい線形であると言われます。線形なシステムに対する入力の変化は、それと一致した変化をシステムの出力にもたらします。強くボールを投げるほど、遠くに飛ぶのと同じような感じです。

非線形なシステムでは、構成要素の一部分に変更を加えるだけで出力が激しく変化します。システム思考で取り上げられる鞭効果†1は、視覚的に相互作用を捉えられるよい例でしょう。軽く手首を振っただけ(これをシステム入力の小さな変化としましょう)で、はるか遠くにある鞭の先は一瞬にして音速に達し、お馴染みのビシッという音を立てます(これがシステムの出力に相当します)。 ...

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.