Windows Azure: 新しい分散型、占有型、高パフォーマンスのキャッシュ サービスと、さらなるクールな改善

今朝、Windows Azureに対するいくつかの素晴らしいアップデートをリリースしました。新機能は、次の通りです:

  • 占有型のキャッシュ サービス: 新しい分散型、占有型、高パフォーマンスのキャッシュ サービスのプレビューの発表
  • 自動スケール: Webサイト、仮想マシン向けのスケジュール ベースの自動スケールと、より高度な自動スケール履歴ログ
  • Webサイト: HTTPログをストレージ アカウントに格納する、新しいWebサーバー ログ記録のサポート
  • 操作ログ: 操作ログに対する、新しいフィルタリング オプション

これらの改善すべては利用可能になっており、今すぐ使うことができます (注: いくつかの改善は、まだプレビューです)。詳細は次の通りです。

Windows Azureキャッシュ サービス: 新しい分散キャッシュ サービスのプレビュー

Windows Azureに対する最新のサービス追加である、新しいWindows Azureキャッシュ サービスのプレビュー リリースを発表できて、興奮しています。新しいWindows Azureキャッシュ サービスによって、データをインメモリーに格納し、アプリケーションのスケーラビリティとパフォーマンスを劇的に改善するために、Windows Azureアプリケーションから使える、占有型、高パフォーマンス、分散型のキャッシュを簡単にデプロイできるようになります。

WindowsやLinuxの仮想マシン内にホストされたアプリケーションや、Windows Azure WebサイトやWindows Azureクラウド サービスとしてデプロイされたアプリケーションなど、任意の種類のWindows Azureアプリケーションが、新しいWindows Azureキャッシュ サービスを使えます。また、Windows Azureモバイル サービスのサポートも、今後対応予定です。

各アプリに対してWindows Azureキャッシュ サービスの占有インスタンスをインスタンス化することも、あるいは、複数のアプリにわたって単一のキャッシュ サービスを共有することもできます。この後者のシナリオは、クラウド バックエンド ソリューションを複数のデプロイ ユニットに分割したいときに、特に便利です。すべてのデプロイ ユニットが、同じキャッシュ済みデータを簡単に共有して扱えるようになりました。

Windows Azureキャッシュ サービスの利点

新しいWindows Azureキャッシュ サービスの利点は、次の通りです:

  • 任意の種類のアプリ (仮想マシン、Webサイト、モバイル サービス、クラウド サービス) から、キャッシュを使用可能です。
  • 各キャッシュ サービス インスタンスは、他のお客様から分離された占有仮想マシン内にデプロイされます。これは、高速で予測可能なパフォーマンスを得られることを意味します。
  • キャッシュ サービスには、クォータやスロットリング動作はありません。好きなだけ多く、あるいは激しく、占有キャッシュ サービス インスタンスにアクセスできます。
  • 作成した各キャッシュ サービス インスタンスは、(本日のプレビュー時点では) インメモリーのデータ オブジェクトやコンテンツを150GBまで格納できます。アプリを再デプロイする必要なしに、キャッシュ サービス インスタンスが使うメモリーを動的に増減できます。
  • Webサイト、仮想マシン、クラウド サービスは、(キャッシュ サービスに行って戻るネットワーク ラウンドトリップを含む) エンド ツー エンドで平均約1ミリ秒で、キャッシュ サービスからオブジェクトを取得できます。エンド ツー エンドで約1.2ミリ秒で、項目をキャッシュに挿入できます。(これは、Webサイト/仮想マシン/クラウド サービスがリモートのキャッシュ サービスにオブジェクトを永続化し、エンド ツー エンドを1.2ミリ秒で戻されたACKを取得できることを意味します。)
  • 各キャッシュ サービス インスタンスは、複数サーバーにわたって分散された、可用性の高いサービスとして実行されています。これは、キャッシュ サービスが稼働しているサーバーがクラッシュした場合や、パッチ適用のためにVMインスタンスの1つをアップグレードする必要がある場合でも、キャッシュ サービスは稼働し続け、利用可能なままであることを意味します。
  • キャッシュ サービス インスタンスが稼働する仮想マシンは、Windows Azureによってサービスとして管理されています。これは、我々がパッチ適用とインスタンスのサービス有効期間に対処することを意味します。これによって、インフラストラクチャの詳細の管理について心配する必要なしに、素晴らしいアプリの構築に集中できるようになります。
  • 新しいキャッシュ サービスは、現在、(クラウド サービスでサポートされている) ロール内キャッシュ オプションで使っているのと同じ.NETキャッシュAPIをサポートしています。ですので、ロール内キャッシュに対して書かれた既存のコードは、新しいマネージ キャッシュ サービスと互換性があります。
  • 新しいキャッシュ サービスは、ASP.NETセッション状態とASP.NET出力ページ キャッシュに対する組み込みプロバイダー機能を持っています。これによって、ASP.NETアプリケーションを複数のWebサーバーにわたって簡単にスケールアウトし、それでも、ユーザーがどのWebサーバーにアクセスするかに関係なく、セッション状態やキャッシュされたページ出力を共有できるようになります。
  • 新しいキャッシュ サービスは、各アプリに対して異なるキャッシュ サービス インスタンスを使うか、代わりに、同時に複数のアプリにわたって単一のキャッシュ サービス インスタンスを共有することをサポートします (後者は、簡単なデータ共有とアプリ分割を可能にします)。これは、いくつかのデプロイ ユニットにわたってアプリを分割したいシナリオで、とても便利です。

