クラウド障害からシステムを守れ
業界に広まる“クラウドアプリ格言集”から学べること
信頼性が高いといわれるクラウドサービスであっても、障害は常に想定していなければならない。クラウド上で可用性の高いアプリケーションを開発するために気を付けるべきヒントを紹介する。
クラウドは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
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
5
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
6
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
7
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
10
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー