[クラウド活用パターン辞典〜Amazon Web Servicesを使い倒す!〜]

AWSでシステムの可用性を高める【第1回】

2017年3月13日(月)清野 剛史(クラスメソッドAWS事業部ソリューションアーキテクト)

AWS(Amazon Web Services)はパブリッククラウドサービスの先陣を走り、利用企業にとってAWSを使ってサービスを構築・運用することが大きな武器になる。しかし、その活用には、オンプレミスのシステムとは異なる視点や勘所がある。今回は、企業システムにおいて欠かせない非機能要件の1つである「可用性」を高めるための方法について説明する。

 クラウド市場は2017年以降、さらなる加速度的な成長が予測されている。その範囲は、大企業だけでなく中堅・中小企業へと拡大していくと見込まれている。当初の「オンプレミスに代わるサーバーやストレージの機能の提供」という役割はもとより、クラウドならではの大規模なコンピューティング資源のネットワーク化により、オンプレミスでは実現不可能な大規模データの処理やIoT(Internet of Things)との連携、AI(人工知能)の活用などへと用途も広がっている。

サーバーは止まるもの、データは壊れるもの

 しかし、クラウドに対する“勘違い”の1つに「クラウドでは絶対にサーバーが止まらない」というものがある。確かに、オンプレミスではシステム管理者がサーバーやストレージを監視し、ハードウェアやネットワークの物理的な交換・修復などを実施しなければならないが、クラウドなら、それらはクラウド事業者が実施するため、ユーザーは維持管理については何もする必要がないような気持ちになる。しかしシステム運用の基本原則は「サーバーは止まるもの」「データは壊れるもの」であることを忘れてはいけない。メンテナンスを不要にする完璧なアーキテクチャーは、残念ながら現時点では存在しない。

 サーバー自体の堅牢さを示す基準に「信頼性(reliability)」がある。ソフトウェアだけではなく、ハードウェアも含めた障害の起きづらさ、故障しにくさを表している。ユーザーが考える“落ちないシステム”も、この信頼性を指すことが多い。だが実際には「壊れないサーバーを作る」ことではなく「サーバーが壊れてもサービスが止まらないように準備する」ことだ。

 このシステムが使用可能な状態を維持できるかどうかを示す指標が「可用性(availability)」である。可用性が高いアーキテクチャーを高可用性(HA:High-Availability)と呼ぶ。逆に、ここが止まるとサービスの続行が不可能になるという箇所を「単一障害点(SPOF:Single Point of Failure)」と呼ぶ。クラウドのシステムアーキテクチャーを考える際には、SPOFをいかに少なくしHAなアーキテクチャーを組むかが重要になる。

 AWSには「design for failure(障害発生を前提としたシステム構築)」という考え方がある。可用性を重視したアーキテクチャーの採用を推奨している。つまり「サーバーが止まるかもしれない」「データベースが落ちるかもしれない」ことを前提に「それでもサービスが止まらないようにシステムを構築する」必要がある。「かもしれない」の対象は、ハード単体に留まらず、ネットワーク障害、クラウドサービスそのものの停止、データセンターへのアクセス寸断、データセンター群が設置されている地域へのアクセス不能なども組み込まれる。

複数にリソースを分散して可用性を確保する

図1:ごく一般的なWebシステムの構成図1:ごく一般的なWebシステムの構成
拡大画像表示

 可用性を考えるために、簡単なWebシステムをユースケースとして考えたのが図1である。クライアントから仮想サーバーの「EC2」にアクセスがあれば、EC2内部のミドルウェアが必要に応じてデータベースサービス「RDS」からデータを取得してレスポンスを返す。あるいはクライアントからのリクエストにより、RDSにデータを挿入・蓄積・変更していくという、ごく一般的なWebシステムだ。

 このシステムの課題は、EC2またはRDSに何らかの障害が発生した場合、システムが動作しなくなり、サービスが止まってしまうことだ。EC2およびRDSがSPOF(単一障害点)になってしまっている。障害は、システムを構成しているプログラム上では問題がなくても発生する可能性がある。例えばDDOS攻撃などのリクエスト増加によるサーバーダウンや、AWS自体の定期メンテナンス、データセンター自体が自然災害等で寸断するなどだ。そのような場合にも管理者の手を煩わせずにサービスを継続できる状態を維持するには、どうすれば良いか。3つのスコープから可用性の確保について考えてみる。

バックナンバー
クラウド活用パターン辞典〜Amazon Web Servicesを使い倒す!〜一覧へ
関連記事

Special

-PR-

AWSでシステムの可用性を高める【第1回】AWS(Amazon Web Services)はパブリッククラウドサービスの先陣を走り、利用企業にとってAWSを使ってサービスを構築・運用することが大きな武器になる。しかし、その活用には、オンプレミスのシステムとは異なる視点や勘所がある。今回は、企業システムにおいて欠かせない非機能要件の1つである「可用性」を高めるための方法について説明する。

PAGE TOP