Windows Azure AppFabric Caching ~ クラウドカバー Episode 45
さて、今回も Channel 9 のコーナー Cloud Cover のご紹介。
前回 Mix11 参加のために Cloud Cover に出演しなかった Steve のリードで開始する今回は、Wade がヨーロッパに旅行中のため、Karandeep Anand が Steve の相棒を務めます。
Karandeep Anand は Windows Azure の AppFabric 開発チーム所属で、今回の Cloud Cover ではいよいよ商用リリースが開始された Windows Azure AppFabric Caching を取り上げます。
とその前に、いつものニュース。
◆ Windows Azure SDK 1.4 refresh
Windows Azure SDK 1.4 は 3月にリリースされましたが、その後一部のバグを解決した Refresh 版がリリースされました。しかしこの Refresh 版において Azure Connect を使用する際にデプロイに失敗することがあったため、それを解決したものが、再度 Windows Azure SDK 1.4 refresh としてリリースされています。もし 2011 年 4月 25日の午後4時(米国太平洋時間)以前に Windows Azure SDK 1.4 refresh をインストールされている方は、一旦既存の Windows Azure SDK 1.4 refresh をアンインストールして、その後に再度 Windows Azure SDK 1.4 refresh をインストールしてください、とのこと。
最新の Windows Azure SDK 1.4 refresh は Web Platform Installer もしくはダウンロードサイトから入手いただけます(ダウンロードサイトからインストールする場合は、言語オプションで英語を選択してください)
◆ News Gator Channel 9 interview
RSSのアグリゲーションサービスを提供する NewsGator 社が、既存のデータセンターから、Windows Azure に彼らのサービスプラットフォームを変更したというニュース(インタビュー)の紹介です。
◆ DeployToAzure project on CodePlex: deploy as part of your TFS build
Team Foundation Server のビルドプロセスの一環として、Windows Azure へのアプリケーション配置を行うモジュール DeployToAzure が CodePlex にて公開されています。詳しい解説は Deploying Azure Project from TFS 2010 Build Server もどうぞ。
さて、ニュースの最後、そして今回の本題が、Windows Azure AppFabric Caching のリリースです。
AppFabric Chaching は前回の PDC で発表されたのち、CTP(プレビュー版)として公開されていましたが、今回、商用サービスとしての公開が始まりました。
同時に、価格に関しても発表されています(以下は米国での価格になります)。
· 128 MB cache for $45.00/month
· 256 MB cache for $55.00/month
· 512 MB cache for $75.00/month
· 1 GB cache for $110.00month
· 2 GB cache for $180.00/month
· 4 GB cache for $325.00/month
Cloud Cover で、Steve と Karandeep が話しているように、例えば 4GB のキャッシュが必要な場合、小さいサイズ(例えば128MB)を複数契約するよりも、大きなサイズ(例えば 4GB)の契約を行った方がお得な価格です。また、サイズに関してはダイナミックに変更可能です。つまり使用中のキャッシュサイズを、サービスの稼働状況に応じて変更できます。
この場合、より大きなキャッシュサイズにした場合はデータがそのまま保持され、小さなサイズへ変更した場合は通常のアルゴリズム同様 のポリシーでデータの追い出しが行われます(デフォルトで、least-recently-accessed、つまり最終アクセスが古いものから順に追い出される、というアルゴリズムのようです)。キャッシュサイズの変更に関して価格の計算含めた情報が AppFabric の FAQ に掲載されていますので、そちらもご参照ください。
最後にもう一つ大事なのは、基本的には Windows Azure のコンピューティングサービスを利用している地域と同じ地域で Caching サービスを利用してください、ということ。こうすることでコンピューティングサービスと Cache 間の通信費が不要となり、レイテンシも最小化できます。
さて、ここからは実際に Windows Azure の管理ポータル、そして Visual Studio を使った Caching 使用のデモ。
Azure の管理ポータルで、左下にある “Service Bus, Access Control & Caching” の項目を選択し、の管理メニューから Cache を選択して、最上位のメニュー “New Namespace” をクリックします。イメージ的には以下の画面ショットのような感じ。
ここで Cache 用に使用する新しい名前空間を指定し、データセンターの場所、キャッシュのサイズを選択します。これでキャッシュの準備が整いました。(アプリケーションからの具体的な利用方法は後程出てきます)
なお先に少し出たように AppFabric Chaching はサイズの変更が可能です(具体的にはメニューの以下の箇所)。
この変更は、一日に一回、実施可能だそうです。
試しに、キャッシュのサイズを変更し、そのあとでもう一度変更を行おうとしたら、以下のようなメッセージ(次の変更までは一日待つ必要がありますよ)が。
さて、話題は AppFabric Caching サービスモデルに移ります。
AppFabric Caching は、マルチテナント型のサービス、つまり、複数の契約者により AppFabric Caching のサービスの土台が共有されています。
AppFabric Caching は複数のマシンにより構成されていますが、Cache 利用の契約を行った時点で、各契約者に対して占有の Cache 領域が割り当てられる、とのこと。また、Cache データは複数のマシンにまたがるように分散して保存されます。そのため AppFabric Caching の高可用性オプションというものはなく、それ自体が可用性を確保できるアーキテクチャとして設計されています。
次に、Cache の利用状況に関しては、Azure の管理ポータルから確認が可能です(下記のようなイメージ)。
また、Cache のセキュリティに関しては、ACS を使うことで、キャッシュへ意図しない不正なアクセスが行われることを防いでいます。具体的には、Cache にアクセスするためのセキュリティトークンを持つアプリケーションのみが Cache にアクセスできるようにしています(認証トークンは Azure の管理画面から入手することができます)。
さて、実際の Cache の利用の利用シーンとして、ASP.NET の Session State を保存する場所として利用するパターンが考えられます。そのような利用に関しては、 Azure ポータルの上部にある “View Client Configuration” のボタンを押すことで、設定に必要となるコードスニペットを得ることが可能です(この中には先に述べた認証トークンも含まれています)。
さて、ここまでが設定のお話し。ここからは開発の話になります。ということで Steve にバトンタッチ。
以下が、今回 Cache を利用するために作成したコード。
Factory メソッドで Cache のクライアントを Get して、それに対して、キーと値を入れる、あるいは、キーを元に値を取り出す、といった、非常に簡単なコードです。
基本的にこの(クラウドの)Windows Azure AppFabric Cache は、(オンプレミスの) Windows Server AppFabric Cache のサブセットになっており、主要なメソッド、機能は Windows Server AppFabric Cache と同様に使用できるようです。キャッシュにはシリアライズ可能なオブジェクトであれば何でも格納可能です。
また、AppFabric Cache と合わせてローカルキャッシュを使用したい場合はそれを組み合わせて使用することが可能です。ローカルキャッシュはメモリ上のキャッシュであるため、シリアライズできないオブジェクトであっても格納可能です。
キャッシュのざっくりした性能ですが、典型的なデモで見せるのは、SQL Azure 等のディスクを使用したキャッシュが 10ms、 AppFabric キャッシュであれば 5ms、最後にローカルキャッシュであれば 0ms のレイテンシになる、とのこと。
ということでローカルキャッシュの設定を行おうとするのですが、このタイミングではうまく設定できず、、、、(後程、再度出てきます)
さて、最後に重要なお知らせ。
Windows Azure AppFabric Caching は 2011年8月1日まで無償で利用いただけます。
Windows Azure AppFabric Caching はプレビュー版ではなく、すでに商用リリースを行った正式サービスです。AppFabric Caching に興味がある方も、あまり興味はないや、、、という方も、この機会に AppFabric Caching を是非お試しください!
なお、Cache は CDN と同様、必要な箇所に利用してこそのサービスです。もし、開発されるサービスにおいて Cache が有効であるようであればぜひご使用ください。逆に、Cache によるメリットがあまりないようであれば無理に使用する必要はありません(それを確認するうえでも、この無償利用期間は良い機会かと)。
では、最後にこちらも恒例の Tip of the week!
さて、世界を股にかける Wade による華麗な Tip of the week のオープニングが終わると、いつの間にか先ほど設定できなかったローカルキャッシュの設定が!!。 以下のような一行を書くだけで、無償でかつレイテンシのないローカルキャッシュが使用できるようになります。
ただし、Windows Azure では通常複数のロールインスタンスを立ち上げることになりますので、AppFabric Caching やローカルキャッシュをどのような箇所に、どのような目的で利用するかに関してはしっかり設計を行ってください。
以上で Cloud Cover Episode 45 - Windows Azure AppFabric Caching with Karandeep Anand の紹介は終了です。
このほか、Window Azure AppFabric Caching の情報は日本マイクロソフトの佐藤の Blog エントリ、インメモリー キャッシュ アズ ア サービス」Windows Azure AppFabric Caching Service リリース に詳しいので、そちらもどうぞ。
では、Enjoy Cloud!