キャッシュ サービスの作成

Windows Azure管理ポータルにアクセスし、「新規」>「データ サービス」>「CACHE」(キャッシュ) を使うことで、キャッシュ サービスを簡単に新規作成できます:

1

上のスクリーンショットでは、「北ヨーロッパ」リージョンに「scottgucache」という名前の新しい5GBのプレミアム キャッシュを作成したいと指定しています。「Create a New Cache」(新しいキャッシュの作成) ボタンをクリックすると、プロビジョニングに数分かかります:

2

プロビジョニングされると、他のすべてのWindows Azureサービス (Webサイト、仮想マシン、データベース、ストレージ アカウントなど) と同様に、Windows Azure管理ポータルでサブスクリプション内にキャッシュが表示されます。「DASHBOARD」(ダッシュボード) タブをクリックして、キャッシュの詳細を確認できます:

3

キャッシュをそのまま使えます (適切な規定値が設定済みであり、使い始めるために変更は必要ありません)。あるいは、オプションとして「CONFIGURE」(構成) タブをクリックして、カスタム設定を管理できます。カスタム設定は、名前付きキャッシュ パーティションの作成、有効期限動作、削除ポリシー、(サーバー クラッシュ時にもキャッシュ済み項目が存続し続けるように、キャッシュ済み項目がキャッシュ サービス内の複数の仮想マシンにわたって格納されることを意味する) 可用性設定、(項目の更新や有効期限切れが起こったときに、キャッシュがアプリにコールバックできることを意味する) 通知設定の構成などです:

4

設定を変更したら、「SAVE」(保存) ボタンをクリックするだけで、変更が即座に適用されます (再デプロイは不要です)。

キャッシュの使用

キャッシュ サービスを作成したので、アプリケーションからそれを使ってみましょう。

アプリからキャッシュ サービスにアクセスするためには、キャッシュ サービスのエンドポイントURLと、(セキュリティで保護された方法でキャッシュ サービスにアクセスできるようにする) アクセス キーを取得する必要があります。Windows Azure管理ポータルでキャッシュ サービスの「DASHBOARD」(ダッシュボード) 表示に進むことで、この両方を行えます:

5

エンドポイントURLはサービスの「概要」表示にあり、「MANAGE KEYS」(キーの管理) ボタンをクリックすることでサービスのAPIキーを取得できます:

6

ポータルからエンドポイントURLとアクセス キーを保存したら、それらを使うようにアプリケーションを更新します。

.NETアプリケーションからのプログラムによるキャッシュ サービスの使用

.NETやASP.NETのアプリケーションでのキャッシュ サービスの使用は、簡単です。Visual Studioでプロジェクトを右クリックし、「NuGetパッケージの管理」コンテキスト メニューを選択し、NuGetオンライン ギャラリーで「Windows Azure Caching」NuGetパッケージを検索し、それをアプリケーションに追加するだけです。

