はじめに
2008年10月27日、MicrosoftはクラウドOSの一種であるWindows Azureを発表しました。これはMicrosoftのクラウド・サービス・プラットフォーム「Azure Service Platform」上で動作するOSで、Microsoftが提供するクラウド・サービスの中核をなしています。この連載ではWindows Azureを使ったアプリケーション作成の基礎について扱います。
対象読者
- Windows Azureに初めて触れる方
- Visual Studio 2008利用者
クラウド・コンピューティングの基礎知識
ではまず、クラウド・コンピューティングの基本とWindows Azureの持つ意味合いについて考えましょう。
クラウド・コンピューティングとは、ネットワーク、特にインターネットを介して、コンピュータ・リソースを提供また利用するという考え方を指します。
一般にシステム構成を図案で表現する場合、ネットワークを指してクラウド(雲)の図を用いることがありますが、クラウド・コンピューティングのいう所の「クラウド」もやはりネットワーク、それも特にインターネットを指しています。以下にクラウド・コンピューティングの概念を簡単な図で示します。
![クラウド・コンピューティングの概念図](http://cz-cdn.shoeisha.jp/static/images/article/3970/Azure1_ppt.gif)
クラウド・コンピューティングは、従来ローカル・コンピュータや自社管理のネットワーク内部に所在していたリソースをクラウド上つまりインターネット上に配置することにより実現します。ここで言うリソースはソフトウェアやハードウェア、大規模インフラや開発環境プラットフォームなど複数の階層のものを含みます。
例えば、ソフトウェア・リソースをクラウド上に配置すれば、ブラウザなどのターミナルを介すことにより、ソフトウェアの機能をクラウド・サービスとして利用できます。具体的にはMicrosoft Windows LiveやGoogle Docsなどのサービスがこれにあたります。クラウドの利用により、インストールやバージョンコントロール、また動作要件など煩雑な要素をほとんど考慮することなく、必要なタイミングに最新の状態でアプリケーションを利用することが可能です。
また従来、商用アプリケーションを導入する場合にはフルパッケージを端末の台数分だけ購入せざるを得なかったわけですが、この点、商用のクラウド・サービスは利用時間や負荷に応じて課金されるので、実際の利用実態に即したコスト負担という合理的な効果ももたらします。ソフトウェアを提供するクラウド・サービスを俗にSaaS(Software as a Service)ともいいます。
クラウド・サービスにはさらに下の階層つまり、ハードウェア・リソースや、より大規模なインフラストラクチャ・リソースを提供する形態のサービスもあります。この点、例えば自社管理でデータセンターなどのインフラを運営しようとすると、多大なコストや労力が必要とされることは想像に難くありません。一方、クラウドを利用すれば必要なリソースを必要に応じ、低コストで利用することが可能です。さらに利用者はクラウド側での実際の動作を意識する必要はまったくなく、保守や管理などの作業も大幅に低減できます。ハードウェアもしくはインフラを提供するクラウド・サービスをHaaS(Hardware as a Service)またはIaaS(Infrastructure as a Service)などと言います。
さらに、SaaSとHaaSの中間的な階層にあたる、開発プラットフォームを提供するクラウド・サービスがあります。これはPaaS(Platform as a Service)とも呼ばれます。本連載で扱うWindows Azureはこの階層のサービスに当ります。後で詳しく述べますが、Windows Azureは.NETの開発プラットフォームをクラウド上で提供します。この階層のクラウド・サービスにおいては、既にOSや開発環境がクラウド上に導入されており、技術者は慣れ親しんだ環境や言語をサポートするサービスを選択することにより、独自のクラウド・アプリケーションを容易に構築することができます。また、構築したクラウド・アプリケーションはベンダのハードウェア・リソースを利用して公開されるので、より安定したサービスの提供が可能になります。
今取り上げた階層別のクラウド・サービスを以下の表に簡単に示します。
名前 | 概要 |
SaaS(Software as a Service) | ソフトウェアをサービスとしてクラウド上で提供する |
PaaS(Platform as a Service) | 開発プラットフォームをクラウド上で提供する |
HaaS(Hardware as a Service)またはIaaS(Infrastructure as a Service) | ストレージやサーバなどのハードウェアをクラウド上で提供する |
他ベンダーとの比較によるWindows Azureの位置づけ
Windows Azureと他ベンダが提供するクラウド・サービスを比べてみることにしましょう。以下にWindows Azureと階層的に競合する可能性がある主なクラウド・サービスとその特徴について簡単にまとめてみました。
名前 | 概要 |
Amazon EC2 | 導入時にOSやデータベースサーバの種類を選択できる。起動したOSはリモートでほぼ自由に利用できる。自由度は高いがOSの管理やアップデートなどは各ユーザーが行う必要がある。 |
Google Apps Engine | Python言語およびJava言語をサポートし、GoogleのデータベースBig Tableが利用できる。言語面ではPerlなど順次拡張されていく予定。開発環境としてEclipseが利用可能。 |
Azure Services Platform | クラウドOSであるWindows Azure上で運用する。APIとして.NET Frameworkをサポートし、.NETで利用可能なC#、VBなどの言語が使える。またデータベースとしてSQL Data Serviceが提供されている。開発環境としてVisual Studioが利用可能。 |
言うまでもありませんが、Windows Azureの最大の特徴は.NET環境をサポートしているという点です。 MicrosoftはWindows Azureのソフトウェア開発キットと併せて、Visual Studio 2008用のプラグインを用意しています。統合開発環境上でクラウド・アプリケーションが構築できるのもWindows Azureの大きな魅力です。ちなみにクラウド上で.NET環境の開発をする場合、Amazon EC2上でWindows OSを選択して開発環境を整えるという選択肢もありますが、Amazon EC2の場合はOSや開発環境を自己管理する必要があります。導入の際にはアプリケーション開発以外に発生する管理コストについても比較する必要があるでしょう。
目下、プラットフォームを提供する各ベンダーのクラウド・サービスは開発環境上の要件によって実質的に棲み分けられているような状態です。例えば Python言語もしくはJava+Eclipseの利用であればGoogle Apps Engine、.NETはWindows Azure、より大きな自由度が必要な場合はAmazon EC2と言った具合に、使用言語、開発環境、OSといった要件により自ずと選択すべきプラットフォームも限定されて来ます。
ただし、各ベンダーともサポートする環境を広げつつあります。将来的には開発環境に加え価格設定や回線およびシステムの安定性などで比較してベンダーを選択する必要が出てくることは間違いありません。ただ、いずれにしても、.NET開発であれば本家であるMicrosoftのクラウド・サービス、 Windows Azureが第一の選択肢になるのは自然なことではあります。