このページの本文へ

Windows Azureでクラウドをはじめよう ― 第1回

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)」のシステムをクラウド化することを狙う。

画面1 Windows Azureとは

 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つのデータ構造、

  1. 「BLOB(Binary Large OBject)」
  2. テーブル
  3. キュー

に対応する。テーブルは複数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」について紹介しよう。

カテゴリートップへ

この連載の記事

ASCII.jp特設サイト

クラウド連載/すっきりわかった仮想化技術

ピックアップ