2009-09-02 6 views
27

Estoy buscando la integración de un ESB en un producto existente basado en web Java/Maven. Específicamente, estoy buscando en ServiceMix y Mule. El producto se conectará a varios servicios diferentes, incluido el correo electrónico, Quartz, servicios web RESTful a través de HTTP, SMS y mensajería instantánea. Solo he echado un rápido vistazo a la documentación y las dos opciones parecen bastante pesadas y bastante complejas. Parece un ejemplo de libro de texto sobre cuándo usar un ESB, pero no quiero perder mucho tiempo simplemente aprendiendo uno u otro sistema.¿La integración de un ESB (ServiceMix/Mule) vale la curva de aprendizaje?

Como ya he dicho, ya tengo una aplicación web desarrollada por Maven y esperaba integrar uno de los sistemas sería bastante sencillo, incluso para algo tan simple como enviar un correo electrónico, pero parece que agregar o tirar medio mundo en términos de jarras y sería difícil de integrar en el producto existente.

¿Vale la pena intentar obtener una de estas opciones? ¿Existe una manera fácil de integrarlos en una aplicación existente sin reestructurarla por completo? ¿Hay otras opciones más livianas? ¿Hay algunos aspectos que debería considerar que harían que su uso valga la pena?

+2

¿Qué le está comprando un ESB además de una mayor complejidad? ¿Por qué crees que lo necesitas? ¿Cuántos servicios son "varios", y cuántos cree que debe tener para hacer un ESB necesario? – duffymo

+1

Espero tener los dos dígitos bajos de los servicios externos para cuando lleguemos a la producción. Y serán variados, pero muchos de ellos cumplirán propósitos similares. Notificación por correo electrónico, mensajería instantánea o SMS, por ejemplo, donde la única diferencia es el medio. – Tim

+4

Un seguimiento más de un año después. Terminó intercambiando Mule por Camel. Hemos sido muy felices con Camel. Comunidad increíblemente vibrante, liviana y ahora hay un libro para complementar la documentación generalmente buena. Yo diría que comiences con Camel a menos que haya alguna razón obvia de que necesites un ESB completo. – Tim

Respuesta

13

Mule es bastante simple de usar en términos de conectar servicios junto con XML y tienen muchos ejemplos de video que encontré realmente útiles.

Se supone que los ESB son futuros y, como dices, el tuyo parece un ejemplo de libro de texto sobre dónde usarlo.

Voy a tratar de responder a todas sus preguntas:

¿Vale la pena tratar de tirar en una de estas opciones? Creo que esta es una pregunta que debe hacerse, ¿qué está tratando de lograr? si intentas hacer que sea más fácil de implementar, probablemente demore el mismo tiempo a través de un código puro o ESB con toda la configuración incluida. Si está pensando en hacerlo como un ejercicio de aprendizaje, puede valer la pena.

¿Hay una manera fácil de integrarlos en una aplicación existente sin reestructurarla por completo? Respuesta corta no. Necesitará alguna reingeniería para integrarse con la mayoría de las bibliotecas/frameworks de terceros.

¿Hay otras opciones más livianas? Mule es bastante simple realmente. Es posible que pueda usar un MQ para hacer HTTP, SMS e IM. Posiblemente ActiveMQ o RabbitMQ.

¿Hay algunos aspectos que debería considerar que valdrían la pena? Sí, los ESB están diseñados para empresas en las que se agregan nuevos servicios con frecuencia y es probable que la configuración cambie. Tenerlo todo en XML hace que este cambio sea un poco más fácil. Entonces, si solo estás construyendo un software único, puede que no sea el camino correcto. Pero si va a agregar más más tarde y conectar constantemente diferentes servicios, puede ser la mejor ruta.

+1

Pude hacer que Mule trabajara con el proyecto sin * demasiado * problema, aunque parece atraer a casi todos los contenedores imaginables. Cuando finalmente obtuve los encantamientos correctos, el impacto en mi código fue bastante mínimo, lo cual es bueno, pero la documentación no fue excelente para integrar Mule en una aplicación web existente. Todavía no tengo idea de si valdrá la pena, pero ahora tengo un medio para determinarlo. Gracias. – Tim

4

Ross Mason, el fundador del proyecto Mule escribió un muy buen artículo sobre este tema, To ESB or Not to ESB. Yo recomendé echarle un vistazo. Además, es posible que desee consultar Mule iBeans, que ofrece un modelo mucho más simple si está compilando esto como una aplicación web y solo quiere hacer una integración ligera y no está interesado en la mediación.

+0

https://blogs.mulesoft.com/dev/mule-dev/to-esb-or-not-to-esb/ (nuevo enlace) –

12

Puede que también quiera echarle un vistazo al framework Apache Camel, que es realmente potente para todas las necesidades de integración que mencionó sin las penalizaciones de un ESB completo.

+2

curioso que menciones que, como estoy evaluando Camel en este momento como una opción potencial en lugar de Mule, ya que parece ser más ligero. Todavía no tomé ninguna decisión, pero parece que podría darme lo que necesito sin demasiados gastos. – Tim

1

consejo que no pierda su valioso tiempo con la mula. Mi experiencia hasta ahora no es buena. No lo usaría para ningún sistema crítico. Está lejos de ser un producto maduro. Aparte de eso, los servicios RESTful definitivamente prometen mucha simplicidad y tienen casos de uso reales.

1

yo diría que vale la pena la inversión si usted tiene más de dos aplicaciones o bases de datos que tienen que hablar entre sí y están utilizando más de un protocolo de comunicación. O bien, si espera que esta situación sea cierta en el futuro. Parece que tus requisitos ciertamente se ajustan a esto.

Otra situación que se sugiere el uso de un ESB o al menos un bus de mensajes sería donde se espera o necesita una o más de las aplicaciones a evolucionar de forma independiente de los demás. Por ejemplo, uno está en desarrollo activo y los otros no. Un ESB puede aislar los sistemas estables de los cambios en los sistemas activamente desarrollados eliminando la necesidad de estar siempre actualizando todo.

El verdadero poder de un ESB es que las aplicaciones pueden delegar todas las decisiones sobre la forma de comunicarse y con quién comunicarse con la ESB y dejar que ese componente tomar plena responsabilidad por esos aspectos. Todos los demás componentes se aíslan uno del otro y no necesitan preocuparse el uno del otro, lo que reduce enormemente los problemas de combinaciones de dependencias.

En términos de la curva de aprendizaje, he encontrado que Mule ESB es bastante sencillo de aprender y sin duda sería una curva de aprendizaje mucho más baja que tratar de aprender todas las API necesarias para hablar de los múltiples servicios que está intentando para conectarse