PR

 第1回と第2回で、Windows Azureの基本的な構成要素を説明してきた。今回は、Windows Azureを使う利点と、アプリケーションやサービスを設計・開発する際のポイントを解説する。

スケーラビリティが最大のメリット

 従来のWindows Serverを利用する場合と比べ、Windows Azureを使う利点は何だろうか。最大の利点はスケーラビリティの高さである。たとえば、一般的なWindows Serverマシン(OSを仮想化して配置する場合を含む)を即時に数十台~数百台分確保することは難しい。しかし、Windows Azureでは設定を変更するだけで自由に仮想マシン(インスタンス)の数を変更することが可能である。初期状態では課金超過を発生させないよう、利用可能なインスタンスに制限があるが、Microsoft社に連絡すればこの制限は解除できる。

 このため、例えば突発的なピークが発生した場合でも一時的にインスタンス数を追加するだけで、必要とされる処理能力を確保することが可能である。コンピュートサービスのWebロールに負荷が集中した場合には、Webロールの数を増やして(スケールアウト)処理負荷を分散する。WebロールからWorkerロールへの処理要求(リクエスト)は、キューイングなどで蓄積しておき、順次実行していく。こうすることで、ピーク時のリクエストを確実に処理することが可能になる。また、翌朝までに終了させなければならない夜間バッチ処理が終わりそうにない場合には、Workerロールをスケールアウトして並列処理を実行することが可能である。

 このようにWindows Azureでは、処理負荷の状態に応じて適切なスケーリングを実現できる。スケーリングの指示は、ユーザー企業の管理者が、管理コンソールから簡単に実行できる。これこそ既存のWindows Serverでは難しい、クラウドならではの利点といえる。

コストパフォーマンスの高さも魅力

 コストパフォーマンスの高さも、Azureを使う利点だ。コンピュートサービスは1時間単位の課金であるため、必要な時に必要なだけインスタンス数を調整すればよい。これにより、常に最大構成でサーバーを確保しておく必要もなくなる。

 ただし、これらのメリットを最大限に活用するには、Azureに適した設計手法を理解し、適したアーキテクチャーを設計する必要がある。例えばWindows Azure向けのシステムを開発する場合は、WebロールとWorkerロールのそれぞれに、プログラムの役割を分担して配置・実行することになる。

 その際に、各々のロールは独立して実行するように、アーキテクチャーを設計することが望ましい。なぜなら、システムの構成単位である各ロールを疎結合にしておけば、拡張性(スケーラビリティ)を確保するのが容易になるからだ。

 そこで、ここからはWindows Azure Platform上で実行するアプリケーションやサービスの設計および開発のポイントを解説しよう。

設計・開発にはWindows向けの開発ツールを利用

 Windows Azureは基本的に、Windowsベースのプラットフォームである。そのため、Windowsアプリケーションを開発していた際の技術やノウハウや、プログラム資産がそのまま活用できるケースが多くある。こうした既存の資産を活かせるケースを以下に挙げていこう。

 Windows Azureで実行するソフトウエアは、.NET Framework 3.5 SP1または.NET Framework 4ベースである。そのため、.NETの開発経験があればWindows Azure上で実行するソフトウエアを開発できるはずだ。

 ソフトウエアの開発に当たっては、Visual Studio 2008 SP1またはVisual Studio 2010が利用可能である。ただし、Windows Azureの開発をサポートするためのWindows Azure Tools for Visual Studioを別途インストールする必要がある。このツールはWindows Azureのポータルサイトから無料でダウンロードすることが可能である。

 Windows Azure Tools for Visual Studioをインストールすると、Visual Studioで作成可能なプロジェクトの種類に”Cloud Service”が追加される。新規にWindows Azureプロジェクトを作成する場合は、このCloud Serviceプロジェクトを選択すればよい。また、プロジェクトの新規作成時に、作成するWebロールおよびWorkerロールプロジェクトをVisual Studioソリューション内に追加することが可能である(図4)。

図4●Cloud Serviceプロジェクトの作成とWebロール/Workerロールの追加
図4●Cloud Serviceプロジェクトの作成とWebロール/Workerロールの追加
[画像のクリックで拡大表示]