Windows AzureのWebロールは、スケールアウトを前提に設計されている。そのため大量の要求をロードバランサを使って複数インスタンスへ分散させることが容易になっている。
だが、異なるインスタンス間でセッション情報などを維持するには、共通にアクセスできるデータ領域が必要になる。AppFabricのキャッシュサービスがリリースされたことで、スケールアウトに対応した共有キャッシュを、セッション情報などの共有のために簡単に利用できるようになった。今回はWindows Azure AppFabricの「キャッシュ」を確認してみよう。
アプリケーションの分散キャッシュを提供する
Windows Azure AppFabricの「キャッシュ」とは、Windows Azureなどで動作するアプリケーションに、分散キャッシュ機能を提供するものだ。格納できるデータとしては、Webロールのセッション情報や出力ページといった専用キャッシュ以外に、ストレージサービスやSQL Azure、その他アプリケーションデータなどもキャッシュすることができる。
これまでも、SQL Azureやストレージサービスを利用して、Windows Azure上で動作するアプリケーションからデータのキャッシュを実現することは可能だった。だがその場合、利用しなくなったキャッシュは、プログラム側で明示的に削除する必要がある。
Windows Azure AppFabricのキャッシュを利用すると、利用しなくなったデータはキャッシュサービスの専用プロバイダーが自動的に削除してくれる。また、キャッシュサーバー自体も複数サーバーで分散処理するため、急激なキャッシュデータの増大によるパフォーマンスやスループットの低下を起こしにくいという利点もある(図1)。