クラウドサービスは言葉の通り、雲のようなイメージがあり、無限の拡張性を想像させる。変化の激しいビジネス状況の下で、キャパシティープランニングから解放されることはITエンジニアにとって大きな負担の軽減につながる。

 だが実際に使ってみると、リソースを投入しても期待ほど性能が伸びないケースがある。クラウドサービスでも、拡張性が自動的に担保されるわけではないのだ。

 懸念される要因は、大きく三つある。(1)ロードバランサーがボトルネックになる、(2)特定データへのアクセスが集中する、(3)データストアサービスの性能が劣化する、の三つである(図1)。

図●クラウドにおける拡張性の阻害要因
図1●クラウドにおける拡張性の阻害要因
[画像のクリックで拡大表示]

(1)ロードバランサーがボトルネックになる

クラウドにおける性能向上のアプローチは、基本的にスケールアウトである。仮想的なサーバーやストレージを追加し、負荷分散によって性能を向上させる。

 そのスケールアウトの要となるロードバランサーがボトルネックになることがあった。クラウド事業者は一般に、どのようなロードバランサーを使用しているのかを明らかにしない。仮想的にサーバー上に実装している事業者もある。そんなロードバランサーが処理の限界に達すると、いくらサーバーを追加しても性能は向上しない。

 クラウドサービスでは、ロードバランサーをどんなシステムと共用することになるかも分からない。他のシステムへのアクセスが増えて、性能が落ちる可能性もある。ロードバランサーがボトルネックになるリスクは、常に頭に置いておいた方がよい。

(2)特定データへのアクセスが集中する

 特定のデータにアクセスが集中し、性能が向上しないこともあった。実際に経験したのは、分散処理用のミドルウエアやフレームワークをクラウド上で動かしたときだ。分散DBや分散ファイルシステムが管理するメタデータや、画面遷移を制御するフレームワークが管理するユーザーステータス情報に対してアクセスが集中し、サーバーを増やしても性能が上がらない事態に陥った。

 ミドルウエアやフレームワークのスケーラビリティーに限界が出てくるという問題は、クラウド特有の問題とは言えない。自営システムでも起こり得ることだ。しかし、簡単にサーバーを増やせるというクラウドベースのシステムで、より顕在化しやすい問題だと考えている。事前によく検証しておく必要がある。

(3)データストアサービスの性能が劣化する

 クラウド事業者が提供するデータストアサービスは、スケーラビリティーと可用性を向上させるために、データの複製を複数のサーバーに保管する機能を持ったものが多い。災害対策まで考えて、地理的に離れたデータセンターのサーバーにデータの複製を保管することもある。このとき、データの「強い一貫性」は保証しない場合が多い。

 これはデータへの書き込みが発生した直後に、データを読み出したとき、最新のデータが読み出されることを保証しないという意味である。これによって、スケーラビリティーの確保と可用性の向上を両立させている。

 ところが最近になって、こうしたデータストアサービスに対して、「強い一貫性」をオプション機能として提供する事業者が出てきている。こうした機能を安易に使うと、アプリケーションのスケーラビリティは制限されることになる。同じデータへのアクセスが集中したときに、サーバーを増やしても性能が上がりにくくなる。強い一貫性が必要かどうかは、慎重に検討すべきだ。

 各クラウドサービスが採用するアーキテクチャーと採用技術は一様でないが、こうした三つの要因は普遍的に起こり得る問題だろう。起こり得る問題を事前に把握しておき、適切な対策を施す必要がある。

真壁 徹(まかべ とおる)
日本ヒューレット・パッカード ESSプリセールス統括本部 インダストリソリューション本部/通信・メディアソリューション部 シニアITスペシャリスト
1997年に金融系シンクタンクに入社し、保険システムのアプリケーションと基盤開発に従事。2001年、日本ヒューレット・パッカードに入社。アプリケーション開発部門を経て、現在は主に通信事業者向けシステム基盤の提案、設計を担当している。