Windows Azureのアーキテクチャと用語解説
以下にWindows Azureのアーキテクチャを図で示します。
用語やWindows Azure上で提供される主なサービスについて簡単に解説します。
Azure Service Platform
Microsoftが提供するクラウドサービスAzureの基盤技術全体を指しています。OSやストレージ、OS上で動く各種サービスなどを含みます。
Windows Azure
Azure Service Platformに含まれるクラウド上のOSで、Windows Server 2008 R2をベースにしています。.NET Framework 3.5とIIS 7.0をサポートし、HTTP/HTTPS、REST、SOAP、RSSなどの標準的なWebプロトコルを提供します。
Windows Azureはクラウド上の仮想マシンで提供され、仮想マシン上でWebロールおよびWorkerロールと呼ばれるプログラムが動作します。ロールとは、仮想マシンの役割を指しており、一つの仮想マシンの上ではそれぞれ一つのWebロール、またWorkerロールしか動作させることができません。
Webロールは基本的にASP.NETのWebアプリケーションと同じものです。Webロールは言語として.NET環境がサポートするC#またはVisual Basicなどを使用することができます。
Workerロールは内部的に処理を行うビジネスロジックです。Workerロールは後述するクラウド上のストレージAzure Storageとの間で、キューと呼ばれるメッセージのリクエストをやりとりすることにより動作します。Workerロール自体はユーザーインターフェイスを持たないため、ユーザーからの指示を直接実行することはありません。Workerロールの動作の流れは例えば、
- Webロールがユーザーからの指示を受け付けメッセージをキューに格納
- →Workerロールがそれを取り出して実行し結果をストレージに格納
- →Webロールがストレージから結果を取り出す
のようなモデルとなります。以下にこの動作モデルを図で示します。
もちろん単一のWebロールのみで処理を完結することも可能ですが、必要に応じて仮想マシンの数を増やし、複数のWebロールまたはWorkerロールを構成して負荷を分散させ、処理の高速化を図ることができます。
また、Windows Azureは標準的なWindows OSに搭載されているファイルI/O関連のAPIはサポートせず、クラウド上のストレージを利用することが前提となっています。こういった差異も存在するため、既存のASP.NETアプリケーションをそのままクラウド上にWebロールとして配置しても動作するわけではない点に要注意です。
Azure Storage
前項でも述べた、Windows Azure上に用意されているストレージです。ブロブ、テーブル、キューの3種類があります。
ブロブは単純な階層を持つストレージでバイナリデータを保存します。保存したバイナリデータにはRESTを使ってアクセスすることができます。テーブルは非リレーショナルなデータベースで、表のような形式で各種データを保存できます。テーブルにはADO.NETやLINQなどの既存のプログラミングインターフェイスでアクセスすることができます。キューは前述しましたが、内部処理を行うプログラムWorkerロールとの間で、リクエストのメッセージなどをやりとりする際に使われるストレージです。Azure Storageの詳細と実際の利用については今後の連載でも扱います。
.NET Services
.NET Servicesは既存の社内ネットワーク内で運用していた各種サービスやアカウント管理などをクラウド上でも利用するための一連のサービス群です。現在のところ以下の3種類のサービスがあります。
(1)サービスバス
社内ネットワーク上のサービスとクラウド上のアプリケーションを連携させるための機能です。
基本的に社内ネットワークはインターネット側から簡単にアクセスできないよう、堅固なセキュリティに守られています。サービスバスはクラウド側から社内ネットワークに接続するのではなく、社内ネットワークのサービスがクラウド側のWindows Azureにアクセスしてきた際に、該当サービスを登録する形で動的に動作します。このようにサービスバスは社内ネットワーク側から通信を確立するための仕組みを提供し、社内システムとクラウド上のアプリケーションの安全な連携を実現します。
(2)アクセスコントロールサービス
アクセスコントロールサービスはWindows Azure上のアクセス権限を管理するシステムです。それ自体はアクセス権限を発行せずにWindows Live ID やWindows ServerのActive Directoryなど、外部の認証情報を利用します。Windows Azure側で信頼関係を明示すれば個別にアカウント情報を設定することなく、既存の認証情報を適用できるため、簡単にアクセス管理を実現できます。
(3)ワークフローサービス
ワークフローサービスは、複数のサービスがどのように連携するかを設定する機能です。連携させることのできるサービスにはWindows Azure上のクラウド・サービスや社内ネットワーク上のサービスが含まれますが、ワークフローサービスにより、各サービスがどのような条件でどのように連携するのかを定義することができます。ワークフローサービスの構築にはVisual Studioのワークフローデザイナーを利用することができます。
SQL Services
SQL ServicesはWindows Azure上のクラウド・アプリケーションから利用できるデータベースを提供します。SQL ServicesのデータベースエンジンがSQL Data Serviceです。先述した、Azure Storageのテーブル機能は非リレーショナルなデータベースでしたが、SQL Data Serviceはリレーショナルデータベースであり、この点、Microsoft SQL Serverがクラウド上で提供されていると言っても差し支えありません。SQL Servicesの詳細と実際の利用については連載の後半で詳しく扱います。
Live Services
Live ServicesはMicrosoftのWebサービス、Windows Liveが提供するリソースをWindows Azureのクラウド・アプリケーションから利用するためのサービスです。Windows Liveはメールや地図、写真の管理やメッセンジャー、データの共有、アクセス権の制御など多くのサービスを提供していますが、Live Servicesにより、これらのサービスをWindows Azureから利用することができます。
また、Windows LiveはPCに限らず、携帯電話デバイスやPDAデバイスなど複数のデバイスからアクセスできますが、Live ServicesのLive Meshサービスを利用することにより簡単にデバイス間でデータの同期をとることができます。さらに、Live ServicesにはLive Frameworkと呼ばれる開発環境も用意されており、このフレームワークの開発キットにより、クロスデバイスで動作するアプリケーションを構築することもできます。Live Servicesについても今後の連載で扱う予定です。