Skip navigation

ESB Muleとは?

ESB Muleとは、企業サービスバス(ESB)アーキテクチャのアイデアに基づいた、メッセージングプラットフォームです。ESBとは、イントラネット内外のアプリケーション間でデータを交換しあうための、一種の輸送システムの働きをするものです。ESBは「エンドポイント」と呼ばれるデータの終着点を定義し、アプリケーションはそれに対してデータの送受信を行なうことができます。システムの中心に位置し、エンドポイント間のメッセージルーティングを行なうのが「メッセージバス」です。ESBのメッセージング基盤は通常JMSによって実装されますが、MSMQやIBM MQ Series、TIBCO Rendezvousなどの他のメッセージサーバ実装を利用することも可能です。

ESB Muleは、実際には、いわゆる字義通りのESBよりも高い狙いをもっています。私たちは、むしろESB Muleを「アプリケーション間のコミュニケーションを管理するための分散オブジェクトブローカを有する、軽量のメッセージングフレームワーク」と定義しています。オブジェクトブローカとしてのMuleの主要な役割は、サービスコンポーネントを管理することです。ESB Muleに管理されるコンポーネントは汎用メッセージオブジェクト(Universal Message Objects, UMO)と呼ばれます。UMOは基本的にPOJOです。UMOは、同じVM上に存在してもいいですし、ネットワーク上に分散させることも可能です。オブジェクトブローカとしてのESB Muleは、Staged Event Driven Architecture(SEDA)デザインパターンに基づいています。UMO/アプリケーション間のコミュニケーションは、メッセージエンドポイントを通して行なわれます。エンドポイントは、JMS、SMTP、JDBC、TCP、HTTP、XMPP、ファイル転送といった本当にバラバラな技術に対して、シンプルで一貫したインタフェースを用意してくれるものです。

下の図は、ESB Muleを使った一般的なシナリオを示したものです。ESB Muleベースのアプリケーションは、通常ネットワークを跨いだ多くのESB Muleインスタンスによって構成されます。1つ1つのインスタンスは軽量なコンテナで、内部に1つ以上のUMOコンポーネントをもっています。各UMOコンポーネントは、1つ以上のエンドポイントをもち、それを通して互いにイベントを送受信しあいます。


 
 

ESB Muleは本当のESBか?

ESB MuleはESBのコンセプトに沿って設計されていますが、より柔軟にサービス同士が通信しあえるように設計をさらに進化させています。ESBはメッセージバスの考え方を標準化したものですが、ESB Muleのサービスはあらゆる種類のチャンネル上での通信が可能です。ESBを1つのトポロジ―コンポーネントおよびそれらの間の相互作用を組織化する1つの様式―と考えてみてください。ESB MuleがESBと異なる点は、ESB MuleはESBトポロジをサポートしますが、同時に他のトポロジもサポートするのです。ESB Muleがサポートするトポロジには、パイプライン、P2Pネットワーク、クライアント/サーバ、ハブ&スポーク、組込、その他諸々です。企業の複雑なメッセージング/サービス要求をモデル化するために、こういったトポロジも組み合わせて利用することができるのです。より詳しくは、トポロジのページを参照してください。

ESB Muleは、POJOサービスをエンドポイントと結びつけて構成できるようなシンプルで強力なモデルを持ちます。ESB Muleのサービスの実装に、メッセージやインタフェースについての前提条件は一切ありません。ESB Muleの究極の目標は、インテグレーションにおける「スイスのアーミーナイフ」となることです。独自の技術を押し付けるのではなく、周囲の技術に適応していくのです。ESB Muleを使って統合サービスレイヤを構築するときに、押し付けがましいルールは一切ありません。たとえば、JBI、EJB、メインフレーム、メッセージング、Webサービス、ソケット、ファイルシステムを取り込んで、それらすべてをシンプルで一貫したやり方で連携させることもできるでしょう。

ESB Muleを採用すべき理由

ESB Muleプロジェクトと汎用メッセージオブジェクト(UMO)それぞれの最終目標については何万回も語ってきましたが、両者を合わせた統一的な目標については触れてきませんでした(もしかしたら触れたかもしれません・・・)。

  • 複雑なシステム統合のほとんどをカバーできる、スケーラブルなメッセージングフレームワーク
  • 簡単に使えて、かつ複雑なトポロジにも対応できる強力なサーバ
  • シンプルで自律的なコンポーネントの開発と配備
  • コードの再利用。コンポーネントが自己完結した独立な作業単位になっていれば、他のどんなシステムにもプラグインできる
  • 市場への迅速な対応。ESB Muleを使えば、開発/保守コストも一切かからず、時間も短縮できる
  • 分散環境でも容易に管理できる、柔軟で強力な設定

ESB Muleプロジェクトの開始当初は、送受信者、データ形式、データ転送技術などに煩わされずにデータに対して何かを行なうコンポーネントを書くのは、非常に大変でした。「シンプル」というのが重要なキーワードです。多くのブローカや統合技術がバラバラなデータソースを繋げる方法を提供していますが、たいていの場合、期待通りにデータをやりとりさせるには余計なコーディングが必要になります。ESB Muleを使えば、簡単にコンポーネントを作ることができ、かつ振る舞いを変更するのも設定をいじるだけで十分で、余計なコーディングは必要ありません。

ESB Muleは、既存のアプリケーションフレームワークの代わりになるようなものでは決してありません。むしろESB Muleは、Axis、Spring、ActiveMQ、Plexus、PicoContainerといったオープンソースプロジェクトの力を増幅させるものです。ESB Muleは、アプリケーションが様々なプラットフォーム上の様々なシステムと連携しなければならない、エンタープライズなJava開発に横たわるすき間を埋めるものなのです。ESB Muleには、システム間でデータをルーティングしたり、転送したり、変換したりする機能がサポートされているので、強く疎結合化された環境でシステムを連携させる仕事が楽になります。

ESB Muleを始めるには

ESB Muleを始めるのはとても簡単です! 一番手っ取り早いのは、利用者ガイドのリンクを辿ってみることです。利用者ガイドには、以下の項目があるはずです。

  1. ESB Muleのダウンロード
  2. ESB Muleのインストール
  3. ESB Muleの起動
  4. ESB Muleサンプルを使ってみる

ESB Muleを知るには、サンプルをいじってみるのがいいでしょう。まずは Echoサンプル に触ってみることをお勧めします。このサンプルは、コンポーネントを設定して、それをいくつかのトランスポートに公開するまでの一連の手順を、シンプルな形で教えてくれます。

さらにESB Muleを学びたい方に

このドキュメントを読んで、サンプルアプリケーションを動かしてみたら、ESB Muleをもっと使いこなしてみたくなるでしょう。ESB Muleのフレームワークにはたくさんの機能がありますが、それに圧倒される必要はありません  基本的な考え方は 利用者ガイド に説明されています。もっと深く知りたくなったときは、「資料」ページにあるその他のガイドが役に立つでしょう。

フィードバックや質問は、ぜひ メーリングリスト に投稿してください。よろしくお願いします!

Adaptavist Theme Builder Powered by Atlassian Confluence