HeadlinesBriefing HeadlinesBriefing.com

ソフトウェアの障害対応設計:実践ガイド

ByteByteGo •
×

障害が一切起きないソフトウェアシステムを構築することは不可能です。システムはライフサイクル全体を通して障害を起こさずに動作することもありますが、決して障害が起きないと保証できる人はいません。完璧なコードを書いても問題は解決しません。欠陥のないソフトウェアであっても、物理的なコンピュータ、電源、正常に動作するストレージ、その他のコンポーネントに依存しているからです。マシンの電源が落ちれば、ソフトウェアの品質にかかわらず障害が発生します。そのため、エンジニアは障害を前提とした設計を行い、システムの一部が正しく動作しなくなったときにシステムがどう振る舞うべきかを事前に決めておく必要があります。

本記事では、開発者がシステムの障害に対処するのに役立つ戦略を取り上げます。まず、「すべてが壊れうると想定する」という考え方の根拠を説明します。この考え方により、チームは障害を稀な例外として扱うのではなく、発生を見込んで備えることができます。次に、障害を回避することと障害を許容することを比較します。これらはシステム設計において異なる目的を果たす二つのアプローチです。

そのうえで、実践的な手法に話を移します。開発者は障害の影響範囲を見極め、システムのどの部分が影響を受け、どの部分が正常に動作し続けているかを把握する必要があります。また、ある部分の障害がプラットフォーム全体に広がらないよう、障害の影響を抑える方法も必要です。

最後に、システムが正しく動作している間に障害をどう扱うか、そして障害からの復旧をどう測定するかを解説します。システムがどれだけ速く、どれだけ完全に復旧するかを追跡することで、チームは自分たちの障害対応戦略が実際に機能しているかについて具体的なフィードバックを得られます。

出典: ByteByteGo · 要約:HeadlinesBriefing