Part 3. Web サイトサービスアプリケーション開発上の注意点

さて、ここまで Web サイトサービスの概要やその内部動作アーキテクチャについて解説してきたわけですが、引き続き今度は、このサービス上に乗せるアプリケーションを作成する場合の注意点についていくつか解説したいと思います。 ロードバランサとセッションプロバイダ ワーカープロセスの特徴 利用できない代表的な機能 国際化対応 アプリケーションの配置方法 アプリケーションの運用監視方法 [ロードバランサとセッションプロバイダ] 先に述べたように、Web サイトサービスでは、ARR リバースプロキシ層のおかげで、セッションアフィニティ機能つきの負荷分散が行われます。結果として、セッション情報をメモリ上に保有しても、通常は問題なく動作するのですが、Web サーバが何らかの理由でダウンすると、セッション情報が失われてしまいます。このため、Web サーバをクラスタリングする場合には、仮にセッションアフィニティがあったとしても、下図のようにセッション情報をバックエンドストレージに保存することが望ましいです。 具体的には、以下の 3 つの作業を実施します。 ① セッション情報保存用の SQL データベースを作成する ② ASP.NET Universal Provider を入手する ③ web.config に構成設定を行う ① セッション情報保存用の SQL データベース(SQL Azure)を作成する まずは管理ポータルサイトから、新規に SQL データベースを作成します。(Web サイトサービスからリンクリソースとして結びつけておくと管理がラクになりますが、必須ではないので、単独でふつーに SQL データベースを作成していただいて構いません。) 作成する場合には Web サイトサービスで利用しているのと同一のデータセンタ(Region)を指定してください。作成後、Show Connection Strings を押下し、ADO.NET 用の接続文字列を入手しておきます。 ② ASP.NET Universal Provider を入手する .NET Framework…

0

Part 2. Web サイトサービスの内部動作アーキテクチャ

Part 1. のエントリでは、Web サイトサービスがどのようなサービスであるかについて解説しました。引き続き本エントリでは、この Web サイトサービスの内部動作アーキテクチャについて解説したいと思います。 内部動作アーキテクチャ 2 種類の配置モデルと 3 種類の課金モデル [内部動作アーキテクチャ] Web サイトサービスを理解する上で最も重要なのは、どのような形でアプリケーションが物理インフラ上に配置されるのか、という点です。要点としては以下の 3 つがあります。 複数のユーザが、複数のアプリケーションを配置できるが、各アプリケーションは、同一仮想マシン内で論理的に隔離される。 インターネットからの HTTP リクエストは、セッションアフィニティつきで自動的に負荷分散される。 アプリケーションが複数マシンに展開されていても、実際のコンテンツは物理的に共有されている。 これらについて順に解説していきます。 ① 複数のユーザが、複数のアプリケーションを配置できるが、各アプリケーションは、同一仮想マシン内で論理的に隔離される。 Windows Azure では、Web サイトサービス用にサーバクラスタを保有しており、ここに、複数のユーザが、複数のアプリケーションをアップロードすることができます(※ 共有型の場合、占有型については後述)。各アプリケーションは URL で識別され、フロントンエンドにあるロードバランサが、実際にアプリケーションの乗っている Web サーバにリクエストを転送する形で処理を行います。 この際、Web サイトサービスでは、アプリケーション隔離のための仮想マシン分離は行われていません。下図は、Windows Azure のレンタルサーバサービスである、Web サイトサービスと、クラウドサービス(コンピュートサービス)とを比較したイラストです。後者のクラウドサービスでは、各ユーザのアプリケーションは別々の仮想マシンを利用することになるため、分離性は高くなりますが、その一方で、アプリケーションの集積度を高められないため、コストがどうしても割高になります(1CPU あたりざっくり \8,000/月 ぐらい)。しかし、Web サイトサービスは、ひとつの仮想マシンを複数ユーザが共用するため、より安価なサービス提供が可能になります(最も安価なものはフリー、その次がざっくり \1,500/月ぐらい)。 (参考) なお、Web サイトサービスでは仮想マシン分離は行われていませんが、だからといって、自分のアプリが隣のアプリから丸見えになってしまう、なんていうことはありません。仮想マシン分離は行われていませんが、かわりに Drawbridge と呼ばれる技術によりアプリケーション分離が行われています。この Drawbridge という技術は、Microsoft Research で開発されているアプリケーションのサンドボックス化による仮想化技術で、仮想マシンよりも小さいプロセスの単位での隔離機能を提供します。アプリケーションが Full Trust 権限を持ちながらも、他のアプリと隔離された状態で動作しているのはこの仕組みによるもので、これにより、より高い集積度でサービスを動作させることができ、結果的により安価なサービス提供ができるようになっています。…

