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

MSDN の Windows Azure 実装ガイド、リニューアルしました!

というわけで本当にまた久しぶりなエントリなわけですが;、なぜこれほどまでに忙しいのかはまた今度改めて書くことにしまして、まずはひとつご報告を。社内関連部署の多大なる協力によって、昨年公開した Windows Azure 実装ガイドを、最新情報にリニューアルして公開することができました!(嬉) Visual Studio Workshop #451 Windows Azure 上での Web アプリケーション開発基礎 こちらのリンクから辿ってダウンロードしてください。  なんとページ数は前回から大幅増量の 600 ページ!(前回が 324 ページなので実に倍増……多すぎます;orz) マイクロソフトのコンサルタント陣が、実際の Windows Azure 案件でお客様から受けたツッコミ内容や、失敗なども含めて得られたノウハウ情報をかたっぱしから盛り込んで加筆修正したものになります。 以前のバージョンでも十二分に世界レベルで戦えたと思うのですが、今回のバージョンは他国のコンテンツの追随を許さない内容になっています^^。しかも内容も最新情報ベースでまとめていますので、VM Role や Traffic Manager などについても詳細に説明してます。ぜひ、現場の皆様でご活用ください! なお、こちらのマテリアルの利用にあたっては、以下の点にご注意いただければと思います。(お約束^^) このマテリアルは、あくまで現場の開発者の皆様の、セルフトレーニング(勉強)用にご提供するものです。複製、転載、商用利用はご遠慮下さるよう、お願いいたします。(例:この内容を社内で製本して配布するとか、このマテリアルを使って社内向けトレーニングを実施するとか、設計書や社内資料、お客様向け資料に引用したりコピペするとかしてはいけません。) ◦内容については、私が独自に調査しているものを多分に含んでおります。技術情報に関しては誤りがないように全力で調査をしていますが、万が一、間違いがあった場合には、こちらの blog などで報告をしていきたいと思います。 Azure のアップデートなどによりこちらの情報が古くなる可能性もありますが、現時点ではマテリアルの更新について行う予定はありません。申し訳ありませんが、差分情報については各自で調査をお願いできればと思います。(基本はこれからもそんなに変わらないと思いますが。) 開発秘話(?)については、以前の blog エントリもぜひお読みになっていただければ嬉しいです。 なお、Windows Azure 関連ではもうひとつ、そのうちご報告できる内容があるかも? なので、またそのときにでも blog エントリを書こうと思います。なにはともあれ、600 ページという膨大な量のコンテンツで恐縮ですが、パラパラとめくって Windows Azure の世界をお楽しみください!^^

0

SQL Azure データベースの課金について

