java - servicios - ¿Es la integración de un ESB(ServiceMix/Mule) vale la pena la curva de aprendizaje?
esb significado (5)
Estoy buscando la integración de un ESB en un producto basado en web Java / Maven existente. Específicamente, estoy mirando a ServiceMix y Mule. El producto se conectará a varios servicios diferentes, incluyendo correo electrónico, Quartz, servicios web RESTful a través de HTTP, SMS e IM. Solo he echado un vistazo rápido a la documentación y las dos opciones parecen ser bastante pesadas y bastante complejas. Parece un ejemplo de libro de texto sobre cuándo usar un ESB, pero no quiero pasar mucho tiempo aprendiendo uno u otro sistema.
Como dije, ya tengo una aplicación web desarrollada por Maven y esperaba que la integración de uno de los sistemas fuera bastante sencilla, incluso para algo tan simple como enviar un correo electrónico, pero parece que agregar cualquiera de los dos abrirá la mitad del mundo. términos de tarros y sería difícil de incrustar en el producto existente.
¿Vale la pena intentar una de estas opciones? ¿Existe una manera fácil de integrarlos en una aplicación existente sin reestructurarla completamente? ¿Hay otras opciones de peso más ligero? ¿Hay algunos aspectos que debería considerar que harían que su uso valga la pena?
Aconsejo no perder su valioso tiempo con MULE. 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.
Mule es bastante simple de usar en términos de servicios de conexión con XML y tienen muchos ejemplos de videos que me parecieron muy útiles.
Se supone que los ESB son futuros y, como usted dice, el suyo parece un ejemplo de un libro de texto sobre dónde usarlo.
Intentaré responder a todas sus preguntas:
¿Vale la pena intentar una de estas opciones? Creo que esta es una pregunta que debe hacerse. ¿Qué está tratando de lograr? Si está intentando facilitar su implementación, probablemente tomará el mismo tiempo a través de código puro o ESB que con toda la configuración incluida. Si está pensando en hacerlo como un ejercicio de aprendizaje, puede valer la pena.
¿Existe una manera fácil de integrarlos en una aplicación existente sin reestructurarla completamente? Respuesta corta no. Necesitará reingeniería para integrarse con la mayoría de las bibliotecas / marcos de terceros.
¿Hay otras opciones de peso más ligero? Mule es bastante simple en realidad. 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 harían que su uso valga la pena? Sí, los ESB están diseñados para empresas donde 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. Por lo tanto, si está creando un software único, es posible que no sea el camino correcto. Pero si agrega más tarde y conecta constantemente diferentes servicios, puede ser la mejor ruta.
Ross Mason, el fundador del proyecto Mule, escribió un artículo realmente bueno sobre este tema, A ESB o Not to ESB . Recomendé echarle un vistazo. Además, es posible que desee revisar Mule iBeans, que ofrece un modelo mucho más simple si está creando esto como una aplicación web y solo quiere hacer una integración ligera y no está interesado en la mediación.
También puede querer echarle un vistazo al marco de Apache Camel, que es realmente poderoso para todas las necesidades de integración que mencionó sin las penalizaciones de un ESB completo.
Yo diría que vale la pena la inversión si tiene más de dos aplicaciones o bases de datos que necesitan comunicarse entre sí Y están utilizando más de un protocolo de comunicación. O, si esperas que esta situación sea cierta en el futuro. Suena como sus requisitos ciertamente se ajusta a esto.
Otra situación que sugeriría el uso de un ESB o al menos un bus de mensajes sería donde usted espera o necesita que una o más de las aplicaciones evolucionen independientemente de las otras. Por ejemplo, uno está en desarrollo activo y los otros no. Un ESB puede aislar los sistemas estables de los cambios en los sistemas desarrollados activamente, eliminando la necesidad de estar siempre actualizando todo.
El verdadero poder de un ESB es que las aplicaciones pueden delegar todas las decisiones sobre cómo comunicarse y con quién comunicarse con el ESB y dejar que ese componente asuma toda la responsabilidad de esos aspectos. Todos los demás componentes se aíslan unos de otros y no tienen que preocuparse unos de otros reduciendo en gran medida 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 ciertamente 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 a los que intenta conectarse.