7

「Windows Azure Caching」NuGetパッケージをインストールした後に、web.config/app.configファイルを開き、アプリケーションの構成ファイルのdataCacheClientセクションにある、キャッシュ サービス エンドポイントURLとアクセス キーを置換します:

8

これを行ったら、次のような.NETキャッシュAPIを使って、プログラムによってキャッシュ サービスに対して項目のPut (追加または置換) やGet (取得) を行えるようになります:

9

プログラムによってキャッシュに追加したオブジェクトは、キャッシュ サービス内で自動的に永続化され、同じキャッシュ サービス インスタンスを使っている多数の仮想マシン、Webサイト、モバイル サービス、クラウド サービスにわたって共有できます。キャッシュは非常に高速であり (取得は、エンド ツー エンドで平均約1ミリ秒かかります)、数百GBのコンテンツをインメモリーに格納できるので、キャッシュがソリューションのスケーラビリティ、パフォーマンス、可用性を劇的に改善できることが分かるでしょう。Windows AzureキャッシュAPI (英語 / 日本語) に関してさらに学ぶには、ドキュメントにアクセスしてください。

キャッシュ サービスを使ったWebファームにわたるASP.NETセッション状態の有効化

また、新しいWindows Azureキャッシュ サービスは、ASP.NETセッション状態を格納するために簡単にキャッシュ サービスを使えるようにする、サポートされるASP.NETセッション状態プロバイダーを持っています。これによって、多数のサーバーにわたってASP.NETアプリケーションをデプロイし、ユーザーが最後にWebファーム内のどのWebサーバーにアクセスしたかに関係なく、ユーザーのセッション状態をどのサーバー上でも利用可能にできるようになります。

ASP.NETセッション状態プロバイダーの有効化は、本当に簡単です。単に、web.configファイルに次の構成を追加するだけです:

10

有効化すると、ユーザーはアプリケーションのWebファーム内のどのWebサーバーにもアクセスでき、セッション状態は利用可能になります。ASP.NETセッション状態プロバイダー (英語 / 日本語 (機械翻訳)) と、ASP.NET向けに合わせてサポートしている出力キャッシュ プロバイダー (英語 / 日本語 (機械翻訳)) に関してさらに学ぶには、ドキュメントにアクセスしてください。

キャッシュの監視とスケーリング

キャッシュ サービスをデプロイしたら、Windows Azure管理ポータルでキャッシュ サービスの「MONITOR」(監視) タブに進むことで、キャッシュのアクティビティと使用量を追跡できます。実際のトラフィック パターンをベースにスケーリングの決定を行えるように、使用されている帯域幅、キャッシュ ミスの割合、使用されているメモリー、読み取りリクエスト/秒、書き込みリクエスト/秒といった、有益な情報を取得できます。

11

また、既定のメトリックの代わりに、あるいはそれらに加えて、興味のある他のメトリックを表示するように、監視ページをカスタマイズできます。上の「メトリックの追加」ボタンをクリックすると、メトリックを構成する簡単なUIが表示されます:

12

アプリケーションに対するトラフィック増加のためにキャッシュをスケールさせる必要がある場合、「SCALE」(スケール) タブに進み、要件に応じてキャッシュのプランやサイズを簡単に変更できます。ここでは、最初に5GBのプレミアム キャッシュを作成していました。これをスケール アップしたい場合、単に次のスライダー バーを140GBまで拡張し、「SAVE」(保存) ボタンをクリックできます。これによって、キャッシュ内にすでに永続化されている既存データを失うことなく、キャッシュが動的にスケールされます。

13

これによって、アプリケーション負荷が増加した場合に、キャッシュをスケール アウトしたり、アプリケーションがそれほどメモリーを必要としていないことが分かりコストを削減したい場合に、キャッシュ サイズを縮小することが、本当に簡単になります。

さらに学ぶ