※ (追加情報 2011/07/25) SQL Azure データベースの課金に関して、米国本社の担当者も交え、最終的な確認を行いました。結論としては、定義上の最大容量(MAXSIZE)ではなく、実際のデータ容量(Current Size)に基づく課金が行われるという、当初通りの情報が正しい、ということになりました。弊社内の一部の担当者が誤解しており、社内で情報が錯綜したのが誤りの原因でした。謹んでお詫びすると共に、修正した情報を以下に掲載します。なお、本件については SQL Azure の課金に関する FAQ として、近日中に Windows Azure のホームページに掲載される予定です。そちらも併せてご確認ください。 [SQL Azure の課金に関する基本的なポイント] SQL Azure の課金は、Web Edition と Business Edition とで分かれている。 例えば、Business Edition を含んだコミットメントプランを購入したサブスクリプションで、Web Edition データベースを利用すると、コミットメントプランに含まれないデータベースを使ったものとみなされ、従量課金されてしまう。 データベースは、実際のデータベースサイズ(Current Size)に基づき、日割りで課金される。 料金表は月あたりの金額で書かれているが、課金は日割りで行われる。(日割り計算の詳細なロジックは後述) master データベース、temp データベースなどは課金対象外。 ユーザデータベースのみが課金対象になる。 データ量は、テーブル内のデータの量だけでなく、インデックスデータの量なども含まれるが、ログデータは含まれない。(簡単に言えば .mdf データファイルの容量であり、.ldf ログファイルの容量は含まれない) [具体例その1] 上記のようにデータが含まれている場合の課金は、以下のようになります。 [課金の日割り計算に関するキーポイント] 従量課金の場合 その日のピークデータ量(Current Size)に基づいて、日割りで課金される。(データベース定義上のMAXSIZEではない) どの月であっても、常に”31”で日割り計算が行われる。(30日以下の月であっても、31で日割り計算が行われる) コミットメントプランの場合 基本的には、従量課金と同じ方式で計算が行われる。 しかし、その月の利用量が購入ユニット数よりも少なかった場合には、購入ユニット数まで繰り上げが行われる。 この繰り上げ計算は「月」単位で行われる。 [具体例その2.] 以下のような場合を考えてみます。(※…

0

東日本巨大地震(東北地方太平洋沖地震)

東北地方太平洋沖地震、時間が経つにつれて目を覆うばかりの甚大な被害が明らかになりつつあります。被災地の皆様には本当にお悔み申し上げると共に、亡くなられた方々のご冥福と、皆様のご無事と安全を本当にお祈りしております。社内でも何か手伝えることはないかという動きが出ておりますが、このエントリでは Azure 関連の各種の動きをまとめて随時お伝えしようと思います。 ミラーサイト構築支援 (New! 2011/03/18) 今回の地震に関連して、一部の Web サイトが高負荷でダウンする、という状況が発生しています。この問題を解決するため、Azure 上にミラーサイトを構築する(技術的には Azure 上にリバースプロキシキャッシュを構築する)支援をマイクロソフト側で始めています。お手を煩わせないようにするため、info311a@microsoft.com (電子メール) までメールで連絡をいただければ、構築そのものをマイクロソフト側で実施します。(← この件は私や MCS のコンサルタントも技術協力・構築協力しています。) 構築作業費用はもちろんかかりませんので、まずはとにかくご連絡を。福島県などの Web サイトがすでにこれを利用しています。概念的には下図のようなキャッシュサーバを構築する支援です。 Windows Azure Platform 無料パス クレジットカードの登録なしに、90 日間分の Azure (S インスタンス× 3、1GB SQL Azure Web Edition × 2)が利用できるというものです。様々なサイト立ち上げにご利用ください。アクティベーション作業も早急に行われているようです。 http://go.microsoft.com/?linkid=9766038 オープンソースソフトウェアの Azure 上へのインストール方法のまとめ 上記で立ち上げたサイトへオープンソースソフトウェア(WordPress, Movable Type, PukiWiki など)をインストールする方法をまとめたサイトです。インストールマニアクスに参加された方々により取りまとめられた情報です。(PHP に関しては、こちらが詳しいです。) http://maniax.jp/installmaniax/4/report/docs Azure Blob ストレージを簡易 Web サイトとして利用する 静的なファイル群から構成される情報提供サイトであれば、以下の方法によりミラーサイトを簡単に Azure 上に立ち上げることができます。CDN…

0

エンジニア向けの Azure 学習おすすめプログラム

さて、先週 Azure の実装ガイドラインを Web で公開したわけですが、おかげさまでかなりのブックマークをいただいたり、資料のダウンロードをしていただけた様子。しかし、そもそも Azure を全く触ったことがない、という方には、あちらの資料ではややハードルが高いのも実際のところ。また、Azure に関しては情報が散逸しているので、「どこから手をつけていいのかわからない」という方も多いと思います。一昨日に、MCS の若手メンバの一人である増田さんが書いてくださった、初学者向けのAzure アプリ開発の Step-by-Step ガイドも公開されましたので、今回は、「今から Azure を勉強したい、触り始めたい」と思っているエンジニアの方々向けに、(激しく手前味噌ですが)学習用のロードマップ情報をお伝えしようと思います。これらを使えば、最短距離で Azure をかなりハイレベルに利用できるようになると思います。こちらのページをぜひ、Azure をこれから学習したい!という方にお勧めしてください。 [Azure を全く知らない方向け] マイクロソフトのクラウドコンピューティング “S+S” 概要 マイクロソフトのクラウドコンピューティングの全体像を 15 分でさらっと理解するためのコンテンツ。マイクロソフトのクラウドコンピューティング戦略の全体像や、マイクロソフトのクラウドサービスのブランディング(BPOS, Live, Azure)の位置づけなどを理解することができます。まずはここから。 Windows Azure Platform 概要 Windows Azure の主要な構成要素がどのようなものかを、「超ざっくりと」説明した資料。コンピュートサービス、SQL Azure、ストレージサービスの 3 つをざっくりと説明しています。 既存業務システムの Windows Azure への移行 既存業務システムを Windows Azure へ移行する際に、「どんなシステムがクラウド(Azure)に向いているのか?」「移行する場合に、特にどのへんに考え方のギャップが生じるのか?」を説明したもの。TechEd 2010 のセッション(70 分)です。(同じ場所で他にも良いコンテンツが公開されているのでそちらもどうぞ。) [Azure を全く触ったことがない方向け] Windows Azure 用アプリケーション開発 Step-by-Step チュートリアルガイド…

1

Windows Azure 実装ガイド、公開しました!

※ 2011/10/31 追記:バージョンアップ版を公開しました。こちらのエントリもご参照ください。 というわけで皆様、大変ご無沙汰しております;。1 月に Windows Azure のエントリを書いて以来、Azure 案件で忙しい日々が続いており、とても blog どころではなかった....というのが正直なところ;。現在はホントに Azure 一色な日々を送っているのですが、おかげさまでついに! というかようやく! Windows Azure の実装ガイドラインとなるコンテンツを公開することができました!(嬉) Visual Studio Workshop #451 Windows Azure 上での Web アプリケーション開発基礎 こちらのリンクから辿ってダウンロードしてください。  TechEd Keynote セッションなどでちらっとご紹介して以来、本当に長らくお待たせしてしまったのですが、マイクロソフト社内の様々な関係者のご協力でついに公開することができました! この場を借りてお礼申し上げます。本当にありがとうございました。 こちらのスライドは、ppt ベースで 324 ページから構成されるもので、現時点での Azure 開発用マテリアルとしては、おそらく全世界レベルで見ても最も情報がまとまっているコンテンツではないかと思います。このマテリアルですべての開発の疑問が解決するわけではないと思いますが、たいていの質問には答えられると思います。 なお、こちらのマテリアルの利用にあたっては、以下の点にご注意いただければと思います。 このマテリアルは、あくまで現場の開発者の皆様の、セルフトレーニング(勉強)用にご提供するものです。複製、転載、商用利用はご遠慮下さるよう、お願いいたします。(例:この内容を社内で製本して配布するとか、このマテリアルを使って社内向けトレーニングを実施するとか、設計書や社内資料、お客様向け資料に引用したりコピペするとかしてはいけません。) 内容については、私が独自に調査しているものを多分に含んでおります。技術情報に関しては誤りがないように全力で調査をしていますが、万が一、間違いがあった場合には、こちらの blog などで報告をしていきたいと思います。 Azure のアップデートなどによりこちらの情報が古くなる可能性もありますが、現時点ではマテリアルの更新について行う予定はありません。申し訳ありませんが、差分情報については各自で調査をお願いできればと思います。(基本はこれからもそんなに変わらないと思いますが。) Windows Azure 開発に携わっているすべての方のお役にたてるマテリアルだと思いますので、ぜひこのコンテンツを学習して、Azure 開発を進めていただければと思います。(というかこれだけの情報を公開している PaaS サービスは他にはないんじゃないかと思う……^^) と、これだけでは何ですので、ここでは少し裏話を…… [このマテリアルはいったい何か?] 今回、公開したこの ppt マテリアルは、MCS(マイクロソフトコンサルティングサービス)が企業向けに提供している有償…

1

Part 3. Hello World, Windows Azure アプリケーションの開発 その 4

※ 本エントリは その 3 の続きです。(エントリが長すぎて投稿できなかったため分割しています) [アプリケーションの修正と Azure 環境への再配置(アップグレード)] さて、開発用ファブリックと Azure 本番環境では様々な相違点があります。Azure 本番環境で問題となりやすい制限事項としては、以下のようなものがあります。 この中でも、国際化対応に関連する問題はよくひっかかりやすいポイントになります。例えば、以下のような簡単な処理でも、Windows Azure 環境では、開発環境とは異なる動きをすることになります。 これらについては、基本的に以下の対策を行うとよいでしょう。 web.config ファイルに、データカルチャと UI カルチャを変更するための設定を追加する。 アプリケーションの中の時刻処理を、タイムゾーンを意識したコードに変更する。 1: <configuration> 2: <system.web> 3: <globalization culture="ja-jp" uiCulture="ja-jp" /> 4: </system.web> 5: </configuration> 1: // 従来であれば以下のように実装していたところを… 2: // DateTime now = DateTime.Now; 3: // 以下のように実装する 4: DateTime now = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now.ToUniversalTime(), "Tokyo Standard Time"); では実際に、これらの修正を加えて…

0