エンタープライズ・サービス・バス

**エンタープライズ・サービス・バス**（）は、一般に標準に基づくミドルウェアインフラストラクチャー製品で実装されるソフトウェアアーキテクチャの構成要素であり、上位のより複雑なアーキテクチャの基盤となるサービスを提供するイベント駆動型で標準ベースのメッセージングエンジン（バス）である。

ESB は一般に Enterprise Messaging System の実装の上の抽象化層を提供し、コードを書かずにメッセージングの利点を活用できるようにする。一方、以前からあるエンタープライズアプリケーション統合 (EAI) はハブ・アンド・スポーク型アーキテクチャによるモノリシックな構成であり、ESB ではその構成要素を機能単位に分割し、必要に応じて協調動作するよう分散配置される。

ESB 自体はサービス指向アーキテクチャ (SOA) の実装ではないが、SOA 実装のための機能を提供する。ESB は必ずしも Webサービスに基づいてはいない。例えば、ESB Muleは従来のシステムとの連携を容易に行えるようにするためにFTP, SMTP, POP3, RESTなどの非Webサービス技術にも対応している。ESB は標準ベースで柔軟であり、各種転送媒体をサポートしている。呼び出されるサービスと転送媒体の結合度を弱めるのは、SOA の特徴ではなく、ESB の特徴である。

ESB 製品の多くは SOA での利用を第一に考えられており、それにより利用が広がりを見せている（BPELなど）。

## 主な特徴
エンタープライズサービスバスは一連の機能を総称する便利な用語であり、その実装は様々である。ESB が実体のある製品なのか、アーキテクチャ的なスタイルなのかは議論となっており、ESBの実装も定まっていない（中核となるサーバを持つ場合もあるし、持たない構成もある）。例えば、SOAP と WS-Addressing を組合わせたものが ESB であるという者もいるhttp://jim.webber.name/downloads/presentations/2005-10-Quarterly-Technology-Briefing.ppt。いずれにしても、以下のようなESBの中心となる機能は共通で認識されている。

さらに、ESBは以下の特徴を備えることが**多い**。
* プロセス編成、ビジネスプロセス定義機能（別製品で提供されることもある）。
* 大規模な実装のための部品であり、異機種混合のシステムを SOA（サービス指向アーキテクチャ）によって管理可能にする。ただし、ESB MuleのようなオープンソースのESBは、中小規模のための部品である。
* オペレーティングシステムやプログラミング言語に依存しない。例えば、Javaと.NETのアプリケーションの相互運用を可能にする。
* XMLを通信言語として使用。
* Webサービス標準規格をサポート。
* 各種メッセージ交換パターン(MEP)をサポート（同期、非同期、send-and-forget、出版-購読など）
* 標準ベースのアダプター（J2EE Connector ArchitectureやSAPなど）で既存システムとの統合をサポート
* コンポーネント指向設計によるモジュラー・アーキテクチャ
* データ形式の変換のために、変換サービス（XSLTやXQuery）を備え、メッセージの送信側アプリケーションと受信側アプリケーションで必要な形式が異なる場合にも対応。
* メッセージ送受信のためのスキーマに対する妥当性検証
* 中核のない構成の場合、メッセージを状況によってルーティングしたり変換したりする。
* SLA（サービス水準合意）に従って、メッセージ遅延などをモニタリングする。
* ユーザーの優先順位付けに従ってサービスをクラス分けする。
* アプリケーションが一時的に動作できない場合、メッセージをキューに保持する。

## 主な利点と欠点
### 利点
* 既存のシステムを素早く安価に利用できる。
* 柔軟性の向上。要求仕様が変わっても容易に対応可能。
* 標準仕様に基づいている。
* 企業内の一部門から始めて全体に適用できるスケーラビリティ。
* 中核となるサーバなどが不要。
* システムを停止させずに機器追加などが可能。

### 欠点
* エンタープライズメッセージモデルは一般に強制的である。
* ESB の価値を高めるには、多数の異なるシステムがメッセージ標準によって協調動作する必要がある。
* ベンダーによっては、実装のためにさらなるハードウェア投資が必要。
* ESBを構成するための新たな技能を必要とする。
* 従来のメッセージ指向システムに比較すると、変換（翻訳）層が新たに追加されている。

## 導入する場合の注意点
* 将来計画なしでメッセージのバージョンを重ねていくと、システム間の結合度が強まってしまう。
* 効果的に実装するには、ITILなどのITガバナンスモデルで企業戦略を明確化していなければならない。

## 主な製品

* 有償ソフトウェア
** ActiveMatrix ESB（TIBCO Software）
** ASTERIA WARP（インフォテリア）
** DataSpider Servista（アプレッソ）
** Fiorano ESB（フィオラノ ソフトウェア）
**IBM Integration Bus（日本アイ・ビー・エム）
**IBM WebSphere ESB（日本アイ・ビー・エム）
**InterSystems Ensemble
**Information_Builders iWay Service Manager
**Microsoft Azure Service Bus （日本マイクロソフト）
**Microsoft BizTalk Server （日本マイクロソフト）
**Mule ESB （MuleSoft）
** OpenText AppWorks (オープンテキスト)
** Oracle Enterprise Service Bus （日本オラクル）
**Progress Software Sonic ESB （Trilogyにより買収）
**SAP Process Integration
** Talend Open Studio for ESB（Talend株式会社）
** Talend Enterprise ESB（Talend株式会社）
** Talend Platform for Data Services（Talend株式会社）
**Sonic ESB （Aurea）
**webMethods enterprise service bus （Software AGにより買収）
** WebOTX ESB (日本電気）

*オープンソースソフトウェア
**Apache Camel
** Apache ServiceMix
** Apache Synapse
**Fuse ESB (レッドハット）
**JBoss ESB
**NetKernel
**Open ESB
**Petals ESB
**Spring Integration
**UltraESB
**WSO2 ESB

## 関連項目
* Java Business Integration(JBI)
* イベント駆動型プログラミング
* サービス指向アーキテクチャ (SOA)
* ビジネスプロセス管理 (BPM)
* 企業アプリケーション統合 (EAI)
* メッセージ指向ミドルウェア (MOM)
* クラウドインテグレーション (iPaaS)

## 参考文献

* Dave Chappell, "Enterprise Service Bus" (O’Reilly: June 2004, ISBN 0-596-00675-6)
** 渡邉了介（訳）『エンタープライズサービスバス — ESBとSOAによる次世代アプリケーション統合』、オライリー・ジャパン、2005年2月、ISBN 4-87311-220-6

## 外部リンク
* Apache Camel Apache
* 日本Apache Camelユーザ会 Sourceforge.jp
* アプリケーション統合 日本IBM
* SOAを支えるESBの重要性とは ZDNet Japan