Azureを構成するコンポーネントを見てみよう
そもそもWindows Azureってなに?
2011年04月06日 09時00分更新
Windows Azureは、Windows ServerやSQL Server相当の機能に加え、外部アプリケーションとの連携など多くの機能をもつクラウドサービスだ。Windows Azureはどのように動作し、何ができるのか。構成するコンポーネントのレベルから、しっかりと解説していこう。
Windows Azureとは?
グーグルなどクラウドをベースにした企業との競争に際して、マイクロソフトは広告ベースビジネスなどを一時は模索していた。しかし、その後に方針を転換。既存のPC環境などと同じく、実行環境を提供するというプランを採用することにした。そこで登場したのが、Windows Azureだ。マイクロソフトはこのWindows Azureで、既存の企業向けに提供されているWindows ServerやIISなどで構築された「オンプレミス(On-premises)」のシステムをクラウド化することを狙う。
Azureはクラウド構築システムの実行環境の名前だが、同時にデータベースであるSQL Azureなどを含んだ全体の名称としても使われることがある。この部分は正確には「Microsoft Windows Azure Platform」という名称なのだが、略して「Azure」と呼ぶことも少なくない。ここでは、全体を指す場合には「Azure Platform」とし、実行環境自体を指す場合には「Windows Azure」と表記することにする。
Azure Platformは、図1のように大きく3つの部分から構成される。実行環境であるWindows Azure、データベース機能を提供するSQL Azure、そしてクライアント上の.NETアプリケーションと連携するための「AppFabric」である。このうちAppFabricは、かつて「.NET Services」と呼ばれていたこともある。

図1 Azure Platformの構成
当初の構想では、Windows LiveやExchangeのアプリケーションアウトソースサービスなども含まれる構成だった。しかし、Windows Liveに関しては、個人向けサービスのままとなった。また、Exchangeのアウトソーシングは、「Exchange Online」として他のOffice系サービスと一緒に「Microsoft Online Services」の一員となり、Azure Platformとは独立したものとして提供されている。
マイクロソフトはOSやアプリケーションだけでなく開発環境にも力を入れているが、これはクラウドでも同様である。同社の統合開発環境「Visual Studio」を使ったVisual BASICやC#による開発のほか、.NETに対応したJavaやPHPといった言語システムによるプログラミングも可能だ。開発環境としては、オープンソースの統合開発環境「Eclipse」なども利用できる。
Azure Platformは、マイクロソフトが世界の6カ所に建設したデータセンターで実行されるが、システムインテグレーターなどにもライセンスされている。これにより、インテグレーターが独自の機能を付加して自身のデータセンターで運用し、ユーザーにクラウド構築機能を提供することも可能になっている。なお、国内では富士通とNTTコミュニケーションズが、マイクロソフトと提携を行なっている。
Windows Azureの構造
Azure Platformの中心になるのが、実行環境である「Windows Azure」だ(図2)。前述のように、原則マイクロソフトが建設したデータセンターで実行される。内部はPCベースのハードウェア上で動作する特別バージョンのWindows Server 2008 R2で、Hyper-Vの仮想環境を利用している。

