PDCでAzureが発表されたと同時に各種の資料が提供されています。
PDCの各セッション
Azureのサイト
MSDN内のページ
Azure Services Training Kit
このあたりの資料を読んで、、、ってまだ途中なんですけど、自分が現在Azureというものをどのように理解しているかまとめてみました。
あくまで個人の意見かつ現時点での意見なので、間違っているかもしれないという前提で以下は読んでください。
なお、これをまとめるにあたって、一番参考にした資料は下記からダウンロードできるホワイトペーパー(Introducing the Azure Services Platform)です。
要約しただけじゃないつもりですけど(^^;
http://www.microsoft.com/azure/whitepaper.mspx
○Azure Services Platformの個々のサービスの関係
Azure Services Platformには大きく以下の4つのサービスが含まれます
・Windows Azure
・.NET Services
・SQL Services
・Live Services
資料によってはこれに「SharePoint Services」「Dynamics CRM Services」を加えた絵になっているものもありますが、SharePointやCRMはサービスとしてのレイヤがひとつ上だと思いますので、ベースとなるのは上記4サービスでしょう。
これらのサービス間の関係ですが、特に明示はされていませんが、現状ではそれぞれ個別のもの、と考えるべきだと思います。
SDKやTraining Kitを見ても、それぞれ別のものとしての利用手順が述べられるだけで、たとえばWindows Azure上に構築したアプリでSQL Servicesのデータを利用する、といったサンプルは今のところありません。
今後連携がしやすくなることは考えられますが、あくまで現状は別個のものととらえています。
#連携ができないわけではないですが、それぞれを利用するための個別の方法を組み合わせて連携する必要がある、という認識です。
○Windows Azure
Windows Azureは基本的にはASP.NETベースのアプリケーションをクラウド上で展開するもの、と考えてよいと思います。
その要素としてはフロントエンドとなるWebアプリ(Webロール)と、バックエンドで動作するサービス(Workerロール)、それにデータを保持するストレージが存在します。
WebロールとWorkerロールは設定で複数のインスタンスを起動することができます。
Webロールを複数起動した場合は自動的にロードバランサのサービスが提供されるようです。
Workerロールのインスタンス数はWebロールのインスタンス数とは別に管理されるので うまくプログラムを書けば、多数のWorkerロールによる分散処理が可能になります。
また、インスタンスが落ちてしまった場合は自動的に復帰が行われるとのことなので可用性の高いシステムの構築が簡単になる、ということが考えられます。
ストレージとしてはバイナリのデータを保持するBLOB、表形式のデータを保持するテーブル、WebロールとWorkerロール間でのデータのやりとりに使えるキューが提供されます。
テーブルはリレーショナルではなく、単純な表を持てる、というだけのようですがデータ間の関係についてはアプリ側でLINQ等で対処するといったことになりそうです。
このストレージの複製等の処理も自動的におこなわれ、基本的には1台のマシンの障害等でシステムが止まることはないようになるようです。
なお、Windows Azureのストレージ上のデータをWebサービスとして独自に呼び出すことが可能です。
ストレージの扱い等が特殊なので、今まで作成したASP.NETのアプリケーションをそのままAzure上に持っていくことはできませんが、慣れているVisual Studioを利用して、慣れた言語でAzure対応のアプリケーションを開発することができる、というのは大きな利点だと思います。
○.NET Services
.NET Servicesとして以下の機能が用意されます。
・Access Control
・Service Bus
・Workflow
これらの機能は、社内のシステムとクラウド上のシステムをつなぐために使われていくものではないかと考えています。
Access ControlがActive Directoryで管理しているアカウントをクラウド上でも利用できるようにしてくれて、Service Busがクラウド上のサービス(アプリケーション)と接続を行ってくれ、Workflowがクラウドを含めた全体的な仕事の流れを管理してくれる、という感じになるのかな、と思います。
主にエンタープライズ分野で使われるようになるのではないでしょうか。
まだ自分の理解の弱いところです。
○SQL Services
以前はSSDS(SQL Server Data Services)と呼ばれていたものです。
クラウド上でデータを保持するもの、となるわけですが、これの特徴的なところは半構造化データ(要するにXML)を扱う、というところでしょうか。
データのスキーマが一部異なっていても同列に扱えるとか、通常のリレーショナルなデータベースとは違ったところがあります。
○Live Services
Windows Liveの各種サービスをまとめたもの、でしょうか。
ここで一番おもしろそうなのはLive Meshです。
基本的にはデータを各種デバイスとクラウド間で同期して保持できるという機能ですが、このデータの中にアプリケーションを含めることができます。
たとえばSilverlightで作成したアプリケーションをMeshの中に含め、Mesh内のデータを利用して動作させる、ということができます。
アプリケーションとデータが同期していますので、自分のPC上でアプリを動かす、Meshに追加しているノートPC上でもそのアプリが動く、そのうえ、マンガ喫茶のブラウザ上に表示したMeshの中でも同じアプリが動く、そしてそのデータは自動的に同期してくれる、といったものが作成できるようです。
また、このデータをLive IDを介して他の人と共有することもできるようですので作成したアプリをソーシャルな形で伝播させることができることになります。
○総括
開発者としては、アプリケーションを構築するうえで選択できる環境の幅が広がった、という感じを持っています。
ただ、いろんなものが一気にでてきていますので、作成するアプリケーションの要件にあわせてどの環境を選択すべきかを判断する目が必要になりそうです。
どの環境に対応するアプリケーションを構築するにしても、VisualStudioがあればよい、というのはうれしいところですね。
それも無償のExpress版でほとんど問題なさそうですし。
と、、、途中になってる資料、まだまだ勉強しないと。。。