クラウド障害からシステムを守れ
業界に広まる“クラウドアプリ格言集”から学べること
信頼性が高いといわれるクラウドサービスであっても、障害は常に想定していなければならない。クラウド上で可用性の高いアプリケーションを開発するために気を付けるべきヒントを紹介する。
クラウドは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.
この記事の著者
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
3
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
4
221人調査で分かった「情シス最大のストレス」は?
-
5
「データストレージの活用方法」に関するアンケート
-
6
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
7
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
8
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
9
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
10
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー