先日、シニアアーキテクトエバンジェリストのBrian Prince氏とテクニカルエバンジェリストNathan Totten氏は、マイクロソフトのWebセミナーwebinarにおいて、Windows Azure上でASP.NETアプリケーションをスケールするいくつかのオプションを提示した。
2人は、これらのオプションは、どんな組み合わせでもアプリケーションをスケールアップすることもダウンすることもできると説明した。これらは大きく、キャッシング、トラフィック分散、非同期プロセッシング、ストレージ、といったいくつかのカテゴリに分類できる。Prince氏とTotten氏は、ASP.NETアプリケーションをスケールアップするために、以下のいくつかを組み合わせて使うことを薦めている。
Azureインスタンス数を増やす
仮想サーバーの追加のように、これは負荷を分散させるのにもっともシンプルな方法だ。
テーブルやBlobストレージの追加
テーブルストレージは、スキーマーなしで、リレーショナルがないが、SQL Azureよりスケーラブルである。Totten氏によると、テーブルストレージは、パーティションごとに毎秒500リクエストを処理することができる。Blobストレージは、非構造化オプションであり、大きなファイルに便利だ。
AppFabricキャッシングの追加
AppFabricは、頻繁にアクセスするデータのインメモリキャッシングであり、セッション状態プロバイダとして利用することができる。
非同期作業プロセスの利用
Azure Queueは、「Worker Role」として知られるバックグラウンドプロセスにメッセージを送る。これは、ショッピングカートやファイルのアップロードを処理するのに適切な仕組みで、ビジネスロジックは、フロントエンドのパフォーマンスを向上させるためにバックグラウンドで処理される。キューは、サイズの制限があるが、テーブルやBlobストレージと組み合わせることができる。
スタティックまたは、セミスタティックなコンテンツは、Azure Content Delivery Networkに任せる
2人のよると、Windows Azure Content Delivery Network (CDN)は現在、世界に26ノードあり、定期的に追加されている。CDNを使うことにより、分散された静的なデータ(または、あまり更新されないデータ)は、もっとも近いデータセンターから配布されるため、ユーザーのパフォーマンスを向上させることができる。
すぐれたトラフィック管理
Windows Azure Traffic ManagerはCDNに近いが、コンテンツを保存するよりも、複数のロケーションから世界中で可用性のより高い場所でアプリケーション全体をホストする仕組みである。Traffic Managerは、プライマリインスタンスが利用できない時にフェイルオーバーシステムとして使うこともできる。
Prince氏とTotten氏は、最初のしっかりしたアプリケーション設計がいつでもよいパフォーマンスのカギとなるが、Windows Azureは、組織の用件により簡単にスケールをアップすることもダウンすることも簡単にできると説明した。