サイトアイコン APPSWINGBY Developers Blog

アンチフラジャイル(Antifragile)なシステムとは?

アンチフラジャイル(Antifragile)とは何か?

アンチフラジャイル(Antifragile)とは、ブラックスワンの著書で世界的に有名なナシーム・ニコラス・タレブ氏がAnti(アンチ)と fragile(脆弱な・壊れやすい)を組み合わせた造語です。言葉の意味を簡単に説明するならば、「脆弱な」「壊れやすい」の反対ですから、「強靭な」「壊れにくい」という意味になります。

世界的な著書であるタレブ氏の「ブラック・スワン[上・下]―不確実性とリスクの本質 (日本語)をご紹介しておきます。もしソフトウエアやシステム以外にも興味のありましたら是非読んでみてください。


ナシームさんは、ブラックスワンの他、反脆弱性[上・下]なども上梓しており、一度読んでみると面白いかもしれません。


ナシーム氏の宣伝はさておいて、最近なにかと耳にするアンチフラジャイルという言葉。アンチフラジャイルの意味と関連する用語などをまとめておきます。

経済の世界で使われることが多かったアンチフラジャイル

アンチフラジャイルという言葉は、本来、行動経済学などの中で多く使われてきた言葉でしたが、「Devops」という考え方が登場し、マイクロサービスの活用によるサービス開発が全盛になってくる中で、「アンチフラジャイルなシステム・ソフトウエア」といった表現でこのアンチフラジャイルという言葉が使われる機会が増えてきました。

Economicな世界では、「相場が大きくマイナスに動いたときに損失は最小限に抑えつつ、プラスに動いたときには巨額な利益を得るという考え方や行動」という捉え方をされます。

アンチフラジャイルの考え方をシステムやソフトウエアに取り入れる

アンチフラジャイルの考え方は、オライリー社から出版されている「Infrastructure as code」や「Building Microservices」にもその考え方が登場するなどし、ソフトウエアの世界にも流用されてきました。

例えば、Devopsを推進し実践する中で生まれる開発と運用の密な連携と継続的に繰り返される開発・テスト・仮説・問題解決/修正・新たらしい運用が、アンチフラジャイルなシステムと開発・運用チームを作り上げることになります。

アンチフラジャイルを理解するためにも、まずは、アンチフラジャイルの基礎となっている「フラジャイル」「ロバスト」「レジリエンス」という言葉を理解しておきます。

フラジャイルとは

フラジャイルを直訳すると「fragile: 壊れやすい、もろい」となりますが、ここで言うフラジャイルとは、「大きな変化によって大きな損失が発生する脆さ」のことを指しています。ウォータフォール開発やSPOFなシステムなども潜在的なフラジャイルなシステムと言えるかもしれません。

ロバストとは

ロバスト(Rubust)とは、頑強性(がんきょうせい)や頑健性(がんけんせい)と直訳されますが、ようは頑丈なソフトウエアやシステムことであり、ここでは「外部からの大きな変化を受けても大きな損失を発生させない仕組み性質のこと」になります。

ロバスト設計、ロバスト最適化といった使われ方が多いかもしれません。

レジリエンスとは

レジリエンスとは、跳ね返り・弾力性・回復性・回復する力といった意味を持つ言葉で、外部からのマイナスな出来事発生に対し柔軟性を持つといった解釈がされています。世の中的に使われている言葉としては、京都大学院教授の藤井聡先生の京都大学レジリエンス実践ユニットなどが有名です。

突発的な出来後に対し、損失を最小限に抑える仕組み・取り組みなどがレジリエンスにあたります。

余談ですが、2020年にコロナショックによる影響で、NYダウや世界中の株式相場がアレに荒れ、「サーキットブレーカー」が発動されたというニュースを度々耳にしました。これは株式市場の大きなマイナスな動きを制限することで、非常に大きなマイナスなショックを吸収し、回復させようとする仕組みですが、このサーキットブレーカーもレジリエンスな機能です。

アンチフラジャイルとは

アンチフラジャイルは、上記の考えをさらに発展させた考え方で、外部により発生した大きなマイナスな動きに対し、大きな損失を生み出すのではなくシステムを強靭化させ、さらには利益を生み出すという考え方です。NetflixのFail as a Serviceがアンチフラジャイルなシステムとして有名です。Netflixでは、意図的にシステム障害を発生させ、その影響をモニタリングし、改善策を検討する取り組みを行っています。因みにNetflixは、「Chaos Engineering(カオスエンジニアリング)」なるものを公開していて、Chaos Engineeringは「プロダクション環境の過酷な状況に耐えられるというシステムの能力に自信を持つため、分散システムで実験するという規律」だと定義している。」と言っています。

Chaos Engineering 5つの原則の解説はこちら

アンチフラジャイルについては、日本国内でもその考え方が認知されてきていますので、IaCやDevops、Chaos Engineeringなどと一緒に理解を深めていくのも良いかもしれません。

本日は以上になります。

お疲れ様でした。

モバイルバージョンを終了