viernes, febrero 29, 2008

Enterprise Service Bus

Con el auge de la tecnología SOA (Service Oriented Architecture) y EDA (Event Driven Architecture) se perfila la necesidad de un nuevo componente en la ya compleja infraestructura de los servicios de información: el bus de servicios de empresa (ESB). Dicho componente viene a cubrir un espacio creado por la necesidad de permitir la comunicación entre componentes o servicios de la empresa.
Hasta la fecha, el papel integrador venía dado de la mano de EAIs (Enterprise Application Integration), una tecnología que permitía comunicar distintos recursos informáticos para poder hacer uso de ellos conjuntamente. El problema que tiene esta tecnología es que los tiempos de desarrollo son largos, los proyectos conllevan un desembolso importante y existe una absoluta dependencia del fabricante (vendor lock-in).
Debido a esta difícil situación respecto a los EAIs, la industria ha evolucionado hacia lo que se ha pasado a llamar ESB. El corazón de un ESB es un MOM (Message-Oriented Middleware); lo que permite que la comunicación entre distintos componentes se haga de manera transparente, fiable y asíncrona (en el caso de que fuese necesario el sincronismo también deberá estar permitido en el ESB).
Además del sistema de mensajería hacen falta conectores para comunicar los distintos recursos de la empresa con el ESB. Dichos conectores permitirán exponer los recursos de la empresa como servicios dentro del propio ESB (de hecho la definición de los mismos se queda en el nivel de abstracta, sin necesidad de definir puertos). De manera que la comunicación interna del ESB se realiza con XML como formato impuesto, permitiendo con ello acceder de manera sencilla y rápida a la información que transita por dentro del ESB. Este último hecho permite aplicar tecnologías como BAM (Business Activity Monitoring) sobre los datos que transitan por un ESB.
Por último, pero no menos importante, es responsabilidad de un ESB el enrutamiento de los mensajes y la orquestación de los mismos. Por enrutamiento se entiendo el proceso de recibir la entrada de un mensaje y decidir la salida o salidas que el mensaje debe tomar (pudiendo hacer transformación del contenido, gracias al hecho de que es un XML, se pueden usar tecnologías XSLT). La orquestación es el esqueleto de una aplicación compuesta, en la que a través de lenguajes formales se permite definir el flujo de actividades y estados por los que ha de pasar un proceso de empresa para su realización (un ejemplo bastante extendido es BPEL).
Existe la creencia de que un ESB no tiene por qué ser un producto final, sino más bien una manera de enfocar una arquitectura SOA. Sin embargo, lo cierto es que en el mercado ya existen tanto especificaciones que hacen de un ESB un contenedor de componentes estándar (JBI: JSR 208) como productos que las implementan. Respecto a este último punto, es importante ver cómo reacciona la industria ya que actualmente dos de los grandes fabricantes (IBM y BEA) por el momento se niegan a seguir el estándar y tienen su productos propietarios en el mercado.
Para terminar, resaltar que no han sido enumeradas todas las características de un ESB sino que solo se han referido las más importantes tanto por su novedad como por su importancia a la hora de decidir si se ha de invertir tiempo y recursos en implantar un ESB en la empresa.