ベスト プラクティス: Windows Azure Web サイト (WAWS)
このポストは、2 月 10 日に投稿された Best Practices: Windows Azure Websites (WAWS) の翻訳です。
編集メモ: 今回は、Windows Azure Web サイト チームでプログラム マネージャーを務める Sunitha Muthukrishna による記事をご紹介します。
Windows Azure Web サイト (WAWS、英語) を使用すると、高度にスケーラブルな Web サイトを Windows Azure で構築できます。WAWS の主なメリットは、次のとおりです。
- リソースの有効活用 : 基本ユーザー数の増加に従ってアプリケーションの使用量も増加しますが、Web サイトのトラフィック パターンに基づいて事前にスケーリングすることができます。
- 従量課金 : お客様のニーズを満たすクラウド サービスを選択するうえで、コストは重要な考慮事項です。Azure Web サイトでは使用量に応じた料金体系 (従量課金) か、6 か月または 12 か月の月額プランを選択できます。詳しくは、Windows Azure Web サイトの料金詳細のページをご覧ください。
- より短期間での製品化 : インフラストラクチャのことを気にせずにアプリケーション開発に集中できるため、これまでよりも開発者の創造性や生産性を高めることに時間を使うことができ、アプリケーションの製品化までの期間が短縮されます。
ベスト プラクティス
ここからは、ベスト プラクティスをご紹介します。Windows Azure Web サイトのインフラストラクチャを効果的に活用し、エンド ユーザーに向けてパフォーマンスと信頼性の高い Web サイトを配信するためにお役立てください。
- スケーラブルなアーキテクチャを構築する
Windows Azure Web サイトでは、Azure 環境でスケーラブルなソリューションを構築することができますが、このとき、サービスが提供するスケーラブルなインフラストラクチャを Web サイトで最大限に活用することが非常に重要です。
以下に、スケーラブルなソリューションを設計するうえでのポイントを挙げます。
1. アーキテクチャのボトルネックは、待機時間 (レイテンシ) を大きくする原因となる場合があります。このため、現行のアーキテクチャの主要なボトルネックをすべて調査します。ボトルネックは、アプリケーションの設計不良や帯域幅の制限などさまざまな理由で発生します。これらを回避するために、アプリケーション アーキテクチャのリファクタリングを行います。
2. さまざまなスケール構成 (インスタンスのサイズと数の組み合わせ) で Web サイトのロード テストを実施し、通常の負荷で最適なスケール構成を把握します。ロード テストを実行するには、Visual Studio や Apache Jmeter (英語) など、さまざまなツールが利用できます。
3. ご利用中の Web 解析ツールを使用し、Web サイトのトラフィック パターンや 1 秒間あたりの平均要求数などを調査します。
4. 予想外の量のトラフィックが発生した場合に備えて、自動スケーリングをセットアップします。詳細については「Web サイトをスケーリングする方法 (英語)」の記事を参照してください。
5. アプリケーションでデータベース層を使用している場合、Azure キャッシュ サービスなどの分散キャッシュ ソリューションを統合してパフォーマンスを向上させます。
- 障害に対して耐久性の高いアーキテクチャを設計する
WAWS では充実したサービス レベル アグリーメント (英語) を提供していますが、業務の継続性を考慮すると、クラウド ソリューションの使用中にサービス障害が発生するリスクを理解し、このような場合に影響を軽減する方法を知っておくことが重要です。
次に示すのは、障害軽減策として必須のものです。
- コンテンツのバックアップおよび復元を自動的に実行するツールを Windows Azure SDK で自作するか、Cloud Cellar (英語) などのサードパーティのサービスを利用する。
- 2 つ以上のデータセンターに Web サイトの冗長コピーをセットアップし、受信トラフィックの負荷をデータセンター間で分散する。
- グローバル トラフィック マネージャーを利用して、データセンターでの障害発生を想定した自動フェールオーバー機能をセットアップする。
- Web サイトと並行してコンテンツ配信ネットワーク (CDN) サービスをセットアップし、コンテンツのキャッシュによりパフォーマンスを向上させると同時に、Web サイトの可用性も向上させる。
- WAWS で運用している Web サイトと緊密に連携しているコンポーネントやサービスとの依存性を可能なかぎり排除する。
たとえば、データベースを利用している Web サイトで、何らかの理由によりデータベース サービスが一時的に停止し、アーキテクチャ内の 1 か所で障害が発生したとします。このデータベースは緊密に連携するコンポーネントであり、アーキテクチャから除外することはできません。このような場合、次の対策が考えられます。
- 複数のデータセンターにデータベースの複製を作成し、データベース間で自動的にデータを同期して、障害の影響を軽減する。
- 障害発生時の耐久性を考慮してアプリケーションを設計する。
依存関係にあるコンポーネントを使用する必要がある場合、堅牢性を高めるためには、複製という戦略は有効です。
- クラウドに移行する前に、予期しない障害の発生に備えたリスク軽減戦略を策定します。
- ステージング環境で Web サイトを構築し、サイトを停止して障害をシミュレートすることにより、障害発生時にどのような挙動を示すかを評価します。
- インフラストラクチャを自動化する
Web サイトを正常に維持するためには、開発やデプロイメントなど、クラウド ソリューションに関連するさまざまな操作が必要です。この操作を自動化すると、アプリケーションのリリース サイクルの管理が容易になります。WAWS の機能はすべて WAWS REST API からアクセス可能なため、簡単に自動化することができます。
Web サイトの管理における重要な操作には、次のようなものがあります。
- Web サイトへのデプロイメント
デプロイメントを行う場合、Web Deploy (英語)、Git (英語)、FTP などのさまざまな方法が使用できます。ユーザーの好みにあったツールを Windows Azure SDK で構築すると、Web サイトへのコンテンツのデプロイを簡単に自動化できます。
- ステージング環境のサイトを使用した試験導入
WAWS ではステージング発行がサポートされています。この機能では、更新を実際に顧客に公開している Web サイトに適用する前に、ステージング バージョンの Web サイトにデプロイし、本番環境でテストを実施できます。詳細については、「Windows Azure Web サイトでのステージング発行の実施 (英語)」を参照してください。
- 診断ログの記録の有効化
WAWS には、アプリケーションのデバッグを支援する診断機能が組み込まれています。診断機能には次の 2 種類があります。
- サイト診断: 詳細なエラー ログの記録、失敗した要求のトレース、および Web サーバーのログの記録が可能です。
- アプリケーション診断: Web アプリケーションにより生成された情報を取得できます。
詳細については、「Windows Azure Web サイトでの診断ログの有効化 (英語)」を参照してください。
- 監視機能の有効化
WAWS では、[Monitor] 管理ページで監視機能を使用できます。このページで、CPU 時間、HTTP クライアントのエラー、HTTP サーバーのエラーなど、さまざまな指標に対してアラートを設定し、Web サイトを継続的に監視することができます。詳細については、「Windows Azure Web サイトを監視する方法 (英語)」を参照してください。
- セキュリティを確保する
WAWS プラットフォームは、セキュリティおよび信頼性に関する主要な業界標準に準拠していて、お客様に安全なプラットフォームを提供しています。しかし、アプリケーションに脆弱性があった場合、アーキテクチャが攻撃を受けるおそれがあります。
WAWS で安全なソリューションを構築するために、アプリケーションを作成する際には、攻撃に対抗可能な安全なコーディング手法に従う必要があります。詳細については、「安全なコードの作成方法 (英語)」を参照してください。
参考情報
Windows Azure Web サイトのチュートリアル (英語)