8章弾力性を担保する設計
執筆:Vitaliy Shipitsyn、Mitch Adler、Zoltan Egyed、Paul Blankinship
協力:Jesus Climent、Jessie Yang、Douglas Colish、Christoph Kern
優れたシステム設計には弾力性(resilience)†1を担保するための計画が含まれます。弾力性とは、攻撃から防御する能力であり、システムにストレスを与えてその信頼性に影響する異常な状況に耐える能力です。
設計の早い段階で、複数のインシデントに同時に直面した場合にシステムを完全または部分的に稼働させ続ける方法を考えておく必要があります。
本章は、多層防御があれば都市国家が救われていたかもしれない、古代の世界の物語から始めます。その上で現代の多層防御戦略を検討し、Google App Engineの例を示します。
本章で取り上げる各種のソリューションはそれぞれ、実装のコストに差があり、組織の規模が異なれば妥当性も変わってきます。小規模な組織であれば、品質低下(degradation)の制御に重点を置き、爆風半径(=影響が及ぶ範囲)の制御を確立し、システムを個別の障害ドメインにセグメント化することをお勧めします。組織の成長に伴い、継続的な検証を活用して、システムの弾力性を確認および強化していくことが推奨されます。
†1 翻訳注:resilienceは「回復力、復元力、耐障害性」とも訳されますし、近年では「レジリエンス」とすることも増えています。本書では『SRE サイトリライアビリティエンジニアリング』に合わせて「弾力性」としています。
システム設計の一環をなす「弾力性」とは、システムが深刻な機能不全や中断に耐える能力を表します。弾力性の高いシステムは、システムの一部で生じた障害(または場合によってはシステム全体の障害)から自動的に回復し、問題の解決後は通常の運用に戻ることができます。弾力性の高いシステムにおけるサービスは、インシデントが発生している間も、おそらくは品質低下モードで実行し続けるのが理想的です。システム設計のあらゆる階層に弾力性を組み込むことは、想定外の障害や攻撃のシナリオからシステムを守るのに役立ちます。 ...
Get セキュアで信頼性のあるシステム構築 ―Google SREが考える安全なシステムの設計、実装、保守 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.