Windows Azureエンタープライズアプリケーション開発技法
Windows Azureストレージ・サービスとAppFabric 赤間 信幸 2011/12/12 | |
Page1
Page2
|
●2.3.4 Windows Azure AppFabric
Windows Azure AppFabricとは、アプリケーション開発に役立つ、様々なミドルウェアサービスの総称(ブランド名)である*12。本書執筆時点では、表 2-8に示す5つのサービスが提供または提供される予定になっている*13。
表 2-8 Windows Azure AppFabricのサービス一覧 |
*12 なお、オンプレミスのWindows Server向けには、同様のミドルウェアサービスとして、Windows Server AppFabricと呼ばれるものが提供されている。Windows Server AppFabricとWindows Azure AppFabricは、似たような機能も数多く提供されているが、同一のものではない。 |
*13 執筆時点では、インテグレーションやコンポジットアプリについてはまだ全く提供されていない(CTP版なども提供されていない)。 |
この中でも、サービスバスとキャッシングの2つの機能は非常に重要であるため、簡単に概要を説明する。
○Windows Azure AppFabricサービスバスWindows Azure AppFabricサービスバスは、システム間連携を行う際に、インターネット上のクラウドサービスを介して各種のパケット交換を行うためのサービスである。具体的なイメージを掴むため、図 2-29を使って解説する。
図 2-29 Windows Azure AppFabricサービスバス |
今、2つの企業A、Bの社内にあるシステムを連携させ、企業Aのシステムから企業Bのシステムを呼び出す場合を考えてみる。通常、これらの社内システムはファイアウォールの内側にあり、直接通信はできない。直接通信を行うためには、各企業のファイアウォールの構成設定を変更する必要がある。しかし、ファイアウォールの設定変更は様々な観点から容易とはいえない。社内ポリシー的にポートを開けられないことも多いし、また仮にポートを開けられたとしても、そのポート設定を維持・管理するのは非常に大変である。
このような場合に役立つのが、AppFabricサービスバスである。AppFabricサービスバスは、別名でISB(インターネットサービスバス)とも呼ばれており、簡単に言えば、インターネット上の仮想回線サービスのようなものである。具体的には、企業AおよびBの各サーバーから、AppFabricサービスバスに対して「外向きの」接続(通常はHTTPSによる接続)を行う。すると、AppFabricサービスバスがこの2つの接続をうまくつなぎ合わせてくれる。その結果として、企業Aのサーバーから、AppFabricサービスバスを介して、企業Bのサーバーを呼び出すことができるようになる。
このサービスバスの面白いところは、企業Bのシステムから見ると、「外向きの」接続を行ったにもかかわらず、「内向きの」呼び出しを受信できるようになる、というところである。どのようにしてこの仕組みを実現しているのかは本書では解説しないが*14、一般に、各企業のファイアウォールは、受信ポートの解放を認めていない。しかし、外向きの通信については比較的制約が少ないことが多く、特に外向きのHTTPS接続については普通に認めているケースがほとんどだろう。このため、AppFabricサービスバスを使うと、ファイアウォールの構成設定を変えることなく、速やかに企業間連携を行うシステムを立ち上げることができるようになるわけである。
*14 興味がある方は、Windows Azure AppFabricサービスバスの各種の解説資料を読んでみるとよい。 |
ただし、AppFabricサービスバスには難点もある。主な難点としては以下の2つがある。
- AppFabricサービスバスを使うためには、通常、WCF(Windows Communication Foundation)と呼ばれる機能を使ったアプリケーション開発が必要になる*15。
- WCFは.NET Framework 3.5以降でサポートされている機能であるため、.NET以外でアプリケーションを開発する場合にはやや使いにくい。
- 任意のプロトコルをトンネリングさせることができない。
- この機能は、WCFと比較的強く結びついて開発されている。このため、例えばWebサービス呼び出しなどを透過させることは簡単にできても、一般的なTCP/IP通信などを透過させることは難しい。
上記のような問題があるため、現在では後述するWindows Azure Virtual Network機能を使っていただいた方が何かと便利だろう*16。
*15 WCFを使うと、AppFabricサービスバスとの接続時に必要となる様々な処理をすべて隠蔽してくれるためである。 |
*16 もちろんWindows Azure Virtual Networkの方にも難点はある。中でも大きいのは、当該マシンにエージェントソフトをインストールしなければならない点である。AppFabricサービスバスの場合には、エージェントソフトのインストールが不要である。このため、例えば(WAN回線でつながっていない)各事業拠点にアプリケーションを配布し、そのアプリケーションにセンターからのリクエストを受信させたいようなケースでは、AppFabricサービスバスを使う方が有利である。 |
○Windows Azure AppFabricキャッシング
Windows Azure AppFabricキャッシングは、Windows Azureコンピュートサービスなどから利用可能な、分散型メモリキャッシュサービスである(図 2-30)。
図 2-30 Windows Azure AppFabricキャッシング |
AppFabricキャッシングは、メモリ上にキャッシュデータを保持するが、そのデータが複数の物理ノード上に複製されるようになっている。結果として、メモリ上にデータがあるにもかかわらず、故障に対する耐性を持たせることができるようになっている。
このAppFabricキャッシングの典型的な使い方としては、図 2-30に示すような、ASP.NETセッションデータの保存などが挙げられる。Windows AzureコンピュートサービスのWebロールサーバーは、複数のサーバー間で負荷分散できるように設計されているが、この場合、ASP.NETのセッションデータは外部に保持する必要がある。この外部ストレージとして、AppFabricキャッシングを利用することができる*17。
*17 ASP.NETセッションデータの保存先は、必ずしもAppFabricキャッシングでなくても構わない(例えばSQL Azureストレージサービスなどでもよい)が、執筆時点では、AppFabricキャッシングが唯一のオフィシャルなセッションストレージである。なお、AppFabricキャッシングはメモリを使ったストレージであるため、(SQL Azureなどのディスクを使ったストレージに比べて)コスト的には割高である。このため、SQL Azure用のセッションプロバイダーを自作して使った方が、ストレージ自体の利用コストは安価になる。 |
以上で解説した2つの機能以外にも、AppFabricには様々な機能がある。興味がある方は調べてみていただければと思う。
■
次回は、Windows Azure Virtual NetworkやWindows Azure Traffic Managerなどについて解説する。
INDEX | ||
[書籍転載]Windows Azureエンタープライズアプリケーション開発技法 | ||
Windows Azureストレージ・サービスとAppFabric | ||
1.Windows Azureストレージ・サービス | ||
2.SQL Azureデータベース・サービス | ||
「Windows Azureエンタープライズアプリケーション開発技法」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|