環境 : Visual Studio 2012
こんにちは。
Azure 入門コード集 の補足として記載します。
Azure の 3 つの選択肢 ~
Web アプリ (Web App), クラウド サービス (Cloud Services), 仮想マシン (Virtual Machine)
Microsoft Azure では、従来、Azure Cloud Services (Hosted Service) という PaaS による展開のみがサポートされていましたが、アプリケーションの性質や用途にあわせて、下記の 3 つの展開方法が選択できるようになりました。
上に行くほどクラウドとしての抽象度が高く、下に行くほど物理的な構成を意識した展開方法になります。(下に行くほど自由度が高くなりますが、その分、開発者側で管理すべきことも多くなります。)
Azure Web App (旧 Azure WebSite) | Web アプリケーション (コード) の「配置」(FTP、Git、TFS などのサーバー) と「実行」 (ASP.NET、Java、PHP、Node.js、Python の実行エンジン) のためのシンプルな環境 (サーバーや実行エンジン) を提供します。(Django など、アプリケーション フレームワークと組み合わせた開発も可能です。) 下記の Cloud Services と異なり、クラウド独自の構成ファイルや設定は最小限で済み、学習もしやすいですが、そのトレード オフとして、「配置」と「実行」以外の細かな設定はむずかしくなります。(例えば、OS へのソフトウェアの事前インストールなどは不可能です。) |
Azure Cloud Service | Azure Web App と同様、PaaS (Platform as a Service) の位置づけですが、より物理構成に近いレイヤーを扱います。例えば、「インスタンス」という抽象化された形でマシンそのものを提供するため、Remote Desktop によるログインや、インスタンスに独自のソフトウェアを適用 (インストール) することなども可能です。また、Azure Web App と異なり、Web アプリケーション以外のバックエンド サービスの配置・実行も可能です。下記の IaaS と異なり、例えば、パッチの適用やそれに伴うマシンの再起動、インスタンスの複製処理などは、ブラックボックス化されているか、あるいは、専用のパラメーターを設定することで制御します。 |
Azure Virtual Machine | より物理構成に近い IaaS (Infrastructure as a Service) の位置づけのサービスであり、OS そのものの構成変更 (例えば、Active Directory のインストールによるドメイン コントローラーへの昇格、など) をはじめとする さらに低レイヤーの細かな制御が可能です。マシン (Virtual Machine) そのものを管理する概念であり、オンプレミス (自社設置) のサーバーと類似の構成を扱うため、これまでのコンピューター システムに関する知識やソフトウェアの多くもそのまま適用できるなどのメリットがあります。しかし、そのトレードオフとして、必要な環境のインストールや、負荷分散に伴うモジュールの複製やそれらの同期など、クラウドのベースとなるいくつかの基本的なタスクについて開発者 (あるいは、運用者) の責任範囲で細かく構成する必要があります。 Hyper-V の技術をバックボーンとしているため、UNIX ベースの OS (オペレーティング・システム) も扱えます。 |
Web App の作成
では、.NET のアプリケーションを例に、Azure Web App (旧 Azure WebSite) の利用方法を簡単に見ていきましょう。
まず、Azure Portal にログイン (サインイン) し、左下の [+ 新規] をクリックして、[コンピューティング] – [Web サイト] – [簡易作成] を選択します。
下図の通り、ドメイン名を入力するテキスト ボックスが表示されるので、一意な名前を設定して完了します。
以上で、Azure Web App の作成は完了です。
Portal 上で作成された Web App をクリックすると、ダッシュボードが表示され、その画面で、使用するインスタンス数 (負荷分散する仮想インスタンスの数)、監視項目の追加、実行エンジンのバージョン変更など、基本的な操作と確認がおこなえます。
アプリケーションの構築
Azure Web App に配置するプロジェクトは、通常の Web アプリケーションと同じプロジェクトで構いません。
Visual Studio 2012 を開いて、今回は、[ASP.NET MVC 4 Web アプリケーション] を新規作成してみましょう。
以降、普通に Web アプリケーションをプログラミングしていきますが、今回は、プロジェクト作成時に表示されるウィザードで、下図の通り [インターネット アプリケーション] を選択して、既にプログラム コードの実装された Web アプリケーションを構築します。(このため、今回、プログラム コードは、何も記述しません。以上で完了です。)
配置 (展開)
作成したプロジェクトを Azure Web App に発行する方法も、FTP を使ったアップロード、Web 配置 (Web Deployment) など、通常の Web サーバー (IIS) への発行方法と同様です。(ftp などにおけるログイン ID は、[web app の名前][ユーザー ID] です。パスワードは、[Reset your deployment credentials] をクリックして設定してください。その他の配置方法として、Git による配置、TFS による配置もサポートしています。)
今回は、Web 配置 (Web Deployment) を使った配置方法を解説します。
Azure Web App では、Visual Studio で使用する発行プロファイル (下記の「補足」を参照) の自動生成をサポートしています。
補足 : Visual Studio では、複数の場所に発行をおこなったり、構成を変えて発行をおこなう場合などに備え、一度発行をおこなうと、その発行の設定情報を XML ファイルとしてプロジェクトに保存し、次回から、このファイルを使って発行をおこなうことで、入力を簡略化できるようになっています。(このファイルは、通常、プロジェクトの PropertiesPublishProfiles フォルダーに配置されます。)
Web サイトからダウンロードするファイル (後述) は、この設定のためのファイルです。
上記で作成した Web サイトのダッシュボードを表示し、画面右の [発行プロファイルのダウンロード] をクリックします。
プロファイル (.publishsettings ファイル) のダウンロードが開始されるので、適当な場所に保存します。
Visual Studio のソリューション エクスプローラーで、上記で作成したプロジェクトをマウスで右クリックして、[発行] メニューを選択します。
表示されるウィザードで、[インポート] (Import) ボタンをクリックして、上記でダウンロードしたプロファイル (.publishsettings ファイル) を選択します。以降のウィザードでは何も変更せず発行します。
注意 : Web Deployment では、通常の http ポート (http の 80 番) 以外の接続を使用します。このため、企業の Proxy や Firewall 設定などによって、発行が失敗する場合があるので注意してください。
ブラウザーを使って Url に接続すると、Web アプリケーションが正しく表示されることが確認できます。
それでも、「同じ」ではない !
上述の通り、インターネット上に場所が提供されているという点を除き、一般の IIS (Internet Information Services) を使用した開発・展開と何ら変わらないシンプルな環境を提供しますが、オペレーティング システム (OS) や IIS など、既定の動きや設定と異う箇所もいくつかあるので注意してください。
特に注意すべきは、使用可能なリソース (Bandwidth、CPU、Memory など) の上限値 (Resource Quota) が設定されているという点です。例えば、Web App の既定の Free モード (無料のインスタンス) では、上限が低く設定されているため、簡易な動作 (もしくは、テストなど) には向いていますが、トランザクション数の多い実運用のアプリケーションには不向きです。(Visual Studio Load Test などを使用して負荷の高い処理をエミュレートすると、一目瞭然です。) なお、こうしたモードや設定は、Portal から簡単に変更できます。
また、この他にも、例えば、IIS 上のリソースも共有されているため、使用している App Pool で User Profile がロードされていないなど、IIS の既定の動作や Azure Cloud Services とは異なる細かな相違もあります。このため、Azure Web App では、Identity and Access Tool の使用方法 で紹介したような特別な設定が必要になったり、Cookieless のフォーム認証 (Forms Authentication) や SessionState がうまく動作しないなど、細かな問題が生じることがあるので注意してください。(それほど、多くはありませんが。。。)
※ 変更履歴
2015/03/26 Azure WebSite から Azure Web App に名称変更
Categories: Uncategorized
1 reply»