新しいWindows Azureキャッシュ サービスによって、Windows Azureアプリケーションを本当に高速化できるようになります。このサービスは、アプリケーションが仮想マシン内に実装されているか、Windows Azure Webサイト、モバイル サービス、クラウド サービスとして実装されているかに関係なく、すべてのWindows Azureアプリケーションから使える占有型のキャッシュを提供します。このサービスが、アプリケーションを本当に高速化し、アプリのスケーラビリティを改善し、アプリをさらに堅牢にするのに役立つことが分かるでしょう。

このサービスに関してさらに学ぶために、キャッシュ サービスのドキュメント (英語 / 日本語 (機械翻訳)) を確認してください。多様なキャッシュのプラン、サイズ、料金に関する詳細をさらに学ぶには、こちらにアクセスしてください。そして、今すぐWindows Azureキャッシュ サービスを試すために、Windows Azure管理ポータルを使ってください。

自動スケール: Webサイトと仮想マシンに対するスケジュールのアップデート、週末のスケジュール、自動スケール履歴

3週間前、クラウド サービス向けのスケジュールされた自動スケールのサポートをリリースしました (英語 / 日本語)。本日、Webサイトと仮想マシンに対するスケジュールされた自動スケールのサポートも追加しました。また、平日か週末かによって異なる時間スケジュール規則設定のサポートを導入しました。

Webサイトと仮想マシン向けの、時間でスケジュールされた自動スケールのサポート

クラウド サービスと同様に、仮想マシンやWebサイトの「スケール」タブに進むと、スケジュール時間を設定する新しいボタンが表示されるようになりました。

14

スケジュールされた自動スケールは、クラウド サービス向けと同様に、Webサイトと仮想マシン向けにも動作するようになりました。引き続き (「スケジュールされた時間なし」を選択することで) いつでも同じようにスケールさせることを選択できますが、「スケジュール時間の設定」をクリックして、時間によって異なるスケール規則を設定できるようになりました:

15

上のダイアログを使って開始時間、終了時間を定義したら、メインの「スケール」タブに戻って、各時間セグメントに対して異なる規則を設定できます。たとえば、ここでは、平日の日中にはWebサイト向けに2から5の間のスモール仮想マシンを持つように、規則を設定しました。仮想マシンのCPUの割合によって、自動スケールにスケール アップ/ダウンさせています:

16

ですが、平日の夜間には、多数の仮想マシンを稼働させたくないので、仮想マシンを1から3の間にだけ自動スケールするように構成します。これを行うために必要なのは、ドロップ ダウンを「平日の日中」から「平日の夜間」に変更し、異なる一連の規則を編集し、「保存」をクリックすることだけです:

17

これによって、時間によって異なるポリシーと規則を使うよう設定することが、本当に簡単になります。これによって、ピーク時のパフォーマンスを改善し、オフピーク時にコストを削減できます。

自動スケール履歴

以前は、「スケール」タブでインスタンス数グラフをサポートしていたので、サービスに対するアクションの履歴を確認できました。本日のリリースでは、このグラフを改善し、すべてのインスタンスにわたるCPU使用量の合計を表示するようにしました。

18

これは、1インスタンスの場合は、CPU使用量の合計は0から1の間になりますが、3インスタンスの場合は、0から3の間になることを意味します。これを使って、ロール全体にわかる負荷を感じ取り、どれだけうまく自動スケールが実行されているかを確認できます。

最後に、AutoscaleAction (自動スケール アクション) に対する操作ログ エントリも改善しました。このエントリは、(ActiveAutoscaleProfile (アクティブ自動スケール プロファイル) というセクションにある) その特定のスケール アクション間に有効だった設定も含め、サービスをスケールさせるために使われた正確なスケジュールを表示するようになりました。

19

Webサイト: ストレージ アカウントへのWebサーバー ログ記録

本日のリリースでは、HTTPログをWindows Azureストレージ アカウントに直接書くように、Windows Azure Webサイトを構成できるようになりました。これによって、HTTPログをテキストBLOBとして永続化することが、本当に簡単になります。(ストレージ アカウントは大量のデータを保持できるので) このBLOBを無限に格納でき、また、後でこのBLOBに対する高度なデータ マイニング/分析を実行するために使えます。

HTTPログ ファイルのWindows AzureストレージへのBLOBとしての格納

HTTPログがBLOBストレージに直接書かれるようにするには、Windows Azure管理ポータルを使ってWebサイトに進み、「構成」タブをクリックします。それから、「サイト診断」セクションに進みます。本日より、「Webサーバーのログ記録」を有効化する際に、ファイル システム、またはストレージ アカウントにログを格納することを選択できます (ストレージ アカウントのサポートが、本日の新機能です)。

20

ストレージ アカウントへのログ記録

Webサーバーログをストレージ アカウントに保持することを選択する際に、緑色の「ストレージの管理」ボタンをクリックすることで、使いたいストレージ アカウントとBLOBコンテナーの両方を指定できます。これによって、これら両方を構成するために使えるダイアログが表示されます。

21

既定では、ストレージ アカウント内に格納されたログは、決して削除されません。「構成」タブの「サイト診断」セクションにある「保有期間の設定」チェックボックスを選択することで、これをオーバーライドできます。これを使って、代わりにログを保持する日数を指定できます (その日数の後に、ログが自動的に削除されます)。

22

ログを永続化したい方法の構成が完了し、ポータルで「保存」をクリックして設定をコミットしたら、Windows Azure Webサイトは、指定したストレージ アカウントのBLOBコンテナーに、HTTPログ データを自動的にアップロードし始めます。ログはBLOBコンテナーに継続的にアップロードされるので、ログファイルが現れることをすぐに確認し、それから、トラフィックがWebサイトにアクセスするにつれて、ログ ファイルが増大することを確認するでしょう。

ログの分析

HTTPログ ファイルは、どのログ ファイルがどのアクティビティと関連しているかを識別することを簡単にする名前付けスキームを使って、BLOBコンテナー内に永続化されます。ログ フォーマット名スキームは、次の通りです:

[サイト名]/[年]/[月]/[日]/[時間]/[VMインスタンス名].log

HTTPログ自体は、標準HTTPログ ファイル フォーマットに多数の異なる情報を格納した、テキスト形式のファイルです。

23

多様なツール (Visual Studioサーバー エクスプローラー、サード パーティ ツールなど) を使って、ログ ファイルを簡単にダウンロードでき、ログ ファイルをプログラムによってマシンにダウンロードして保存するスクリプトやアプリを書くこともできます。ファイルの内容は標準HTTPログ フォーマットなので、(無料や商用の) 多様なツールを使って、その内容を解析して分析できます。

また、より高度なシナリオ向けには、Windows Azure HDInsightサービス (英語 / 日本語 (機械翻訳)) を使って、自分のHadoopクラスターを起動できるようになりました。HDInsightによって、Windows Azure上で、MadReduceや分析のジョブを実行するために使えるHadoopクラスターを簡単に起動し、迅速に終了できるようになりました。HDInsightはWindows Azure BLOBストレージをネイティブにサポートしているので、HDInsightを使って、BLOBストレージに格納されているWebサイト ログ ファイルに対して、カスタムのMapReduceジョブを実行できるようになりました。これは、サイトのトラフィックを理解して分析し、そこから高度な洞察を得るための、さらに高度な方法を提供します。

操作ログ: より高度なフィルタリング

本日のリリースでは、(Windows Azure管理ポータルの「管理サービス」セクションでアクセスできるようになった) Windows Azure操作ログ機能に対して、いくつかの改善を追加しました。いくつかの追加フィールド (状態、種類、サービス名) をベースにしたフィルタリングをサポートするようになりました。これは、すでにサポートしていた2つのフィルター (サブスクリプション、時間によるフィルター) に加わるものです。

24

これによって、探している特定のログ項目を迅速にフィルターすることが、さらに簡単になります。

まとめ

本日のリリースには、さらに優れたクラウド ソリューションの構築を可能にする、多数の素晴らしい機能が含まれています。もしWindows Azureアカウントをまだ持っていない場合は、無料評価版に登録して、これらの機能すべてを今日から使い始めることができます。それから、Windows Azure開発者センターにアクセスして、アプリの構築方法についてさらに学んでください。

関連情報

2 thoughts on “Windows Azure: 新しい分散型、占有型、高パフォーマンスのキャッシュ サービスと、さらなるクールな改善

Leave a comment