Freigeben über


優れたクラウド アプリケーションの構成要素

このポストは、6 月 21 日に投稿された Building Blocks of Great Cloud Applications の翻訳です。

編集メモ: 今回は、Windows Azure 顧客アドバイス チームの主任プログラム マネージャーを務める Michael Thomassy の投稿をご紹介します。

Azure 顧客アドバイス チームは、先日「優れたクラウド アプリケーションの設計」という記事を公開した後、MSDN コード ギャラリーに投稿された「Windows Azure でのクラウド サービスの基礎」(英語) コード プロジェクトのコンポーネントについて、さらに詳細な情報と技術的な説明を追加しようと検討してきました。その一環として、これらの基本構成要素 (コンポーネント) の使用方法を説明するブログや技術記事のシリーズを開始することになりました。クラウド サービスの各基本コンポーネントに関する詳細な技術情報を記載したブログを、今後数か月にわたって公開していく予定です。

私たちはマイクロソフト内外の Windows Azure ユーザーの皆様との間で、「Windows Azure のサービスには何が必要であるか」ということについて、幾度となく議論してきました。その中で、クラウド サービスの実装に関する簡単な質問に答えても、それがすぐに複雑な質問となって返ってくるという経験もしました。たとえば、ただシャーディング コードを提供すればよかったのではなく、データ アクセス層が必要だった、というようなことです。さらに、データ アクセス層の回復性には再試行ロジックの開発が必要であることや、スケーラブルな環境でエラー ログを記録するためには正確なガイダンスを提供することが必要でした。また、OPS ストレージを構築するほかにも、レポートをクエリしたり、警告を生成することもできました。議論の進捗はコンポーネントごとに確認できますが、各コンポーネントはそれぞれの上に構築されており相互に依存しています。こうした議論や実装の結果、多数の基本コンポーネントと稼働中のクラウド アプリケーションとをつなぐ「Windows Azure でのクラウド サービスの基礎」(英語) というコード プロジェクトが生まれました。

このコード プロジェクトは、マイクロソフトの最大規模のお客様が、Windows Azure のデータベースを基盤とした複雑なサービスを確実にご利用いただけるようにするために、顧客アドバイス チームが進めてきたものです。Windows Azure ユーザーの皆様が抱える各種の問題を解決するために、実際の Windows Azure のお客様の協力の下で行いました。多くの場合、このような問題を解決するには、基本サンプルによるベスト プラクティスではなく、弾力的なスケーリング、分散可能なワークロード、可用性、業務継続性、広範に分散した大規模なユーザー、大容量、低遅延といった、大規模クラウド サービスに求められるさまざまな要件を組み合わせた場合のベスト プラクティスが必要になります。下の図は、「クラウドサービスでの基礎」コード プロジェクトのアーキテクチャを示したものです。

今回連載する技術記事でご紹介するコード プロジェクトのコンポーネントは、次のとおりです。

  1. テレメトリ – データ パイプラインに実装されたスケーラブルな環境の非同期メカニズムを通じて、アプリケーション サービスのインストルメンテーションおよびログ記録を実行する基本的な方法。サービスをトラブルシューティングしたり、健全性を判断するうえでは、テレメトリ データを効率よく活用することが欠かせません。このコード プロジェクトでは、バックグラウンドの Worker ロールを使用するスケジューラを実装し、アプリケーション、パフォーマンス カウンター、IIS のログ、イベント ログ、およびシャーディングされた SQL データベースの DMV から定期的にテレメトリ データを収集します。これらのデータは、Windows Azure SQL データベース内のカスタマイズ済み OPS ストレージに書き込まれます。スケジューラが収集したデータは、SQL レポートでホストされるレポートで確認できます。
  2. データ アクセス層 – Windows Azure SQL データベース内に存在する複数のデータベースに、高い信頼性と効率性を確保しながらアクセスするレイヤー。このコード プロジェクトには単一データベースと、シャーディングされたソリューションの両方のデータ アクセス ラッパーが存在し、シャードをまたぐ並列展開クエリなどの手法を実行できます。
  3. キャッシュ – Azure キャッシュを使用すると、データ アクセス層と組み合わせた場合に、専用キャッシュでより効率よくユーザー データを保存したり取得したりすることができます。
  4. 構成 – 構成ファイルは、構成パラメーターが web.config 形式かサービスの config 形式かにかかわらず、アプリケーションをシームレスに管理するために欠かせない重要な役割を担っています。構成は、アプリケーションに対して透過的である必要があります。
  5. アプリケーション要求ルーティング処理 – Cookie に基づいてユーザーを複数のホステッド サービスにルーティング/アフィニティ化する機能、およびシャーディングされたデータベースによってアプリケーション サービス レベルでスケールアウトを実施するために IIS の ARR (アプリケーション要求ルーティング処理) 技術を活用するシャーディングされたデータベースの実装。
  6. 展開 – PowerShell の Windows Azure コマンドレットを使用して、カスタマイズ済みの構成を複数のホステッド サービスやさまざまな数のインスタンスに展開し、多数のシャードを構成する方法。

技術的なブログや詳細情報については、TechNet Wiki (英語) に公開していく予定です。皆様のご意見およびご参加をお待ちしております。