Windows Azure 用アプリケーション開発 Step-by-Step チュートリアル ガイド第 3 章 Windows Azure 運用環境への展開 (3)目次3.5 Windows Azure コンピュート サービスへの移行 ‣ 3.5.1 インスタンス数の変更 3.6 アプリケーションの修正と Azure 環境への再配置 ‣ 3.6.1 開発用ファブリックと本番環境の相違点
3.5 Windows Azure コンピュート サービスへの移行最後に、コンピュート サービスを移行していきます。 基本的に、コンピュート サービスへアプリケーションを展開する場合には、まず Staging 環境にアプリケーションを配置して、最終動作確認を行ったのち、これを Production 環境と入れ替えます。まずは Staging 環境へのアプリケーションのアップロード方法について、以下に解説します。 3.5.1 インスタンス数の変更まず、サーバーへのアップロードを行う前に、いったん仮想マシンのインスタンス数を 1 に減らしておきます。後で解説しますが、コンピュート サービスでは、利用した仮想マシンの台数分だけ課金が発生します。このため、最初の段階ではインスタンス数を 1 に減らして配置を行い、動作確認が取れてからインスタンス数を増やすのが鉄則になります。 ページのトップへ 3.5.2 クラウド サービスのパッケージングと Azure 上への配置次にクラウド サービスを発行し、それを、Windows Azure 上へと配置する手順を説明します。
すると、クラウド サービス (Web アプリケーション) が発行され、Azure 上に配置されます。その配置の進行状況や作業のログは、Visual Studio から確認することができます。 ポータル サイトからも進行状況が変化していくのが確認できます。 Visual Studio からは [Complete] と表示されたら、ポータル サイトからはステータスが Ready となったら、Azure 上への配置が終了となります。 以下では、パッケージングと配置の処理で、具体的にはどのようなことが行われているか解説します。 A. パッケージングパッケージング処理により、Visual Studio から、以下 2 つのファイルが出力されます。
B. 配置配置では、以下 3 つの処理が行われます。
ページのトップへ 3.5.3 Windows Azure コンピュート サービスの動作確認しばらくすると、コンピュート サービスが起動します。Staging 環境では、配置されたアプリケーションにダミーの URL が付与されます。画面上にある URL にアクセスして、Web アプリケーションの動作を確認してください。 以上で、コンピュート サービス環境への Web アプリケーションの配置と、基本的な動作確認は終了です。しかしながら、このままではいくつかの問題があります。 A. 現在時刻の表示表示されている時刻が、現在時刻とずれてしまっています。これは、コンピュート サービスのコンピューターが、UTC 時刻 (グリニッジ標準時) で動作しているためです。UTC と東京時刻には 9 時間の時差があるため、表示時刻は 9 時間ずれて表示されてしまいます。 B. コントロールの英語表記GridView の [選択] ボタンが英語表記の "Select" となってしまっています。これは、コンピュート サービスのサーバー OS が、データ カルチャ、UI カルチャともに "en-us" (英語) で動作しているためです。このため、例えば int a = 30; というデータを通過表記すると、¥30 ではなく $30 となってしまいます。 このように、コンピュート サービスの本番環境は、ローカル コンピューターの開発用ファブリックとは、いくつか環境的に異なるところがあります。このため、実際に既存のアプリケーションを Azure 上に移植する場合、あるいは新規に Azure 用のアプリケーションを開発する場合には、このような環境の違い (特に国際化対応の問題) を意識する必要があります。 ページのトップへ 3.6 アプリケーションの修正と Azure 環境への再配置それでは、実際にアプリケーションを修正し、コンピュート サービスの環境に適応させてみることにします。 3.6.1 開発用ファブリックと本番環境の相違点開発用ファブリックと Azure 本番環境では様々な相違点があります。Azure 本番環境で問題となりやすい制限事項としては、以下のようなものがあります。 この中でも、国際化対応に関連する問題は、よくひっかかりやすいポイントになります。例えば、以下のような簡単な処理でも、Azure 環境では、開発環境とは異なる動きをします。 ページのトップへ 3.6.2 アプリケーションの修正これらについては、基本的に以下の対策を行うとよいでしょう。 A. web.config ファイルへの、データ カルチャと UI カルチャの修正設定の追加.NET ランタイムは、内部的に、データの国際化対応と UI メッセージの国際化対応の 2 つの機能を持っています。これらは、web.config ファイルで切り替えることが可能です。日本語圏と同じように動作させたければ、以下のように指定を行います。
B. アプリケーション中の時刻処理を、タイム ゾーンを意識したコードに変更DateTime.Now プロパティによって取得される時刻は、Azure 環境では UTC 時刻となります。このため、日本の時刻を取得したい場合には、時差補正を行う必要があります。具体的には、以下のようにコードを修正してください。
ページのトップへ 3.6.3 アップグレードこれらの修正を加えたら、Azure 上の Web アプリケーションをアップグレードします。アップグレードについては Visual Studio 2010 + Azure Tools 1.2 から直接操作できないため、Visual Studio からパッケージング作業を行い、ポータル サイトからアップグレードします。以下の手順でアップグレードしてください。
ページのトップへ 3.6.4 解決されない問題以上の作業を行った上で、再度アプリケーションの動作を確認すると、以下のようになります。
前者については問題ないと思いますが、後者については疑問を覚える方もいると思います。少し補足すると、一般に、GridView の選択ボタンの表記文字や、例外に含まれる詳細メッセージなどには、.NET Framework ランタイムの中に含まれる、日本語リソース ファイルが使われています。しかし、現在のコンピュート サービスの環境には、日本語のリソース ファイルが含まれていません。<globalization> タグで uiCulture を "ja-jp" にしておくと、本来は、日本語リソース ファイルが利用されるようになります。しかし、そもそもこのリソース ファイルが Azure 上にインストールされていないため、英語メッセージになってしまう、ということになります。 このため、今回の GridView の選択ボタンのようなものを日本語表記にしたい場合には、以下のように対応する必要があります。
少し面倒な作業ですが、現在の Azure プラットフォームの制約として覚えておく必要があります。 ページのトップへ 3.6.5 構成設定の変更次に、ポータル サイトから構成設定を変更してみます。
しばらくすると、インスタンス数が 3 になります。
ページのトップへ 3.6.6 本番環境への展開最後に、いよいよこのアプリケーションを本番環境 ("Production") へと展開しましょう。このためには、ポータル サイトのスワップ機能 (入れ替え機能) を利用します。この画面の真ん中のボタンを押すと、2 つの環境が入れ替わり、運用環境にアプリケーションが配置されます。Staging 環境ではダミーの URL が付与されていますが、Production 環境に移すことにより、通常の URL (http://<アカウント名>.cloudapp.net) アドレスでアクセスすることができるようになります。 Staging 環境と Production 環境の入れ替えは、ロード バランサーのみで行われるため、すぐに終了します。 作業が終了したら、運用環境用の URL (http://<アカウント名>.cloudapp.net) にアクセスを行い、Web アプリケーションが動作することを確認してください。 ページのトップへ 3.6.7 サービスの停止アプリケーションの動作を確認し、テストが完了したら、サービスを停止します。具体的には、Windows Azure ポータル サイトの画面内にて、以下の作業を行ってください。
以上の作業により、コンピュート サービスが停止し、コンピュート サービスの利用にかかわる課金が停止します。注意すべき点として、アプリケーションを "Suspend" させるだけではコンピュート サービスの課金が停止しません。これは、Suspend 状態であっても、仮想マシンがリソースを占有し続けているためです。課金を停止させるために、利用が終了したら必ずサービスを "Delete" するようにしてください。 以上で、Windows Azure 上でのアプリケーション開発の演習は終了です。 ページのトップへ 3.6.8 アカウントの削除Windows Azure のアカウントが今後もう必要ない、ということであれば、Windows Azure アカウントの削除を行ってください。アカウントを削除するには、Windows Azure のカスタマー サポートに電話し、削除してもらいます。 なお、課金状況は MOCP サイト (Microsoft Online Services Customer Portal サイト) から確認できます。課金情報はリアルタイムではなく遅れがあるため、注意してください。
|
ページのトップへ