SOAのサービスを連携するのがESBである。Part3では,従来のEAIとESBの違いを中心に解説する。

 ESB(Enterprise Service Bus)は,アプリケーション・サーバーやメインフレームなど,様々なプラットフォーム上で稼働している複数のサービス(コンシューマやプロバイダとなり得る)間を仲介し,柔軟に結合させるための基盤である。ESBはもともと,このような概念を指すものであったが,ベンダー各社がこうした概念を実装する製品(ミドルウエア)を提供しており,製品を指す場合もある。

 ESBは,サービス同士の連携を仲介するための仮想的なバス(情報交換のための通路)であり,このバスに各サービスを接続することで,柔軟なビジネス・プロセスの構築が可能になる。

 ここで言うバスは,パソコン内部にあるPCIバスと同じような意味で使われている。つまり,PCIバスがパソコンのCPUと周辺装置を結ぶ信号の伝送路となり,様々な周辺装置を拡張ボードなどを介してバスに接続し利用可能とするように,ESBもサービスをバスに接続することで,各サービスを呼び出して利用することができるのである。図1にESBのイメージを示す。

図1●ESBのイメージ
図1●ESBのイメージ
ESBはサービスの仲介,ルーティング,変換,セキュリティ,フェールオーバーなどの機能を持つ。サービスのコンシューマはバスに接続された様々な種類のサービスを同一の手順で呼び出すことができる

 従来型のシステム連携では,システム間の連携関係が固定的(これを密結合と呼ぶ)であり,いざ連携関係を解消したり,新たなシステムを追加しようとしたりしたときに,時間と手間が非常にかかっていた。また,連携させようとするシステムの数が増加するにつれて,その組み合わせは複雑なクモの巣状となり,一部のシステム変更がシステム全体に影響を及ぼす構成となっていた。

 これに対して,ESBを利用した場合は,サービスの仲介役となるバスにサービスを接続することで連携を実現できる。この際,個々のサービスは非常に緩やかに結合される(これを疎結合と呼ぶ)ので,サービスの追加や変更に柔軟に対応することができる。さらに,ほかのバスに接続すれば,そのバスにあるサービスも連携させることが可能である。

 ESBは,サービスの仲介役として必要なルーティング,変換,セキュリティ,フェールオーバーなどの機能を持つ。また,SOAをベースに新規に開発されたアプリケーションだけでなく,既存アプリケーションも統合できなければならないため,SOAP/HTTP,SOAP/MOM(Message Oriented Middleware)など各種プロトコルをサポートしている。

これまでのEAIと何が違うのか

 ミドルウエア製品としてESBを見たとき,その特徴をまとめると以下のようになる。

  • 分散,疎結合のアーキテクチャを持つ
  • オープンな標準技術をベースとしたアーキテクチャなので,ベンダーによるロックインを回避でき,トレーニング/開発/サポートにかかるコストの削減が期待できる。
  • 一般的に従来のEAI製品に比べ低価格

 ESBはしばしば,これまでアプリケーション連携ミドルウエアの中心的役割を担ってきたEAI(Enterprise Application Integration)と比較される。アプリケーション同士の連携を仲介し,データ変換やルーティングを行うという機能の類似性から,「ESBは単に低価格なEAIではないか」という誤解を受けるケースも多く見受けられる。では,EAIとESBはどこが違うのか。それをまとめたのが図2である。

図2●EAIとESBの違い<br>中央のサーバーに処理が集中しボトルネックになりやすいEAIに対して,ESBは分散バス型のアーキテクチャのため,こうした問題を回避できる。また,EAIはベンダー独自技術がほとんどで初期投資がかさむ傾向にあったが,ESBは標準技術がベースであり,スモール・スタート(段階的構築)が可能であることが特徴だ
図2●EAIとESBの違い
中央のサーバーに処理が集中しボトルネックになりやすいEAIに対して,ESBは分散バス型のアーキテクチャのため,こうした問題を回避できる。また,EAIはベンダー独自技術がほとんどで初期投資がかさむ傾向にあったが,ESBは標準技術がベースであり,スモール・スタート(段階的構築)が可能であることが特徴だ
[画像のクリックで拡大表示]

 EAIはハブ&スポーク型のアーキテクチャなので基本的に集中処理であり,どうしても処理が集中するハブ部分がパフォーマンスや可用性のボトルネックになりやすい。また,ベンダー各社の独自技術が多く,ベンダーにロックインされてしまうきらいがあった。

 これに対して,バス型のアーキテクチャを取るESBは,コンテンツ・ベース・ルーティングやデータ変換などは分散処理が可能であり,疎結合でサービスを連携できる。これにより,サービスの再利用性が高まる。さらに,サービスの組み換えがあった場合でも迅速に対応できるというメリットがある。また,標準技術をベースとしているため,技術習得の敷居も低いと言えるだろう。このようにEAIとESBには,単に価格面だけではない技術的な違いがある。