2008年10月、Microsoftは「Windows Azure」を華々しくデビューさせた。それ以来、このOSは多くの人々の関心と好奇心を集めてきた。
Windows Azureとは何であり、それがどのように動作するのかを分かりやすく解説しているのが、マニュバー・ダース氏のChannel 9のビデオ「Introducing Windows Azure」だ。
この40分近いビデオの中で、ダース氏はWindows Azureのアーキテクチャと基盤技術、そして同OSを利用する方法について懇切丁寧に解説している。Windows Azureの本質、そしてそれが企業と開発者にどのような意味を持つのかについて、これほど明快に説明しているサイトはほかに見当たらないと思う。
Windows Azureのコンセプトは、拍子抜けするくらいシンプルだ。これは一種の「クラウド用OS」だとダース氏は表現する。WindowsのようなOSがデスクトップに対して行うのと同じことを、Azureはデータセンター内で管理されたサーバプールに対して行う。Azureの実体とその機能を詳細に調べていくと、以下の事実が浮かび上がってくる。
各コンポーネントはWindowsをベースとする。これらのコンポーネントとしては、サービスの登録、スケジューリング、管理といった機能を処理する「ファブリックコントローラー」や、プール内の個々のサーバ上で動作する「エージェント」などがある。エージェントの役割は、物理サーバ上の仮想マシン内での「ユーザーコード」(クラウドベースのサービス)のスケジューリングと実行だ。

開発者は、サービスを実行させるには何個のロードバランサ、プロセスマネジャー、エージェントで管理されたコードインスタンスをインスタンス化する必要があるかを記述した「サービスモデル」を定義する。
開発者はサービスモデルをクラウドに配備する前に、シミュレーションを利用してテストとデバッグを行う必要がある。
ユーザーを自社のデータセンターに縛りつけるためにWindows Azureを利用するという狙いは、Microsoftにはなさそうだ(とはいえ、より多くの開発者にVisual Studioおよび関連ツール/SDKを使用することを同社が願っているのは明らかだ)。
これはアプリケーションを開発するのと同様だ。例えば、Azureストレージサービスは、Windows Azureベースのサービスの1つにすぎない(ただし、Azure環境内では昇格した権限で動作する)。これと同じことが、Azure環境内でのプロセススケジューリング、ポーリング、管理、フェイルオーバー、冗長性、可用性の各エレメントについてもいえる。
テスト用と本番用のサービスインスタンスは、同じ基盤環境(DNSなどのコアサービスを含む)を利用する。両者を区別するのは、サービスモデルとサービス記述だけである。また、Azureはライブアップデートモデルをサポートするので、サービスを提供するのに必要な仮想マシンがバックグラウンドでアップデートされたりパッチを適用されたりしても、そのサービスは動作を継続することができる。個々のエレメントがいずれアップデートあるいはリプレースされる場合でも、途切れることのない状態、管理、サービスアクセスを実現するのに十分なエレメントが常に動作して継続性を維持しなければならない。
Windows Azureは、堅固で高可用性のサービス環境を開発しようとしている開発者、サービスプロバイダー、企業にとって非常に興味深い環境を提供するものと期待される。Azure SDKをチェックしてAzureの構成要素を確認し、Azureプラットフォームを詳しく調べてその機能を把握し、AzureのWebサイトにアクセスしてツール、情報、説明、サンプル、動画を見つけていただきたい。
本稿筆者のエド・ティテル氏はライターと講師を兼業しており、XMLと開発のほか、IT資格や情報セキュリティなどのテーマに関心を持っている。