1

Part 1. Web サイトサービス概要

まず Part 1. のエントリでは、軽量ホスティングサービスである Web サイトサービスの概要について解説したいと思います。 Web サイトサービスとは何か 基本的な使い方 Web サイトサービスの特徴 実際の利用モデル [Web サイトサービスとは何か] 簡単に言うと、Web サイトサービスは、ASP.NET や PHP で作成された Web アプリケーションを簡単にアップロードして実行することができる、レンタルサーバサービスです。おおざっぱな動きを下図に示します(※ 図をわかりやすくするため、Web サーバがあたかも物理マシンであるように描いていますが、実際には仮想マシンが利用されています)。 Web サイトサービスでは、予め、Web サーバがプールされて用意されています。ここに、ユーザがアプリケーションをアップロードすると、自動的に空いている Web サーバに配置され、これが実行される、という形になります。アップロードしたアプリケーションには、http://○○○.azurewebsites.net/ というアドレスが付与され、これで Web アプリケーションにアクセスすることができるようになります。 この Web サイトサービスは、よくある Linux のレンタルサーバサービスと同様に、1 つの仮想マシンを複数のユーザ(アプリケーション)で共有して使います(もちろん、各アプリケーションは論理的に隔離されているため、互いにお互いを見ることはできません)。このため、使い勝手としては Linux のレンタルサーバサービスに近い手軽さがあるのですが、非常に面白いのは、そうでありながら、複数のサーバを使ってスケールアウトすることができる、という特徴があります。 [基本的な使い方] Web サイトサービスの基本的な使い方は、以下の通りです。(ざっと書きますが、簡単なのでやってみればすぐにわかるはず。) ① Windows Azure 管理サイトにて、空の Web サイトを作成します。(https://manage.windowsazure.com/) ② Windows Azure 管理サイトから、発行プロファイルを取得します。(“Download publish profile” をクリックして入手)…

0

Windows Azure Web サイトサービス

さてさて、あいかわらず blog をほったらかしにしてかなりの時間が開いてしまったのですが;、最近はというと、Azure いじったり TFS いじったりと、技術系のことをいろいろと調べていたりします。昨年一年間、開発系コンサルタントのマネージャをやっていたのですが、今年の 7 月に再び現場に復帰して、最新の技術をいろいろと研究中。テーマ的には Windows Azure、TFS(ALM)、Windows 8 あたりが大きかったりします。やっぱり技術は楽しい! と思いながらいろいろと調べているのですが、その中でもひときわシビれたテクノロジーが、今回エントリで取り上げようとしている “Windows Azure Web サイトサービス” だったりします。 ご存じの通り、Windows Azure は今年の 6 月に “Spring Update” と呼ばれる大規模 Update が行われ、IaaS 仮想マシンサービスを始めとする大型機能拡張が実施されました。この機能拡張の中では、とにかく IaaS 仮想マシンサービスと仮想ネットワーク機能がお客様の目を引いていて、確かにこれらの機能も非常によくできてはいるのですが、エンジニア目線で一番シビれたのはどちらかというと、こちらの Web サイトサービスの方でした。 この Web サイトサービスは、ほとんど Windows Azure の知識なしで、クラウド環境に ASP.NET のアプリケーションをアップロードして展開できるレンタルサーバサービスで、小規模な Web アプリケーションであればほとんどのものがこれでカバーできてしまうであろう、トンデモサービスだったりします。しかもマシン共有型サービスなので、他のレンタルサーバサービスに比べて圧倒的に安い、という特徴もあります。が、このサービスにあまり着目している人がいないせいか、まとまった情報があまりない様子。なので、今回軽くエントリで取り上げてみようと思った次第です。 目安としては、だいたい Web サーバ数台程度で動かせるような Web アプリを作っているような方々であれば、この Azure Web サイトサービスは一考の余地があります。何ができて何ができないのか、そうした制約事項などについても、本エントリでざくっとまとめてみたいと思います。 Part 1. Web サイトサービス概要…

0