クラウド障害からシステムを守れ
業界に広まる“クラウドアプリ格言集”から学べること
信頼性が高いといわれるクラウドサービスであっても、障害は常に想定していなければならない。クラウド上で可用性の高いアプリケーションを開発するために気を付けるべきヒントを紹介する。
クラウドはITの信頼性を高める方法とされている。だが、ちまたには、その逆を証明するような、クラウドプロバイダーの障害をめぐるエピソードがあふれている。われわれも今では、「クラウドがバックアップリソースになり得ること」だけでなく、「クラウド自体にもバックアップが必要かもしれないこと」を理解している。アプリケーションを設計する際には、この明らかな矛盾を踏まえて作業を進める必要がある。設計者がクラウドの可用性リスクに対処する方法としては、アプリケーションの効果的なコンポーネント化、選択的冗長性、クラウドバースティング、高信頼性トランザクション処理などがある。
ITインフラはどんなものであれ、予測可能なある程度の割合で障害が発生するものだ。クラウドインフラも例外ではない。企業にハイブリッドアプリケーションが増加し、社内のデータセンターリソースのバックアップをクラウドに依存する度合いが高まる中、企業が構築するシステムも複雑化し、システム全体の信頼性がデータセンターの信頼性を下回るケースも増えている。「アプリケーションが動作するには、そのアプリケーションの2つのコンポーネントのどちらも必要」という場合、その可用性は個々のコンポーネントの可用性よりも低くなる。だからこそ、障害に強いクラウドアプリケーションを開発するためには、まずコンポーネントの構造とアプリケーションワークフローを慎重に設計する必要がある。
出発点は、ワークフロープロセス、コンポーネントディレクトリ、そして複製されないデータベースの全ての要素を、高可用性インフラ上でホスティングすることだ。そのため、こうした要素は結局、社内で保守することが多くなる。「複製できないものは、頑丈にすべし」というのが、ここでの合言葉だ。それには、冗長電源やネットワーク接続の信頼性を慎重に分析することなども含まれる。
アプリケーション機能をコンポーネント化して可用性を最大限に高める場合、留意すべき点がある。「別々にホスティングされるコンポーネントの数が増えれば、通常、可用性は低下する」ということだ。従って、実行時のコンポーザビリティ(コンポーネントの結合性)を犠牲にしてでも、コンポーネント化には制限を設けるのが賢明かもしれない。アプリケーションはモジュール式のソフトウェア標準に合わせて開発できる。だが、展開されたアプリケーションの要素には複数のコンポーネントが含まれている可能性がある。そのため、ホスティングポイントを少なくして、より高い信頼性を確保することが求められる。
コンポーネントの数を減らしても、コンポーネントのホスティングリソースに障害が発生すれば、オペレーションは維持できない。そこで登場するのが、選択的冗長性の概念だ。選択的冗長性とは、「一部のコンポーネントを、異なるホストプラットフォーム(別々のクラウド、あるいはクラウドとデータセンターの組み合わせも可)に複製しておくことで、どんなときにも少なくとも1つのコピーは確実に利用できるようにしておく」という考え方だ。ここで「選択的」というのは、データベースの更新時にステート(状態)の損失や衝突を起こすことなく複数の処理経路を正しく調整できるのがワークフロー内の特定の箇所に限られるからだ。こうした箇所を見つけ、冗長性を持たせれば、可用性を高められる。ただし、クラウドサービスは地理的な多様性を生かして構成する必要があることや、クラウドデータセンターと主要データセンターが同じ大都市圏にある場合は完全に冗長とはいえない点などに留意が必要だ。
選択的冗長性を確保するために検討しているアプリケーションコンポーネント間のインタフェースが、REST(Representational State Transfer)型でステートレス(Stateless)であれば、複数のコンポーネントを並列につなぐ方法が比較的簡単で手っ取り早い。フェイルオーバーが行われる場合、ステートを維持するためにクライアント/ユーザー要素に頼れるからだ。ただし、ステートフル(Stateful)なサービス指向アーキテクチャやSOAP(Simple Object Access Protocol)が使われている場合は、単にコンポーネントを複製しただけでは解決策にならない可能性がある。障害は少なくともその時点のセッションやトランザクションをほぼ確実に中断させるからだ。この点が問題となるなら、後述する高信頼性処理を検討するといい。
選択的冗長性を確保できるか否かの判断には、クラウドバースティングを考えるのが有効だ。クラウドバースティングとは、負荷がピークに達したときにクラウドを使って作業負荷をオフロードすることである。クラウドバースティングを機能させるための仕組みと、可用性向上のために選択的冗長性を確保するのに必要となる仕組みは同じであり、それには負荷分散の他、集約とシリアル化のフェーズが含まれる(データベースの更新はここで管理される)。単一障害点を作ることなく分散型負荷分散を導入する方法は、ドメインネームシステム(DNS)も含め、幾つかある。だが、クラウドバースティングや冗長性によって、全体的な可用性を低下させるのではなく確実に向上させるためには、多くの場合、アプリケーションの負荷分散とシリアル化の両要素を高可用性として構成する必要があるはずだ。
アプリケーション設計者の大半は、フェイルオーバー時のトランザクションのステート管理が極めて複雑になり得ることを知っている。高信頼性トランザクション処理や高信頼性セッション処理などと呼ばれる機能を搭載するには、特別なワークフローの設計が必要となるであろうこともだ。一連の協調的な処理が必要となるアプリケーションにおいては、フェイルオーバー時にプロセスのコンテキストが維持される必要がある。さもなければ、アクティビティがコンテキストを失い、データベース(およびユーザー)は不安定な状態で放置されることになりかねないからだ。
従来の一般的なオンライントランザクション処理(OLTP)では、並列データベースを管理して高可用性を確保するのに、同時更新やマルチフェーズでのコミットなどの方法が用いられる。だがときには、単一の高可用性コンポーネントでは希望するレベルの可用性を実現できないことや、コンポーネントの複数のコピー間でステートレスな負荷分散を行えないこともある。こうした場合には、マルチフェーズコミットなど、アプリケーションレベルのステート同期化を用いれば、トランザクションやデータベースの整合性を失うことなくクラウド障害から復旧できる。ただし、この方法はアプリケーションのコストや複雑度まで増大させる可能性がある。
動画や音声通話も含め、セッションアクティビティの信頼性は、プロセスのステートを記録するデータベースロギングを提供することによって高められる場合もある。プロセスのステートを記録することによって、障害で引き起こされた新しいコンポーネントがステートを復元し、ユーザーへの影響を減らせるようにするのだ。こうした機能強化は、コラボレーティブアプリケーションやユニファイドコミュニケーションにとっては極めて重要なものとなりそうだ。実際、WebRTC(Web Real-Time Communications)などの技術を用いて通信セッションとWebアプリケーションを統合する傾向が強まる中で、こうした機能の採用も進んでいる。
多くのユーザーは、クラウドによって多様性とシステム障害対策が自動的に提供されると考えている。だが実際には、クラウド各社が用意している可用性管理のための特別な設備でさえ、クラウド障害からユーザーを守れるとは限らないのが現実だ。アプリケーションの設計段階で事前に対策を講じることは、ITシステムで管理するのと同じくらい効果的に可用性を管理できるクラウドアプリケーションを開発する上で大いに役立つはずだ。それに、企業が受け入れられるアプローチは結局、それしかない。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
新着ホワイトペーパー PR
-
製品資料
[株式会社うるる] 「入札市場」攻略ガイド:効率的に落札するためのポイントを徹底解説 -
製品資料
[株式会社うるる] 入札情報に特化した「販路拡大」「効率化」のためのサポートツールとは? -
市場調査・トレンド
[株式会社うるる] 公共入札に成功する企業と失敗する企業の「5つの違い」 -
製品資料
[日本ビジネスシステムズ株式会社] 専門家が教える、Microsoft 365の「テナント統合/分離」を成功に導く秘訣 -
製品資料
[rakumo株式会社] Microsoft 365での情報埋没を防ぐ、社内ナレッジを資産化する情報ポータル活用
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
PHP脆弱性「PHP2Shell」で2260万件に影響 情シスの緊急チェックリスト
-
2
「Microsoft 365」が乗っ取られる MFAを破る“本物の画面”の恐怖
-
3
「テザリング依存」に潜む落とし穴 “遅いVPN”を解消するネット構築術
-
4
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
5
「Windows」の不要なファイルを安全に消して容量を空ける方法
-
6
AI導入が失敗する“真犯人”は現場のマニュアル 7割が陥る「標準化」のわな
-
7
Claude利用8割のGMO、AI人材の評価軸が「トークン管理」に変わった
-
8
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
9
被害額は過去最高額 それでも「サイバー犯罪者が捕まらない」3つの理由
-
10
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
ホワイトペーパーランキング PR
-
1
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
2
2026年のサイバーセキュリティには何が必要か? 最新データに学ぶ傾向と対策
-
3
経験豊富な即戦力人材に直接アプローチできる、「攻めの採用」への転換術
-
4
「IT史に名を残すシステム障害」8選
-
5
最速72分でデータが流出? 最新の脅威トレンドや侵入手法から分かった防衛策
-
6
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
7
AI駆動開発のスピードと安全性を両立 「品質・セキュリティ管理」の実践ガイド
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
「標的型攻撃メール」事例・サンプル集
-
10
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー