Ulti Clocks content
Banner
Mule ESB

¿Qué es Mule?

Mule es una plataforma de mensajería construida en base a ideas de la arquitectura de los Bus de Servicios Empresariales ESB por sus siglas en inglés (Enterprise Service Bus). Un ESB trabaja actuando como una especie de sistema de tránsito que acarrea data dentro o fuera de su Intranet. El ESB define una serie de paradas -endpoints- a través de las cuales, aplicaciones pueden enviar o recibir data desde o hacia el sistema. El corazón del sistema, el Bus de mensajería, se encarga de enrutar mensajes entre los endpoints. El backbone de mensajería de un ESB generalmente se implementa utilizando JMS, pero cualquier otro tipo de implementación de servidores de mensajería pudiese ser utilizado como por ejemplo MSMQ, WebsphereMQ de IBM (conocido en sus versiones anteriores como MQ Series) o TIBCO Rendezvous. 

Mule, de hecho va más allá de la definición típica de un ESB. Para nosotros Mule es un framework de mensajería de bajo peso que contiene un broker de objetos para manejar comunicaciones entre aplicaciones. El punto de que sea un broker de objetos es para manejar componentes de servicio. Estos componentes son llamados Objetos Universales de Mensaje o UMOs por sus siglas en inglés (Universal Message Objects), y son básicamente objetos Java (plain old java objects – POJO).

UMOs pueden existir dentro de una misma máquina virtual o pueden estar esparcidos a lo largo de su red y/o Internet. El broker de objetos se adhiere a una arquitectura orientada a eventos o a un patrón de diseño SEDA. Todas las comunicaciones entre UMOs y otras aplicaciones se realiza mediante endpoints de mensajería. Estos endpoints proveen una interfase consistente y simple para una vasta gama de tecnologías como JMS, SMTP, JDBC, TCP. HTTP, XMPP, archivos, etc...

El diagrama que se muestra a continuación contiene un escenario común utilizando Mule. Aplicaciones Mule usualmente se componen de muchas instancias de Mule a lo largo de una red. Cada instancia es un contenedor de peso ligero que hospeda uno o más componentes UMO. Cada componente UMO tendrá uno o más endpoints a través de los que enviará o recibirá eventos.

Diagrama Mule

¿Mule es un ESB?

Mule fue diseñado manejando los conceptos de un ESB, pero su diseño evolucionó para proveer mayor flexibilidad en la forma como los servicios pueden comunicarse entre ellos. Un ESB estandariza el concepto de un Bus de Mensajes mientras que los servicios Mule pueden comunicarse sobre un amplio rango de canales de comunicación. Piense en un ESB como una topología – una forma de organizar componentes y sus interacciones. Donde Mule difiere de un ESB es que soporta la topología ESB pero también soporta otras: pipeline, peer network, cliente/servidor, hub-and-spoke, embedded y muchas más. Estas topologías pueden ser mezcladas y agrupadas para modelar complejos requerimientos de mensajería y servicios empresariales. Para más información pude acceder a la página de topologías de MuleSource en este enlace.

Mule ha sido diseñada para proveer un modelo simple y poderoso de cablear servicios POJO (Plain Old Java Object) entre si utilizando los endpoints y para hacer ningún tipo de asunción en referencia al mensaje o las interfases utilizadas. La meta final de Mule es ser “La navaja Suiza” de la integración, adaptarse a la tecnología circundante más que prescribir cual utilizar. No existen reglas duras ni rápidas de como debe comportarse una capa de servicios de integración utilizando Mule; se puede interconectar JBI, EJB, aplicaciones de Mainframe, mensajería, servicios web, sockets y sistemas de archivo e interactuar con todos ellos de una manera sencilla y consistente.

¿Porqué Mule?

Las metas del proyecto Mule y de los Objetos Universales de Mensaje (Universal Message Objects) han sido escuchadas miles de veces de muchos proveedores aunque no necesariamente entregadas juntas y en algunos casos ni siguiera entregadas.

  • Un framework de mensajes escalable que debe manejar las complejidades de la integración de sistemas.
  • Disponer de un servidor fácil de usar, aunque poderoso, que pueda operar sobre topologías complejas.
  • Desarrollo y puestan en producción de componentes de manera simple y autónoma.
  • Reutilización de código. Si todos los componentes son unidades independientes y auto-contenidas, pueden ser conectados en cualquier otro sistema.
  • Rápido tiempo a producción (Rapid time to market). Utilizando Mule se obtienen funcionalidades que permiten ahorrar tiempo por medio de no tener que desarrollar en algunos casos o de un bajo overhead de mantenimiento.
  • Flexibilidad. Una poderosa configuración que debe ser fácil de administrar sobre ambientes distribuidos.

Cuando comenzó el Proyecto Mule, parecía existir un gap en el mercado para una manera simple y ligera de escribir componentes que hicieran algo con la data sin la necesidad de preocuparse de quién envía o recibe esa información, el formato de los datos o la tecnología utilizada para el envío/recepción de la misma. La clave aquí era “Simple”, aunque muchas tecnologías para integración o distribución (brokering) ofrecían la habilidad de conectarse a diferentes fuentes de datos, uno terminaba muchas veces teniendo que colocar código adicional para hacer que se comportaran de la manera requerida y para que enviaran la data donde uno deseaba que fuese. Mule le permite rápidamente desarrollar componentes y entonces cambiar la forma en la que se comportan mediante la configuración en lugar del código.

Mule no es de ninguna forma un sustituto para un framework de aplicaciones, de hecho Mule interactua con muchos proyectos open source como: Acis, Spring, Active;Q, Plexus y PicoContainer. Mule llena un espacio en el desarrollo empresarial java donde una aplicación requiere interacciones complejas con una variedad de sistemas en una variedad de plataformas. Mule hace el trabajo ligero de interconectar esos sistemas en un ambiente desacoplado y robusto y provee el soporte necesario para direccionar, transportar y transformar datos desde y hacia esos sistemas.

¿Cómo comenzar?

Puede contactarnos y con gusto lo apoyaremos. Si desea puede leer la siguiente guía en Inglés "Getting started Guide"