Part 1. Web サイトサービス概要
まず Part 1. のエントリでは、軽量ホスティングサービスである Web サイトサービスの概要について解説したいと思います。
- Web サイトサービスとは何か
- 基本的な使い方
- Web サイトサービスの特徴
- 実際の利用モデル
[Web サイトサービスとは何か]
簡単に言うと、Web サイトサービスは、ASP.NET や PHP で作成された Web アプリケーションを簡単にアップロードして実行することができる、レンタルサーバサービスです。おおざっぱな動きを下図に示します(※ 図をわかりやすくするため、Web サーバがあたかも物理マシンであるように描いていますが、実際には仮想マシンが利用されています)。
Web サイトサービスでは、予め、Web サーバがプールされて用意されています。ここに、ユーザがアプリケーションをアップロードすると、自動的に空いている Web サーバに配置され、これが実行される、という形になります。アップロードしたアプリケーションには、https://○○○.azurewebsites.net/ というアドレスが付与され、これで Web アプリケーションにアクセスすることができるようになります。
この Web サイトサービスは、よくある Linux のレンタルサーバサービスと同様に、1 つの仮想マシンを複数のユーザ(アプリケーション)で共有して使います(もちろん、各アプリケーションは論理的に隔離されているため、互いにお互いを見ることはできません)。このため、使い勝手としては Linux のレンタルサーバサービスに近い手軽さがあるのですが、非常に面白いのは、そうでありながら、複数のサーバを使ってスケールアウトすることができる、という特徴があります。
[基本的な使い方]
Web サイトサービスの基本的な使い方は、以下の通りです。(ざっと書きますが、簡単なのでやってみればすぐにわかるはず。)
① Windows Azure 管理サイトにて、空の Web サイトを作成します。(https://manage.windowsazure.com/)
② Windows Azure 管理サイトから、発行プロファイルを取得します。(“Download publish profile” をクリックして入手)
③ Visual Studio 上で Web アプリケーションを開発します。( .NET Framework 2.0~4.0 を使って Web アプリケーションを開発。現状では 4.5 は非サポートですが、いずれサポートされるでしょう。)
④ ②を Visual Studio に読み込ませ、アプリを Azure に発行します。( VS 2012 であればそのまま読み込ませることが可能、 VS 2010 であればファイル内の情報を手作業で転記する必要があります。詳細は後述。)
⑤ ブラウザから Azure 上に展開されたアプリを呼び出します。(https://〇〇〇.azurewebsites.net/ にアクセスし、アプリを呼び出す)
たったこれだけの作業で、Azure 上(=インターネット上)にアプリケーションをアップロードできてしまいます。実際にやってみるとわかるのですが、Visual Studio から Azure Web サイトへのアプリケーションのアップロードはせいぜい数十秒程度で完了するので、非常に手軽にアプリケーションを展開できてしまいます。Windows Azure の他のレンタルサーバサービスである、クラウドサービス(コンピュートサービス)や IaaS 仮想マシンサービスでは、1 台のサーバをセットアップするのに軽く 10 分ぐらいはかかるのですが、これと比べると予備知識も不要で、非常に手軽に Azure が利用できることがわかります。(というかマジで一度使ってみてください。こんな単純でいいのか?!と言いたくなります;。)
[Web サイトサービスの特徴]
この Web サイトサービスの特徴をまとめると、以下のようになります。
- Web アプリケーションの配置が簡単かつ高速
Web Deploy と呼ばれる仕組みにより、Visual Studio から数クリックで容易にアップロードができます。
さらに FTP, TFS, Git などによるアプリケーションの配置が可能。 - 容易なスケール調整が可能
利用する Web サーバ台数を、1~3 台まで調整することができます。
また、 他ユーザとの共用型配置がイヤなら、サーバ占有型での配置もできます(ただしその分コストはかかります)。 - オープンソース系のランタイムやツールも幅広くサポート
PHP や Node.js での開発もサポートしており、 無償 Web 開発環境 WebMatrix での開発もサポートしています。 - Web ギャラリー機能
Web サイトに展開するアプリケーションが多数用意されてます。 これにより、Blog サイトを簡単に立ち上げたりすることも可能です。
もちろん、デメリットがないわけではありません。たとえば、Windows Azure のレンタルサーバサービスである Web サイトサービスと、クラウドサービス(コンピュートサービス)を比較してみると、次のような違いがあります。
クラウドサービス(コンピュートサービス)については、以前こちらのエントリに詳しく書いたのでそちらをご覧いただければよいかと思いますが、例えばクラウドサービスでは可能だった、追加のソフトウェアのインストール、ステージング環境を利用した VIP スワップ、バッチアプリケーションを動作させるためのワーカーロールサーバなどの利用はできません。このため、エンタープライズアプリケーションであればやはりクラウドサービスを利用する、ということになるのでしょうが、実際のクラウドの利用を見ると、
- 短期間だけちょろっと動作させなければならない簡単なアプリを、素早く作って素早くアップロードして素早く立ち上げる。
というニーズは非常に根強くあります。このようなケースだと、アプリケーションは比較的簡単なものであることが多く、かつ安価に素早くやりたいはず。このような場合にはまさにうってつけのサービスである、と言えます。
[実際の利用モデル]
実際に Web サイトサービスを利用する場合には、多くのケースで、SQL データベースサービス(SQL Azure)と組み合わせる形になるでしょう。これを使うと、Web サイトサービスが背後で利用する SQL Server データベースを簡単に用意することができます。(SQL データベースサービス(SQL Azure)に関しても、以前まとめたこちらのエントリがあるので、そちらをご参照ください。)
この Web サイトサービスと SQL データベースを組み合わせれば、かなり広範なアプリケーションをインターネット上に立ち上げることが可能です。下図は代表的な展開パターンですが、Web アプリ、RIA アプリ、スマートクライアントなどはもちろん可能ですし、Windows 8 やスマートフォンなどをクライアントとした際の、サーバ側サービスをこの Web サイトサービスで開発することも当然可能です。
(参考&注意) 実際に上図のような Web サイトサービス+SQL データベースサービスの組み合わせを利用する場合には、これらのサービスは必ず同一のデータセンタを利用してください。別々のデータセンタに配置してしまうと、Web サイトと SQL データベースの間の通信に対して課金が発生する上に、パフォーマンスも悪くなります。
というわけで、Web サイトサービスは非常に手軽に利用できる、インターネット上のレンタルサーバサービスであることを解説したわけですが、これだけですと利用するのには少し不安、という方も多いと思います。次のエントリでは、Web サイトの内部動作アーキテクチャをもう少し掘り下げてみたいと思います。