日本アイ・ビー・エム株式会社
ソフトウェア事業部 牧野あすか |
 |
第2回の連載「SOAに関する技術」でESB(Enterprise Service Bus)について紹介しましたが、今回はESBに関してより理解を深めたいと思います。
前回の復習となりますが、ESBとは「サービス」へのアクセスをバスを介しておこなうというアーキテクチャー・パターンです。ガートナー社では「Webサービスおよび他の標準仕様に基づいて書かれた標準コンポーネントをお互いにリンクすることができる標準技術に基づいたバス」と定義しており、標準を強調しています。
一方IBMでは、「ESBとは複数の製品が協調して実装、構成される論理的なバスであり、一つのデザインパターンである」と定義しています。ESBもSOAと同様一種の概念に近いものであり、実装は個々のベンダーにゆだねられています。そのためこれがESBですといった製品があるわけでありません。
サービスがあちこちにどんどん増えていくと、あちこちで呼び出しが必要になります。一つのクライアントが複数のサービスを呼び出し、さらに複数のクライアントが複数のサービスを呼び出すと図1のようにその組み合わせは非常に複雑なメッシュ状になります。
「あるサービスの場所が変わりました」ということが起こった場合、その影響はサービスを呼び出している
クライアント全体に及びます。そこで図2のように間に仲介役のハブを置き、ハブを通してサービスにアクセスする、
これがエンタープライズ・サービス・バス(ESB)の考え方です。
これは従来のEAIの考え方と同様です。EAIは各ベンダーから製品が提供されていますが独自技術により実装されています。そこで標準技術に基づいてこうした機能を実装しようという考え方がESBになります。しかし現時点では個々のベンダー独自技術によるEAI製品がESB対応と呼ばれていることもしばしばあります。
旧来からEAIとかメッセージング製品がありますが、これらがSOAに対応していることがESBで重要なキーとなります。
ではSOAに対応しているとはどういうことでしょうか。それはESBのつなぎ先がインターフェイスであるWSDLをインポート
してつなぐことができるという意味です。専門用語を使うと難しくなるので、ここではWSDLを型紙に置き換えて説明します。
サービスは全て型紙(インターフェイス)を持っています。
ESBはサービスをつなぐものですから、これらの型紙がちゃんと合うような受け口の型を用意しておく必要があります。コンセントのプラグと差込口のような関係です。
では図3を見ながら順に解説していきます。


図3
- ESBはサービスをつなぐための受け口として汎用的な口を用意しています。
- サービスをつなぎたいとなった場合、つなぐサービスの型を受け入れるため、サービスの型にあわせて、受け口の形を変更します。
- 受け口の形が変更されるとサービスをつなぐことができるようになります。
※これでESBにサービスがつながりました。次は利用する側を見てみます。
- サービスがつながるとクライアントが利用するためのサービスの型紙(WSDLですね)が外に見えるようになります。
- 利用するクライアントは型紙に合わせたプログラムを用意してサービスにアクセスします。
クライアントプログラムは型紙に合わせるための処理を行う部分(スタブと呼びます)と実際の業務処理を行う部分の
両方からできています。
ESBではクライアントから要求の応じて実際のサービスにつなぎます。今回の場合、実際のサービスはシステムAにありますが、もし同じサービスがシステムBにうつった場合どうなるでしょうか。クライアント側ではなにも変更することはありません。クライアントでは要求がきた場合に自動的にシステムBにあるサービスを呼び出してくれます。それはESBが内部でサービスの場所を認識しているためです。
クライアントがサービスの場所を意識せずとも、利用できるのがESBの大きなメリットといえるでしょう。
|