Spring IntegrationとMuleの棲み分け

今回のブログは、Spring Framework Advent Calendar 2012の6日目の記事として投稿します。

Springに関係する内容として何を書こうか考えたところ、最近、私の周りでよく話題になるSpring IntegrationとMuleについて、妄想レベルですが、書きたいと思います。

Spring IntegrationとMuleは、どちらもEAIのプロダクトとして知られており、EIP(Enterprise Integration Patterns)に従って作られています。ですので、プロダクトの選定時の候補として、どちらを採用すべきか比較されることが多いのですが、実は、用途が結構違うのではと考えています。なぜかと言うと、サービスバス(データの流れを制御する部分という意味で使っています)によって疎結合にしようとする対象が違う(と思う)からです。

Muleの場合、サービスバスは、スタンドアロンのサーバの上に存在します。

ですので、システム間を疎結合にする場合に向いていると言えます。

これに対し、Spring Integrationの場合は、サービスバスが、各システム(Javaアプリ)の中に存在します。

ですので、アプリ内のプログラム間を疎結合にする場合に向いていると言えます。

こう考えると、2つのプロダクトは棲み分けが出来ているので、以下の図のように併用しても良いかもしれません。