Azure WebSites への移行計画の作成
このポストは、8 月 27 日に投稿した How to plan your migration to Azure Websites の翻訳です。
クラウド プラットフォームへの移行は、非常に手間がかかる場合があります。Azure WebSites をホスティング ソリューションとして使用する場合には重要な考慮事項がいくつかありますが、この記事では、Azure WebSites に移行する場合に知っておく必要のあるプラットフォーム関連の知識について説明します。
1. 世界中で利用可能
Azure WebSites は、世界中に存在する複数のデータ センターで利用できます。このため、お客様と関係の深い地域の市場ニーズに Web サイトを最適化できます。サポート対象のリージョンのリストはこちらのページでご覧いただけます。
2. 負荷分散機能が組み込み済み
IaaS を基盤とするソリューションで Web サイトをセットアップする場合、Ngnix (英語) などのソリューションを使用して負荷分散機能をセットアップする必要があります。Azure WebSites では、Azure Traffic Manager を使用すると複数リージョン間で負荷分散機能を実現できるため、複数の Virtual Machines にまたがる Azure WebSites の負荷分散機能をセットアップする必要はありません。ただし、Azure WebSites の Free レベルをご利用の方はこの負荷分散機能は使用できませんのでご注意ください。
それ以外のレベルをご利用の方は、Azure WebSites の負荷分散機能を自分で構築する必要はありません。
3. Web サーバーを使用
Azure WebSites では、Windows を基盤とするインフラストラクチャ上で、Web サーバーとして IIS を実行しています。この IIS サーバーでは .NET、PHP、Node.js、Python、Java の各フレームワークを使用できます。また、Azure WebSites ではセキュリティ、診断、パフォーマンスのそれぞれにおいて IIS の全機能を活用しています。IIS の詳細については、こちらのページ (英語) を参照してください。
4. SLA について
Azure WebSites で構築されたどのアプリケーションも、ホスティング サービスの稼働率が 100% であることは保障されません。Azure WebSites の SLA (注: Download ボタンから、日本語を選択してください。) には、Azure WebSites はお客様の Web サイトで月間 99.9% の可用性を提供することが記載されています。この文書をお読みになり、内容をご確認ください。
データベース、Azure Storage、CDN サービス、YouTube サービスなど、お客様のアプリケーションと緩やかに、または緊密に連携している Azure の他のサービスや Azure 以外のサービスをご利用の場合、それらのサービスの SLA も確認してください。
月間 99.9% よりも高い可用性をお望みのお客様は、障害が発生する可能性のあるコンポーネントに留意し、Azure WebSites のフェールオーバーや災害復旧の管理方法を理解しておくことをお勧めします。
5. 料金レベルと機能
Azure WebSites には、Free、Shared ( プレビュー ) 、Basic、Standard の 4 つの料金レベルがあります。
- Shared ( プレビュー ) : プレビュー期間中は、WebSites インスタンス 1 つにつき 1 時間あたり 0.013 ドルでご利用いただけます (最大 10 ドル/月)。この料金には、33% のプレビュー期間割引が適用されています。
- Basic および Standard: 複数のインスタンス サイズが用意されているだけでなく、必要な容量の変化に合わせてスケーリングが可能ですす。Basic レベルは 56 ドル (S サイズのインスタンス 1 つ)、Standard レベルは 75 ドル (S サイズのインスタンス 1 つ) からご利用いただけます。
料金レベルと機能の詳細については、こちらのページをご覧ください。
6. Azure WebSites をホストしている Virtual Machines へのアクセスは不可能
Azure WebSites ではアプリケーションをホストするインフラストラクチャを提供しますが、お客様が Virtual Machines に実際に接続してアクセスすることはできません。このため、Virtual Machines に何らかのソフトウェアをインストールすることはできません。アプリケーションは物理デバイス上ではなく Virtual Machines 上に存在しており、スケール アップやスケール ダウンでき、Virtual Machines で障害が発生した場合は置換が可能です。
以上の理由により、このような環境で動作するアプリケーションは必ずステートレスになります。
7. オートスケール機能
オートスケール機能は Standard レベルでご利用いただけます。手動操作を行うことなく Azure WebSites のスケーリングができるので、コスト効率が向上します。オートスケール機能は、サイトへの受信トラフィックがユーザー指定の範囲に収まるように適切なスケールを自動的に選択します。このため、Azure WebSites のインスタンス数を手動で増減する必要はありません。詳細については、オートスケールの構成方法 (英語) を参照してください。
8. ファイル サーバーはすべてのインスタンスで共有可能
ファイル サーバーは、Azure WebSites が使用するすべてのインスタンスで共有されます。複数のインスタンスを使用する場合、何らかのセッション データをキャッシュして特定のコンピューターに格納すると一部のインスタンスはこのデータにアクセスできなくなるというわけではありません。
アプリケーションの使用目的に応じて、Azure WebSites が実行されている Virtual Machines すべてでデータの整合性を保つ必要がある場合は、永続ストレージを使用します。その必要がない場合は、Virtual Machines インスタンスの一時フォルダーにデータを保存できます。
9. キャッシュ機能
Azure WebSites では、PHP アプリケーション用の WinCache (英語) および IIS サーバー レベルのキャッシュ機能 (出力のキャッシュ) をご利用いただけます。WinCache は対応している PHP アプリケーションで使用可能です。また、サーバー レベルのキャッシュ機能は IIS でホストされているあらゆるアプリケーションで使用可能です。
ほとんどの場合はこれらの機能で十分ですが、さらに高度なキャッシュ機能が必要な場合は、下記のいずれかを使用します。
- Azure Redis Cache プレビュー (英語)
- Azure Managed Cache
- Azure Virtual Machines (独自のキャッシュ クラスターを構築する)
10. ステージング環境へのデプロイメントおよび発行
Azure WebSites の Standard レベルで実行されているサイトでは、Site Slots を使用するとステージング環境へのデプロイメントや発行が可能です。この機能では、それぞれの初期状態の運用環境の Azure WebSites (これが運用環境のスロットになります) に合わせて開発環境またはステージング環境の Site Slots を作成し、このスロットをダウン タイムを発生させずにスワップすることができます。詳細については、構成手順と Site Slots にデプロイする方法を参照してください。
11. SSL
サイト訪問者が HTTPS を使用して Web サイトにアクセスする場合、Web サイトとブラウザーの間の通信は Secure Socket Layer (SSL) による暗号化機能でセキュリティが確保されます。これは、インターネットでデータ通信のセキュリティを確保する場合に最も一般的に使用されている方法で、訪問者と Web サイトとの間のトランザクションの安全性を保証します。Azure WebSites で HTTPS を有効化する方法についての詳細は、SSL の構成方法を参照してください。
12. カスタム ドメイン
Microsoft Azure WebSites では、Web サイトを作成するときに、azurewebsites.net というドメインの下にユーザーが理解しやすいサブドメインを追加した形の URL (https://<サイト名>.azurewebsites.net) が付与されます。また、お客様の Web サイトを contoso.com などのカスタム ドメイン名に関連付けて、ユーザーに対してよりわかりやすいドメイン名を使用することもできます。詳細については、Azure WebSites でカスタム ドメイン名を追加する方法を参照してください。
13. WebJob (プレビュー) を利用したバックグラウンド プロセス
Microsoft Azure WebSites では、オンデマンド、常時実行、スケジュール設定のいずれかの方法でプログラムやスクリプトをお客様の Azure WebSites で実行できます。Always On 機能を使用しない場合、Microsoft Azure WebJob は無料でご利用いただけます。詳細については、Azure WebSites で WebJob を作成する方法を参照してください。
14. 自動復旧機能
Azure WebSites でこの機能を有効にすると、特定の条件を自動的に検知し復旧を支援します。“Always On” 機能の一部として機能強化が実施され、Web アプリケーションをホストしている Worker ロールのプロセス (仮想マシン インスタンス) が自動的に再起動されるようになりました。詳細については、自動復旧機能を有効化する方法を参照してください。
15. バックアップと復元
Azure WebSites のバックアップおよび復元機能を使用すると、Azure WebSites のバックアップを手動と自動のいずれでも簡単に作成できます。この機能では、Azure WebSites を以前の状態に復元したり、お客様が所有するいずれかの Azure WebSites のバックアップから新しい Azure WebSites を作成したりできます。
バックアップから Azure WebSites を復元する方法の詳細については、Azure WebSites の復元方法を参照してください。バックアップの構成の詳細については、Azure WebSites のバックアップ方法を参照してください。
16. SMTP で SendGrid サービスを使用
Azure WebSites では、SMTP は既定で無効に設定されています。Web アプリケーションで電子メール サービスを使用する必要がある場合、SendGrid サービスを購入します。このサービスでは、こちらのページ (英語) で紹介されているように、無料のプラン (1 か月あたり 2,500 通の電子メールを利用可能) から高機能なプランまでお選びいただけます。詳細については SendGrid の構成方法を参照してください。
Azure WebSites の利用を開始するためのチェックリスト
- データ センター (Azure WebSites をホストする場所) を決定する。
- Azure WebSites のホスティング プランを理解する。すべての Azure WebSites で同じホスティング プランを使用する場合と、アプリケーションによって運用環境のサイトとステージング環境のサイトを使い分ける場合があります。
- ニーズに合ったデプロイメント ソリューションを選択する。Git (英語)、Web Deploy (英語)、Bitbucket、DropBox、Github (英語) などの既成のソリューションのほか、Git や Web Deploy の API を使用して構築したカスタム ソリューションを使用できます。
- キャッシュやデータベースなど、アプリケーションが使用する依存コンポーネントをすべてセットアップする (必要な場合)。
- Web アプリケーションの開発およびテスト用の Azure WebSites をセットアップする。次のいずれかの方法を選択します。
- Site Slots を使用する。
- 開発用サイトの要件に応じて個別に Azure WebSites を作成する。たとえば、開発用アプリケーションが使用するデータベースや Azure WebSites のモード、ホスティング プランが異なる場合は、この方法を使用します。
- Web アプリケーション用のステージング環境の Azure WebSites をセットアップする。次のいずれかの方法を選択します。
- Site Slots を使用する。
- 開発用サイトの要件に応じて個別に Azure WebSites を作成する。たとえば、開発用アプリケーションが使用するデータベースや Azure WebSites のモード、ホスティング プランが開発用サイトで異なる場合は、この方法を使用します。
- 運用環境の Web アプリケーションをセットアップする。投資を最大限に活用するために、Web アプリケーションは Basic レベルまたは Standard レベルで運用することをお勧めします。Web サーバーのログを Azure Storage に記録するように設定して、運用環境、ステージング環境、および開発環境の各サイトでアプリケーションに不具合が発生したときにデバッグできるようにします。
- 本番環境のサイトのカスタム ドメインをセットアップする。
- アプリケーションが画像や動画などのメディア コンテンツを多用する場合、Azure Storage などの他のサービスを使用してメディア コンテンツをホストします。動画のストリーミングには Azure Media Services (.NET アプリケーションの場合) や、サードパーティーの YouTube (PHP/Python/Node.js/Java の各種アプリケーションの場合) などのサービスを使用します。
- 開発環境、ステージング環境、運用環境のすべてのサイトで SSL をセットアップする (アプリケーションで必要な場合)。
- すべての Azure WebSites で自動復旧機能をセットアップする。
- 自動バックアップ機能をセットアップする。マイクロソフトのバックアップ機能を使用するか、WebJob や Azure VM を使用した自社製のソリューションを構築して、バックアップの Web サービス プロセスをホストします。
- 運用環境のサイトでオートスケールをセットアップする。開発環境およびステージング環境のサイトではコスト効率を考慮する必要はありませんが、スケールやパフォーマンスのテストを実施しているときに有効化することが可能です。
まとめ
Azure WebSites にはコスト効率の高さ、スケーラビリティ、フォールト トレランスという特長がありますが、このようなメリットを活用するには、アーキテクチャや設計について数多くの事項を検討する必要があります。このドキュメントでは、Azure WebSites が提供するプラットフォームのベスト プラクティスと主な特長についてご説明しました。デプロイメントの際や運用の省力化にご活用ください。