クラウドOS Azureの登場
マイクロソフトのクラウド戦略
マイクロソフトのAzureは、Amazon EC2/S3と並んでエンタープライズ・クラウドの画期をなすものです。
Amazonのクラウドが、彼らのインターネット・クラウドのリソース管理機構から派生したサービスであるのに対して、Azureは当初からエンタープライズでのクラウド利用にフォーカスして、スクラッチから新しく作られたクラウド・システムです。
今回は、Azureの特徴を見ていきたいと思いますが、Azureの技術的な特徴に立ち入る前に、マイクロソフトのクラウド戦略の特徴を見ておきましょう。
マイクロソフトは、クラウド分野ではGoogleやAmazonに対して後発ですが、むしろその立場を生かして、先行者たちのシステムをよく研究し、エンタープライズ・クラウドの分野で、挑戦的で斬新なデザインを持つ新世代のクラウド・システムを構築しようとしています。
第1に、Azureは新世代のエンタープライズ・クラウドです。それは、Googleが強い競争力を持っているインターネット・クラウドとは別の分野を狙っています。第2に、Azureは既存のエンタープライズ・システムとクラウドとのハイブリッドを当初から想定しています。
既存のすべてのシステムを一挙にクラウドに移すことは簡単ではなく、現実的でもありません。AzureではOn Premiseとクラウドとが滑らかにつながっていて、On Premiseでのソフトウエア資産を生かしながら、クラウドを利用することが可能です。
そして第3に、少なくとも.NETの開発者にとっては、それまでのスキルや使い慣れた開発環境の延長でクラウドのサービスの開発が可能になります。Azureでは開発者のスキルの連続性に大きな配慮が払われています。第4には、こうしたクラウドへのアプローチのしやすさを備えながら、Azureのクラウド・システムは技術的には極めて高度で高機能です。理論的にも興味ある問題提起が数多く行われています。
それでは、少し詳しくAzureの技術的な特徴を見ていきましょう。
Azureでの、サービスの大規模化への対応
エンタープライズ分野でも、サービスの大規模化の要求に対しWebアプリケーションのシステムのScalabilityをどう確保するかが大きな問題になっています。
webアプリケーションでは、3層モデルのScale-outは、次のような戦略で行われています。
まず、web層とビジネス・ロジック層のコピー、レプリカを複数作って並べ、その前面にロードバランサーを置きます。外部からのアクセスはロードバランサーで振り分けられ、それぞれのリクエストは複数のレプリカで並行処理が行われます。
この方式には、一つ弱点があります。web層とビジネス・ロジック層のScale-outは可能になったとしても、システムで一つのデータを持っているデータベースへのアクセスが、システム全体のボトルネックとなることです(図1参照)。
現在、こうした問題に効率的に対応する方法として注目を集めているのは、データベースの前に高速の分散メモリーキャッシュを置こうという手法です。
分散メモリーキャッシュでは、データベースからのデータの読み出しだけではなく、書き込みもメモリー上のキャッシュに対して行われ、データベースとの間で自動的に同期がとられます。低速なデータベースへの読み書きは、高速なメモリーへの読み書きに変わります。
分散キャッシュメモリーに対するアクセスは、見掛け上は、システム全体にまたがるシステムで単一の仮想的なkey/value HashTableに対するアクセスとして行われます。
現在、商業レベルで活発に利用されているOracleのCoherenceや、IBMのObjectGridという分散キャッシュ技術は、Azureとは実装方法が異なっています。
ただし、両者ともサービスの大規模化の中で、ScalableでAvailableなシステムに対する要求が高まるという共通の背景の中で生まれ、メモリーの高速さを有効に使うKey/Value Hashの有効性に着目するというように、同じ方向を向いています。