図2 Windows Azureの構成
Windows Azureは、複数のコンポーネントから構成される。一番下にあるのが、物理的なハードウェア(サーバー群)で動作する「ファブリックコントローラー」だ。ファブリックコントローラーは、ハードウェアの上で実行される仮想環境を統合して、大きなリソースのプールを作る。このプールから具体的に割り当てられるのが、「コンピューティングサービス」と「ストレージサービス」となる。
Windows Azureのポイントは、このファブリックコントローラーにあり、ユーザーやアプリケーションの要求により、VM(Virtual Machine、仮想マシン)の生成、資源割り当てを自動的に行なう。ユーザーやアプリケーションは、VMのサイズやインスタンス数を指定するだけでよい。生成されたVMのセットアップやアプリケーションの起動は自動的に行なうことができ、実行中に動的な増減をさせることも可能になっている。
ユーザーが作成したアプリケーションは、Windows Server 2008 R2互換の仮想マシン上に作られた環境で実行される。この時、ファブリックコントローラーは、ユーザーの指定によりリソースを割り当てる。ユーザーがAzure Platformで立ち上げたサイトのアクセス数が増えれば、同時実行するインスタンスを増やすなどして対応するのだが、Windows Azureではこうした構成の変更が簡単に、しかもアプリケーション自体とは独立して行なえるようになっている。
このため、短期間に急成長するようなサイトであっても、サイト運営者は、設定値を変更するだけで、キャパシティを増やすことができる。ユーザーはハードウェアの割り当てやセッティング、環境のインストールなど一切不要で、もちろんハードウェアを購入する必要もない。Azure Platformの利用料金は、簡単にいえば、計算時間やトラフィック、記憶スペースなどを使った分だけ払うことになっている。そのため、負荷が下がれば、インスタンス数を減らすなどしてリソースを減らし、運用コストを下げることも可能だ。
基本機能を提供するコンピューティングサービスとストレージサービス
Windows Azureの仕組みを理解する上で重要なのが、前述のコンピューティングサービスとストレージサービスだ。コンピューティングサービスは、ユーザーのアプリケーションを実行する環境である。これは、Windows Server 2008 R2相当の環境に、Windows Azureの専用実行環境が加えられたものとなる。内部的には、ファブリックコントローラーが作り出したVMを使い、「ロール」とよばれる環境でアプリケーションを実行する。各ロールに対しては、ロードバランサーが割り当てられる。同一のアプリケーションロールに対して複数のVMを実行することができ、ロードバランサーがその負荷を平準化する。ロールとその動作については、後半で紹介しよう。
このアプリケーションが情報を保存場所として利用するのが、ストレージサービスである。ストレージサービスは3つのデータ構造、
- 「BLOB(Binary Large OBject)」
- テーブル
- キュー
に対応する。テーブルは複数VMで同時に扱えるようになっており、数TBの情報を扱うことも可能だ。キューはロール間でのデータ受け渡しに利用されるもので、間にキューを挟むことで、特定ロール間に依存関係ができないようにしている。また、格納されるデータは、Windows Azure内で3つの複製が作られる。
ストレージサービスに保存された情報は、HTTPによるアクセスに対応し、他のサービスやローカルクライアントからのアクセスも可能だ。課金体系もストレージとコンピューティング、およびネットワーク通信量が分離されているため、Windows Azureを単純なデータ格納サーバーとして使う方法もあるだろう。なお、ストレージサービスにはリレーショナル機能はなく、その場合には、別途用意されるSQL Azureサービスを利用する。
また、Windows Azureのアプリケーションがビデオなどのコンテンツを配信するような場合には、CDNがこれをキャッシュする。このCDNは、アクセスする場所に近いデータセンターにキャッシュを保存できる。ほかに、Windows Azureのアプリケーションがユーザーのローカル.NETアプリケーションと通信するためのコンポーネントとして「Connect」が用意されている。
●
以上は、Windows Azureの基本機能の一部だ。次回は、Webアプリケーション開発で重要となるリレーショナルデータベース機能「SQL Azureサービス」、他のアプリケーションとの連携機能などを提供する「AppFabric」、Azure用アプリケーションやデータを販売する「Windows Azure Marketplace」について紹介しよう。

この連載の記事
-
第5回
クラウド
Azureならではの開発手法、導入方法を見てみよう -
第4回
クラウド
開発時に覚えておきたい「ストレージサービス」の仕組み -
第3回
クラウド
Windows Azureの大きな特徴「ロール」を理解しよう -
第2回
クラウド
Azureアプリを支えるデータベースとAppFabric -
クラウド
Windows Azureでクラウドをはじめよう - この連載の一覧へ