
"アンチフラジャイル"な考え方
こんにちは。フィックスポイントの冨です。
先週、カオスエンジニアリングについて書いたのですが、その元になる考え方の一つとしてアンチフラジャイル(Anti-fragile)があります。
システムでも何でも、構造がシンプルで理解されているものについては、それに対する問題も対応策が分かっており、既知の解法を適用すればOKという状態です。
運用であれば、リカバリ手順書が用意されているような環境ですね。
それに対して、複数のコンポーネントが互いに連携しあう複雑なシステムでは、そもそも解法が存在しないどころか、問題の所在もはっきりしないという場合があるわけです。
状況を調査して、対応方法を徐々に探っていくアプローチになります。
このような「わからなさ度合い」を表すのに、Cynefin(カネヴィン)フレームワークがよく紹介されます。
単純系(Simple) - 問題も解法もわかっている困難系(Complicated) - 分析すれば因果関係も構造も明確になるもの複雑系(Complex) - 因果関係が複雑で、やってみないと分からないレベルカオス系(Chaotic) - 因果関係が見えず、突発的に発生した問題と4つ(無秩序:Disorder を含めて5つという考えもある)に分類されます。
例えば、昨今の新型コロナでは、症状も感染力も未知数で、感染すると肺炎を悪化させて死に至ることもあり、 医療的な対処方法も不明。経済への影響も大きいといった初期のカオス系な段階から、 感染力は高いが多くが無症状。免疫系を制御する薬が重症化を防げるなどの知見が増えた、 複雑系な問題にに移行しつつあるといった感じでしょうか。
もう一つ、システムの堅牢性のレベル感についてはフラジャイル(Fragile) - 大きな変化で大きな損害ロバスト(Robust) - 大きな変化でも大きな損害を出さないレジリエンス(Resilience) - 変化に強く、回復力が高いなどの言葉で紹介されます。最近はレジリエンスなシステムであることが良いといった感じに運用の人も良く使っているかと思います。
そして「アンチフラジャイル」ですが、「障害は起きる」前提で、 変化や障害に対処できるシステムを作る考え方です。 事前でも事後でも、とにかく考えうる打ち手を試すといったアクションが、 カオス系の問題解決には求められるわけです。
アンチフラジャイルの実践としてのカオスエンジニアリングでは、 複雑系やカオス系のトラブルに対応するために、 意図的に限定的なトラブルを起こして、その挙動を調べます。
そして、起こりうる問題の因果関係を明らかにして、より強固にしていくといった方法論です。
まさに「失敗から学ぶ」「雨降って地固まる」を意図的に積み重ねていく考え方ですね。 状況が苦しい業界も多い昨今ですが、何とか次の飛躍の踏み台につなげようと考えて行動していくのが、「アンチフラジャイル」な発想なのです。


