3種類あるロールの違いとは?
Windows Azureの大きな特徴「ロール」を理解しよう
2011年04月20日 06時00分更新
第1回と第2回では、Windows Azureの動作を知るために必要な仕組みを紹介した。続いては、Windows Azureのアプリケーション開発に必要な知識として、実行環境である3種類のロールを見てみよう。
3種類のロールとは?
Windows Azureの実行環境は、大きく3種類ある。「Webロール」、「Workerロール」、「VMロール」の3種である(図1)。
Webロールは、IISの上で提供されるWebページとその処理機能だ。簡単にいえば、ASP.NETによるページ表示機能に相当する。2つ目のWorkerロールは、Webロールと対にして利用するもので、サーバー側のバックエンド処理ルーチンとなる。
たとえばオンラインショッピングサイトを考えた場合、WebロールはユーザーがWebブラウザで見るカタログや注文画面を担当し、Workerロールは受注処理を担当する。そしてWorkerロールは、ストレージサービスのキューと組になり、キューに投入されたアイテムを順次処理するという動作を行なう。キューが間に入るようになっているのは、大量処理などの場合にWorkerロールを複数のVMで動作させて並行処理を可能にするためだ。
3つ目の「VMロール」は、上記2つとは少々異なる。あらかじめ設定されたWindows Server 2008 R2の環境が入ったVMイメージに対して、アプリケーションをインストールしたものを作成、これをWindows Azureにアップロードしてサービスなどを実行させる仕組みだ(図2)。
VMロールでは、Windows Server 2008 R2で動作するアプリケーションの大半が、そのまま利用できる。ただし、Hyper-V内での実行であり、システム設定がある程度固定されてしまうなど、オンプレミスのWindows Serverに比べて制限がある。たとえば、アプリケーション内で管理者権限が必要な処理やAPI呼び出しは制限される。
各ロールの開発方法
現時点でのWindows Azure用アプリケーションとは、上記3つのロールのどれかで動作するものとなる。それぞれの開発はVisual Studioなどで可能であり、Windows Azure用アプリケーションは、専用システムへのインストールパッケージとして生成される。これにより、ファブリックコントローラーは、VMを増やすような場合、簡単にユーザーアプリケーションをセットアップできる。逆にいうと、Windows Azure用アプリケーションは、複数のVMで並列動作される前提で作らねばならないわけだ。
とはいえ、Webロールの開発はASP.NETによるページ記述で行なうため、通常のASP.NETの開発とほとんど変わらない。内部のプログラムは、表示イメージ(HTML)の生成時に起動し、表示セッションが終わると終了させられる。このため、ページ表示と独立した処理は、キューを介してWorkerロールで行なうようにする(図3)。
一方、Workerロールは、VB.NETやC#などで記述されたプログラムだ。キュー内のアイテムを取り出し、処理を行なって終了するというサイクルで動作する。ただし、クラウドでの実行であり、処理が失敗する可能性がある。このため、キュー内アイテムの処理が完了したあと、アイテムを処理済みとしてマークして削除するようになっている。何らかの原因でWorkerが終了してしまっても、新たなWorkerプロセスが再度処理を行なうという仕組みを持つ(図4)。
●
3種類のロールの説明は以上だ。Azure Platformのコンポーネント解説の最後として、次回はストレージサービスを詳しく見てみよう。
この連載の記事
-
第5回
クラウド
Azureならではの開発手法、導入方法を見てみよう -
第4回
クラウド
開発時に覚えておきたい「ストレージサービス」の仕組み -
第2回
クラウド
Azureアプリを支えるデータベースとAppFabric -
第1回
クラウド
そもそもWindows Azureってなに? -
クラウド
Windows Azureでクラウドをはじめよう - この連載の一覧へ