本記事は、Trustworthy Computing のブログ “ Building reliable cloud services ” (2014 年 1 月 29 日公開) を翻訳した記事です。
David Bills (デビッド・ビルズ)、信頼性主任ストラテジスト
オンライン サービスに携わるすべての人にとって、信頼性は常に最重要課題です。エンジニアリング チームは、堅牢なサービスを設計して構築し、稼働中のサイトのインシデントを最小限に抑えたいと考え、サービス プロバイダーは、予測可能な一貫性のある結果を提供することで顧客へのインシデントの影響を軽減したいと考えています。
マイクロソフトでは、現在ホワイト ペーパーの最新版『信頼性の高いクラウド サービスを設計するには』を公開しています。
このホワイト ペーパーでは、クラウド サービスを作成、導入、利用する組織に向けて信頼性の基本概念と信頼性の設計時プロセスについて説明しています。その目的は、クラウド サービスの信頼性を高める要因とプロセスについて、意思決定者が理解できるようにすることです。
ここで取り上げられている重要な概念の 1 つは、信頼性の向上を目指してサービスに回復性を組み込むことの重要性です。すべてのサービス プロバイダーは、信頼性の高いサービスをお客様に提供できるように取り組んでいますが、うまくいかないこともあるのが現実です。信頼性に関連する脅威がなくなることはありませんが、回復性の高いサービスが完全に機能し、お客様自身で作業の完了に必要な操作を実行できるようにすることが必要です。
サービスは次のことを考慮する必要があります。
- お客様に与える障害の影響を最小限に抑える。
- 障害の影響を受けるお客様の数を最小限に抑える。
- お客様がサービス全体を利用できなくなる時間を最小限に抑える。
重要なのは、既知の障害が発生したときに、自社のサービスがどのように稼働し、またどのように稼働すべきかについて組織が考えることです。たとえば、サービスが依存する別のクラウド サービスを利用できない場合、またサービスがプライマリ データベースに接続できない場合に、サービスが何をすべきかを考えます。トラフィックが突然増加し、容量が逼迫した場合は、サービスがどのように対応すべきかを考えます。
経験上、障害の主な原因は次の 3 つです。
- デバイスおよびインフラストラクチャの障害 - 予想される障害や寿命末期のデバイスの障害から、不可抗力の自然災害や事故によってしばしは引き起こされる致命的な障害まで、多岐にわたります。
- 人為的なミス – 管理者のミスや、組織ではしばしば制御できない構成の間違いなどがあります。
- ソフトウェアの欠陥 – 導入されているオンライン サービスのコードの不備やソフトウェア関連の問題などがありますが、これらはリリース前のテストである程度軽減できます。
これら 3 つの原因の影響と、それらに対処するための軽減戦略について組織が考察できるようにするために、マイクロソフトでは回復性のモデル化を推奨しています。このホワイト ペーパーでは、依存関係を特定し、潜在的な障害点を限定するための業界で広く認められている方式である、故障モード影響解析 (FMEA) について説明しています。
下の図は、FMEA が基本的な開発プロセスのどの段階で適用されているかを示しています。
基本的な開発プロセスの概要
](https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/61/20/reliability-paper-graphic.png)
出典: マイクロソフト
耐性の高いサービスの設計と堅牢な復旧メカニズムの導入は、反復的なプロセスです。設計の反復は流動的であり、リリース前のテストから生成される情報と、導入後のサービスの実行に関するデータの両方が考慮されます。
オンライン サービスを設計または構築する場合は、このホワイト ペーパーを読み、
回復性および信頼性の高いサービスの構築方法について考察することをお勧めします。
同様に、クラウドのお客様には、利用するプロバイダーが回復性をサービスにどのように組み込んでいるかについて確認することをお勧めします。