<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Espacio SOA &#187; ESB</title>
	<atom:link href="http://www.espaciosoa.net/category/esb/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.espaciosoa.net</link>
	<description>Un Espacio para el Mundo SOA y BPM</description>
	<lastBuildDate>Tue, 26 May 2009 11:29:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Diferencias entre EAI y ESB</title>
		<link>http://www.espaciosoa.net/2008/11/26/diferencias-entre-eai-y-esb/</link>
		<comments>http://www.espaciosoa.net/2008/11/26/diferencias-entre-eai-y-esb/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 19:40:35 +0000</pubDate>
		<dc:creator>Kike</dc:creator>
				<category><![CDATA[EAI]]></category>
		<category><![CDATA[ESB]]></category>

		<guid isPermaLink="false">http://www.espaciosoa.net/?p=50</guid>
		<description><![CDATA[Leyendo el otro día en el grupo &#8220;Service Oriented Architecture Special Interest&#8221; de la red social LinkedIn, me encuentro con una discusión acerca de los conceptos de EAI y ESB y sus diferencias.
Recojo aquí las principales distinciones de las que hablan:
SOA está basado en estándares. Un ESB soporta estándares basados en la integración de sistemas [...]]]></description>
			<content:encoded><![CDATA[<p>Leyendo el otro día en el grupo <strong><a href="http://www.linkedin.com/groups?home=&#038;gid=36604">&#8220;Service Oriented Architecture Special Interest&#8221;</a></strong> de la red social LinkedIn, me encuentro con una discusión acerca de los conceptos de EAI y ESB y sus diferencias.<br />
Recojo aquí las principales distinciones de las que hablan:</p>
<p><em>SOA está basado en estándares. Un ESB soporta estándares basados en la integración de sistemas distribuidos. Un ESB debe ser más distribuido que un broker EAI que centraliza la integración de distintos sistemas utilizando adaptadores propietarios y flujos de mensajes. Además, un ESB debe ser un intermediario de servicios que posibilita un conjunto de patrones tales como enrutado de mensajes y transformaciones de esquemas.</p>
<p>La mayor diferencia entre ESB y EAI es el foco en estándares y los avances en la adopción de los mismos (por los vendedores de middleware y por los vendedores de aplicaciones como SAP y Oracle).</p>
<p>EAI integra aplicaciones, mientras que ESB gestiona servicios. El problema llega cuando se usan servicios para integrar aplicaciones o cuando tienes un vendedor EAI como Software AG, Tibco o IBM que juega en ambos campos y por tanto es dificil la separación de ambos conceptos.</p>
<p>Los EAI suelen tener una arquitectura hub-and-spoke. Los ESB (salvo los que han evolucionado como tal a partir de un EAI) buscan un modelo federado donde multiples nodos tienen el conocimiento sobre como enrutar y transformar los mensajes. </em></p>
<p>¿Qué os parece? ¿Estais de acuerdo?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.espaciosoa.net/2008/11/26/diferencias-entre-eai-y-esb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Conversión de Productos de BEA y Oracle</title>
		<link>http://www.espaciosoa.net/2008/07/02/conversion-de-productos-de-bea-y-oracle/</link>
		<comments>http://www.espaciosoa.net/2008/07/02/conversion-de-productos-de-bea-y-oracle/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 09:12:58 +0000</pubDate>
		<dc:creator>Kike</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.espaciosoa.net/2008/07/02/conversion-de-productos-de-bea-y-oracle/</guid>
		<description><![CDATA[Parece que ya existe finalmente una estrategia de conversi&#243;n de los productos de Oracle y de los productos adquiridos con la compra de Bea. Con este roadmap, el objetivo principal parece ser intentar desbancar al lider hoy por hoy, que es IBM, y que ofrece quiz&#225; la suite m&#225;s implantada entre clientes a nivel mundial [...]]]></description>
			<content:encoded><![CDATA[<p>Parece que ya existe finalmente una estrategia de conversi&oacute;n de los productos de <a href="http://www.oracle.com/index.html" target="_blank">Oracle</a> y de los productos adquiridos con la compra de <a target="_blank" href="http://bea.com/framework.jsp?CNT=homepage_main.jsp&amp;FP=/content">Bea</a>. Con este roadmap, el objetivo principal parece ser intentar desbancar al lider hoy por hoy, que es IBM, y que ofrece quiz&aacute; la suite m&aacute;s implantada entre clientes a nivel mundial (especialmente en el mercado estadounidense).</p>
<p>Adem&aacute;s, por parte de Oracle se continuar&aacute; dando soporte a los productos de BEA que est&eacute;n adquiridos, sin obligaci&oacute;n de migraci&oacute;n de los mismos por parte de los clientes.</p>
<p>Lo primero que resulta de esta fusi&oacute;n, es el <a target="_blank" href="http://otn.oracle.com">Oracle Technology Network</a>, resultado de las comunidades online de Bea (<em>Dev2Dev</em>) y de Oracle (<em>Oracle Java Developer Community</em>).</p>
<p>A nivel de productos, Oracle va a buscar completar una suite lo m&aacute;s extensa y perfecta posible en lugar de una estrategia de productos separados.</p>
<ol>
<li><strong>A nivel de SOA</strong>, seg&uacute;n el Roadmap del producto, se distinguen 3 categor&iacute;as:
<ul>
<li><strong><em>Productos estrat&eacute;gicos</em></strong> : Productos de Bea que ser&aacute;n integrados directamente en Oracle Fusion Middleware, en un periodo m&aacute;ximo de 12-18 meses. Aqu&iacute; se incluyen :
<ul>
<li>Oracle Data Integrator para integraci&oacute;n de datos y ETL batch.</li>
<li>Oracle Service Bus, que unifica AquaLogic Service Bus y Oracle Enterprise Service Bus.</li>
<li>Oracle BPEL Process Manager para orquestaci&oacute;n de servicios e infraestructura de composici&oacute;n de aplicaciones. 
            </li>
<li>Oracle Complex Event Processor para procesamiento de eventos en memoria, integrado con WebLogic Event Server</li>
<li>Oracle Business Activity Monitoring (BAM) para monitorizaci&oacute;n de eventos de negocio y KPIs de procesos.
</li>
</ul>
</li>
<li><strong><em>Productos a continuar y converger</em></strong> : Productos de Bea que ser&aacute;n redise&ntilde;ados e incrementados para integrar con la suite de Oracle en un desarrollo continuo y mantenimiento por al menos 9 a&ntilde;os. Aqu&iacute; se incluyen :
<ul>
<li>BEA Weblogic Integration que converger&aacute; en Oracle BPEL Process Manager
</li>
</ul>
</li>
<li><strong><em>Productos a mantener</em></strong> : Productos de Bea que se continuar&aacute;n manteniendo por un periodo de 5 a&ntilde;os pero que no se busca integrar en la suite de Fusion. Aqu&iacute; se incluyen :
<ul>
<li>BEA Cyclone</li>
<li>BEA RFID Server
</li>
</ul>
</li>
</ul>
</li>
<li><strong>A nivel de BPM</strong>, se intentar&aacute; dar soporte tanto a BPEL para la ejecuci&oacute;n, como BPMN para el modelado. Seg&uacute;n Oracle hay 4 tipos de procesos de negocio : centrados en sistema, en tareas humanas, en documentos y en decisiones. Este punto es muy importante, ya que en el caso del BPM la estrategia a seguir en cuanto a la gama de productos de ambas plataformas, ser&aacute; la siguiente:
<ul>
<li><em><strong>Productos estrat&eacute;gicos</strong></em> :
<ul>
<li>Oracle BPA Designer para modelado y simulaci&oacute;n de procesos</li>
<li>BEA AL-BPM Designer para modelado iterativo de procesos</li>
<li>Oracle BPM, que converger&aacute; como resultado de BEA AquaLogic BPM y Oracle BPEL Process Manager en un &uacute;nico motor de ejecuci&oacute;n</li>
<li>Oracle Document Capture &amp; Imaging para captura de documentos y workflows documentales con integraci&oacute;n ERP</li>
<li>Oracle Business Rules como motor de reglas de negocio.</li>
<li>Oracle Business Activity Monitoring (como BAM)</li>
<li>Oracle WebCenter como interfaz de portal para visualizar la composici&oacute;n de procesos.
</li>
</ul>
</li>
</ul>
</li>
<li><strong>A nivel de Portales y Enterprise 2.0</strong> tenemos por parte de Bea los productos de Aqualogic UI y Weblogic Portal. La convergencia en este caso ser&aacute; la siguiente:
<ul>
<li><em><strong>Productos estrat&eacute;gicos</strong></em> :
<ul>
<li>Oracle Universal Content Management como repositorio de gesti&oacute;n de contenidos, seguridad, publicaci&oacute;n, imagenes, registros y archivo.</li>
<li>Oracle WebCenter Framework para desarrollo de portal y servicios Enterprise 2.0</li>
<li>Oracle WebCenter Spaces &amp; Suite como entorno de portal empaquetado con servicios de computaci&oacute;n social.</li>
<li>BEA Ensemble para ensamblado de portales ligeros basados en REST.</li>
<li>BEA Pathways para analisis de interacciones sociales.
</li>
</ul>
</li>
<li><em><strong>Productos a continuar y converger</strong></em> :
<ul>
<li>BEA WebLogic Portal que ser&aacute; integrado en el Framework WebCenter.</li>
<li>BEA AquaLogic User Interaction (AL-UI) que ser&aacute; integrado en el WebCenter Spaces &amp; Suite
</li>
</ul>
</li>
<li><em><strong>Productos a mantener</strong></em> :
<ul>
<li>BEA Commerce Services</li>
<li>BEA Collabra
</li>
</ul>
</li>
</ul>
</li>
<li><strong>A nivel de Gobernabilidad SOA</strong> la estrategia de conversi&oacute;n ser&aacute; la siguiente:
<ul>
<li><em><strong>Productos estrat&eacute;gicos</strong></em> :
<ul>
<li>BEA AquaLogic Enterprise Repository para capturar, compartir y gestionar el cambio de elementos SOA a trav&eacute;s de su ciclo de vida.</li>
<li>Oracle Service Registry para el UDDI</li>
<li>Oracle Web Services Manager para seguridad y gesti&oacute;n de pol&iacute;ticas QOS en servicios.</li>
<li>EM Service Level Management Pack como consola de gesti&oacute;n para los niveles de tiempo de respuesta de los servicios y la disponibilidad de los mismos.</li>
<li>EM SOA Management Pack como consola de gesti&oacute;n para monitorizaci&oacute;n, traceo y gesti&oacute;n del cambio SOA.
</li>
</ul>
</li>
<li><em><strong>Productos a mantener</strong></em> :
<ul>
<li>BEA AquaLogic Services Manager</li>
</ul>
</li>
</ul>
</li>
</ol>
<p>Podeis oir el webcast del evento en ingl&eacute;s, directamente en la <a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=81641&amp;src=6652055&amp;src=6652055&amp;Act=11" target="_blank">p&aacute;gina de Oracle</a>, obtener m&aacute;s informaci&oacute;n de los productos en la p&aacute;gina de <a href="http://www.oracle.com/products/middleware/bea.html">Fusion Middleware</a> o simplemente esperar al 8 de Julio, que ser&aacute; cuando se anuncie el <a href="http://www.oracle.com/webapps/dialogue/dlgpage.jsp?p_ext=Y&amp;p_dlg_id=4137505&amp;src=2931347&amp;Act=72">roadmap aqu&iacute; en Espa&ntilde;a</a>.</p>
<p><strong>Fuentes : </strong></p>
<p><a href="http://www.brsilver.com/wordpress/2008/07/01/oracle-unveils-plans-for-bea/">BPMS Watch</a><br />
<a href="http://www.column2.com/2008/07/oracle-bea-strategy-briefing/">Column 2 by Sandy Kemsley</a><br />
<a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=81641&amp;src=6652055&amp;src=6652055&amp;Act=11">BEA Welcome and Oracle&#8217;s Middleware Strategy Briefing</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.espaciosoa.net/2008/07/02/conversion-de-productos-de-bea-y-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Topologías de ESB</title>
		<link>http://www.espaciosoa.net/2008/05/26/topologias-de-esb/</link>
		<comments>http://www.espaciosoa.net/2008/05/26/topologias-de-esb/#comments</comments>
		<pubDate>Mon, 26 May 2008 14:23:29 +0000</pubDate>
		<dc:creator>Kike</dc:creator>
				<category><![CDATA[ESB]]></category>

		<guid isPermaLink="false">http://www.espaciosoa.net/2008/05/26/topologias-de-esb/</guid>
		<description><![CDATA[Cuando nos planteamos la utilizaci&#243;n de un bus de servicios empresariales (ESB) como parte de la adopci&#243;n de nuestra Arquitectura SOA; normalmente existen 2 aproximaciones principales a la utilizaci&#243;n del mismo: utilizar un &#250;nico ESB como &#34;tubo unificado&#34; de comunicaci&#243;n de todos los servicios empresariales; o montar una topolog&#237;a de varios ESB que solventen problem&#225;ticas [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando nos planteamos la utilizaci&oacute;n de un bus de servicios empresariales (ESB) como parte de la adopci&oacute;n de nuestra Arquitectura SOA; normalmente existen 2 aproximaciones principales a la utilizaci&oacute;n del mismo: utilizar un &uacute;nico ESB como &quot;tubo unificado&quot; de comunicaci&oacute;n de todos los servicios empresariales; o montar una topolog&iacute;a de varios ESB que solventen problem&aacute;ticas de integraci&oacute;n a nivel departamental o de diversos dominios.</p>
<p>Cada una de las 2 aproximaciones tiene sus ventajas y desventajas: </p>
<ul>
<li>Si dejamos que cada departamento implemente su propio ESB; estaremos dando libertad para que cada uno adopte la soluci&oacute;n que quiera; no obstante la comunicaci&oacute;n entre varios dominios tendr&aacute; que ser establecida de manera expl&iacute;cita. </li>
<li>Por el contrario, si utilizamos un &uacute;nico ESB; el control del mismo ser&aacute; &uacute;nico y todos los departamentos tendr&aacute;n mayor rigidez a la hora de realizar sus integraciones o desarrollos; y adem&aacute;s la comunicacion entre servicios interdepartamentales ser&aacute; casi nativo a la propia topolog&iacute;a de un esb &uacute;nico.</li>
</ul>
<p>En cualquier caso, el utilizar un &uacute;nico ESB no implica una anarquia en la utilizaci&oacute;n de servicios y la &quot;no existencia&quot; de bordes o l&iacute;mites entre departamentos. Normalmente, una aproximaci&oacute;n de ESB &uacute;nico implica la creaci&oacute;n de dominios y subdominios que establecen los l&iacute;mites del conjunto de servicios que expongan (tendremos servicios p&uacute;blicos a todos los dominios del ESB y privados para el propio dominio).</p>
<p>Cuando utilizamos registros de servicios, en el caso de ESB unificados, la sincronizaci&oacute;n entre registros (en caso de que existan varias instancias) es propia de este tipo de topolog&iacute;as. Si hablamos de buses diferentes; tiene que existir un proceso externo de sincronizaci&oacute;n (cuando sea necesario) o al menos el conocimiento de la existencia de diferentes registros (en un intento de favorecer la publicaci&oacute;n y suscripci&oacute;n a servicios empresariales, para as&iacute; buscar la reutilizaci&oacute;n como fin &uacute;ltimo de nuestros registros).<br />
Incluso, cuando tratamos temas como el de la gobernabilidad es muy importante tener constancia de todos los posibles ESB que estemos utilizando (un cambio en un servicio de un ESB debe ser notificado a cualquier consumidor de otro ESB que pueda referenciarlo). Es por ello importante, definir los modelos de gobernabilidad que van a utilizarse, para asegurar siempre la consistencia y el conocimiento de la informaci&oacute;n que manejan.</p>
<p>A la hora de orquestar servicios con, por ejemplo, un motor BPEL, este necesita tener puntos de acceso a los servicios que utilice en cada uno de los buses de servicios que desee conectarse. Puede ocurrir, por ejemplo, que el motor BPEL est&eacute; integrado en el propio ESB (como por ejemplo ocurre en la especificaci&oacute;n JBI en algunos casos) y eso facilite la orquestacion de servicios en un mismo ESB (en el caso de utilizar varios ESB, se deber&aacute;n establecer gateways de comunicaci&oacute;n entre ellos).<br />
A raiz de esa comunicaci&oacute;n entre buses es importante tener en cuenta la fiabilidad de las comunicaciones, ya que de utilizar buses independientes se deber&aacute;n establecer m&eacute;todos de comunicaci&oacute;n que aseguren la fiabilidad de los mismos (siempre que sean necesarios y un simple protocolo http, por ejemplo, no sea suficiente).</p>
<p>La administraci&oacute;n y la monitorizaci&oacute;n (BAM) en casos de buses unificados se simplifica ya que las consolas de administraci&oacute;n est&aacute;n unificadas y, en el caso del BAM, la explotaci&oacute;n de datos es m&aacute;s directa y f&aacute;cil que cuando tenemos varios ESB&#8217;s separados.</p>
<p>Sea como sea, e independientemente de la soluci&oacute;n escogida; hay que tener en cuenta siempre estos factores; ya que normalmente cuando nuestra arquitectura SOA crece, es importante tener siempre el control de todos ellos de la manera m&aacute;s simple y fiable posible.</p>
<p>&iquest;Qu&eacute; creeis? &iquest;Es mejor una aproximaci&oacute;n topol&oacute;gica de un ESB unificado o una topolog&iacute;a de diversos ESB&#8217;s departamentales? &iquest;Qu&eacute; experiencias pr&aacute;cticas teneis al respecto?</p>
<p>[<a href="http://www.espaciosoa.net/foro/">Recuerda que puedes plantear cualquier duda nueva o abrir cualquier tema de discusi&oacute;n en el nuevo Foro de Espacio SOA</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.espaciosoa.net/2008/05/26/topologias-de-esb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Patrones de Mensajería SOA</title>
		<link>http://www.espaciosoa.net/2007/10/30/patrones-de-mensajeria-soa/</link>
		<comments>http://www.espaciosoa.net/2007/10/30/patrones-de-mensajeria-soa/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 20:18:40 +0000</pubDate>
		<dc:creator>Kike</dc:creator>
				<category><![CDATA[ESB]]></category>
		<category><![CDATA[Patrones de Uso]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.espaciosoa.net/2007/10/30/patrones-de-mensajeria-soa/</guid>
		<description><![CDATA[Cuando construimos una Arquitectura SOA, lo que al final estamos definiendo es la forma de intercambio de mensajes entre las distintas aplicaciones o sistemas de un entorno distribuido. Por ejemplo, cuando invocamos un Servicio Web por medio de SOAP/HTTP, lo que estamos dando lugar es a un intercambio de mensajes entre el cliente y el [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando construimos una Arquitectura SOA, lo que al final estamos definiendo es la forma de intercambio de mensajes entre las distintas aplicaciones o sistemas de un entorno distribuido. Por ejemplo, cuando invocamos un Servicio Web por medio de SOAP/HTTP, lo que estamos dando lugar es a un intercambio de mensajes entre el cliente y el proveedor del servicio basado (normalmente) en un patr&oacute;n de mensajes Petici&oacute;n / Respuesta (Request / Response).</p>
<p>Dependiendo de las necesidades que tengamos de comunicaci&oacute;n (sincron&iacute;a vs. asincron&iacute;a; comunicaci&oacute;n 1 a 1, 1 a N o N a N; mensajes erroneos o correctos; mensajer&iacute;a por eventos, etc&#8230;) vamos a definir la forma de intercambio de los mensajes entre las distintas aplicaciones / sistemas de nuestra arquitectura.</p>
<p><strong>Petici&oacute;n / Respuesta (Request / Response)</strong></p>
<p>Es la m&aacute;s utilizadas de todas las formas de intercambios de mensajes (tambi&eacute;n llamada Request / Reply). B&aacute;sicamente, consiste en la petici&oacute;n por parte de un cliente a un proveedor de un servicio y la espera de la respuesta en un tiempo determinado. <br />
La principal caracter&iacute;stica de este patr&oacute;n de mensajer&iacute;a es que resulta s&iacute;ncrono y bloqueante, por lo que durante el tiempo de ejecuci&oacute;n del servicio, el cliente queda bloqueado a la espera. De hecho, es &uacute;til el manejo de timeouts para manejar la situaci&oacute;n en que no haya respuesta por parte del servidor.<br />
Este tipo de mensajer&iacute;a es el indicado para la petici&oacute;n de ejecuci&oacute;n de servicios que suelen ser r&aacute;pidos o cuando del lado del cliente no se puede seguir la ejecuci&oacute;n por necesitar obligatoriamente la respuesta del servidor.<br />
Desde el punto de vista del cliente, es una llamada de tipo RPC (Remote Procedure Call), ya que es bloqueante hasta la llegada de la respuesta.<br />
El protocolo de comunicaci&oacute;n m&aacute;s utilizado para este tipo de mensajer&iacute;a es HTTP.</p>
<p><strong>S&oacute;lo Petici&oacute;n (One-Way)</strong></p>
<p>Es un tipo de mensajer&iacute;a as&iacute;ncrono y no bloqueante. Suele utilizarse cuando el cliente no necesita la respuesta inmediata por parte del servidor y puede seguir ejecut&aacute;ndose. En estos casos puede utilizarse tanto HTTP (sin respuesta) como JMS (quiz&aacute; m&aacute;s apropiado) para la implementaci&oacute;n de este tipo de mensajer&iacute;a (tambi&eacute;n pueden utilizarse otros protocolos como FTP, SMTP, etc&#8230;)<br />
En este punto, es importante diferenciar entre Petici&oacute;n / Respuesta y One-way en ambos sentidos. <br />
En el primero de los casos, implica un bloqueo por parte del cliente a la espera de la respuesta del servidor. <br />
En el segundo de los casos, la Petici&oacute;n / Respuesta se implementa como dos llamadas one-way as&iacute;ncronas, por lo que durante el tiempo de ejecuci&oacute;n del servicio, el cliente no queda bloqueado y puede ejecutar otra l&oacute;gica diferente. De hecho, esta segunda forma requiere que el cliente sea a la vez consumidor y proveedor (ya que necesita implementar alg&uacute;na forma de binding para ser invocado por parte del servidor en la respuesta). Esta opci&oacute;n es bastante &uacute;til cuando se realiza una comunicaci&oacute;n con un servidor del que se necesita la respuesta, pero dada la duraci&oacute;n de ejecuci&oacute;n del mismo, el cliente puede aprovechar para realizar otras tareas programadas. El protocolo de comunicaci&oacute;n m&aacute;s utilizado para este tipo de mensajer&iacute;a es JMS por sus caracter&iacute;sticas as&iacute;ncronas.</p>
<p><strong>Request / Callback</strong></p>
<p>Es un tipo de mensajer&iacute;a request / response as&iacute;ncrona. Normalmente, el cliente puede realizar una invocaci&oacute;n al proveedor del servicio y seguir ejecutando otro c&oacute;digo. La diferencia con la petici&oacute;n one-way en ambos sentidos, radica en que en la petici&oacute;n, se pasa la informaci&oacute;n del callback o manejador de la respuesta. Es decir, a nivel del cliente existe una parte que es la encargada de realizar la petici&oacute;n al servicio y otra parte que es la encargada de manejar la respuesta. <br />
La principal complejidad de este patr&oacute;n de mensajer&iacute;a consiste en que la funci&oacute;n de callback debe ser capaz de manejar el contexto o la informaci&oacute;n de instancia para correlacionar los mensajes de respuesta correctamente con los de la petici&oacute;n.</p>
<p><strong>Publicaci&oacute;n / Suscripci&oacute;n (Publish / Subscribe)</strong></p>
<p>Cuando se realiza una petici&oacute;n que no necesita de una respuesta, suele utilizarse el patr&oacute;n de mensajer&iacute;a conocido como publicaci&oacute;n / suscripci&oacute;n. A diferencia del patr&oacute;n one-way, con Publish / Subscribe se permite la comunicaci&oacute;n 1 a N entre el cliente y los distintos consumidores de los mensajes (que se &quot;suscriben&quot; a la publicaci&oacute;n del mensaje en cuesti&oacute;n).<br />
Este tipo de mensajer&iacute;a suelen ser implementados por medio de protocolos JMS, que permiten la asincron&iacute;a y la persistencia de mensajes hasta su procesamiento.<br />
Un ejemplo de Publicaci&oacute;n / Suscripci&oacute;n ser&iacute;a la notificaci&oacute;n que hace un sistema a otros N sistemas de un cambio en el primero (con un modelo Request / Response o One-Way implicar&iacute;a notificar 1 a 1 a los sistemas implicados; mientras que con el patr&oacute;n Publish / Subscribe se puede realizar en un solo paso).</p>
<p><strong>Mensajes de Error (Fault Messages)</strong></p>
<p>Normalmente, en los casos de comunicaci&oacute;n que hemos descrito anteriormente, admitimos que los mensajes enviados son correctos y que contienen la informaci&oacute;n necesaria para su ejecuci&oacute;n satisfactoria. <br />
No obstante, a veces, es necesario definir como se realiza el intercambio de mensajes para resultados incorrectos o no esperados. <br />
En el caso de mensajer&iacute;a Petici&oacute;n / Respuesta, la informaci&oacute;n que devuelve el proveedor del servicio puede ser la de un mensaje de error. En estos casos, la forma en que est&aacute; definido el mensaje es dependiente del protocolo o el formato a utilizar. Por ejemplo, si utilizamos SOAP como medio de mensajer&iacute;a, se puede definir (aparte del formato de mensaje de la respuesta correcta) un formato para SOAP-Fault como mensajer&iacute;a para casos de excepciones.<br />
En el caso de mensajer&iacute;a as&iacute;ncrona, la respuesta de un mensaje con excepci&oacute;n puede resultar m&aacute;s complicada, ya que el env&iacute;o de una petici&oacute;n no implica la llegada de una respuesta. Por ello, se suelen utilizar colas JMS como protocolo de comunicaci&oacute;n as&iacute;ncrona, ya que nos permite implementar medios de asegurar la recepci&oacute;n/envio de los mensajes por medio de reintentos y persistencia de los mismos en las colas.</p>
<p><strong>EDA (Event-Driven Architecture)</strong></p>
<p>La mensajer&iacute;a por eventos, es un tipo de mensajer&iacute;a que se ha puesto de moda con lo que ha venido a llamarse EDA o la evoluci&oacute;n de SOA. Consiste basicamente en &quot;automatizar&quot; la generaci&oacute;n de mensajes y el env&iacute;o de los mismos por medio de eventos (que ocurren cuando se produce un cambio en el sistema generador de los mismos, por un timer que se ejecuta cada cierto tiempo, etc&#8230;).<br />
Normalmente, un proceso de negocio orquesta la comunicaci&oacute;n con los distintos sistemas/aplicaciones implicadas definiendo el orden en que se ejecutan y como se produce la mensajer&iacute;a o comunicaci&oacute;n con los mismos. <br />
Con EDA, esa orquestaci&oacute;n queda asumida por los propios procesos de cada sistema o aplicaci&oacute;n. Es decir, los servicios de negocio que permiten la integraci&oacute;n con los sistemas finales tienen un tiempo de ejecuci&oacute;n y adem&aacute;s, definen cual es el siguiente servicio a ejecutarse en esa &quot;cadena de eventos&quot; que conforman los procesos en una arquitectura EDA.</p>
<p><strong>Links interesantes:</strong></p>
<p><a target="_blank" href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/">SOAP Version 1.2 Part 1: Messaging Framework</a><br />
<a target="_blank" href="http://www.w3.org/2002/ws/cg/2/07/meps.html">Web Services Message Exchange Patterns</a><a target="_blank" href="http://en.wikipedia.org/wiki/Message_Exchange_Pattern"><br />
Message Exchange Pattern Wikipedia Definition</a><br />
<a target="_blank" href="http://www.serviceoriented.org/message_exchange_pattern.html">Message Exchange Pattern</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.espaciosoa.net/2007/10/30/patrones-de-mensajeria-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usos Prácticos de un ESB</title>
		<link>http://www.espaciosoa.net/2007/10/18/usos-practicos-de-un-esb/</link>
		<comments>http://www.espaciosoa.net/2007/10/18/usos-practicos-de-un-esb/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 22:17:04 +0000</pubDate>
		<dc:creator>Kike</dc:creator>
				<category><![CDATA[ESB]]></category>
		<category><![CDATA[Patrones de Uso]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.espaciosoa.net/2007/10/18/usos-practicos-de-un-esb/</guid>
		<description><![CDATA[Con este primer post, pretendo empezar una colecci&#243;n de art&#237;culos con patrones de uso para distintas herramientas, tecnolog&#237;as y est&#225;ndares relacionadas con el mundo SOA y BPM. Espero que sean de vuestro inter&#233;s y todos podamos aprender un poco m&#225;s; por ello agradecer&#237;a cualquier participaci&#243;n con experiencias reales, opiniones, ideas y cualquier comentario que permita [...]]]></description>
			<content:encoded><![CDATA[<p>Con este primer post, pretendo empezar una colecci&oacute;n de art&iacute;culos con patrones de uso para distintas herramientas, tecnolog&iacute;as y est&aacute;ndares relacionadas con el mundo SOA y BPM. Espero que sean de vuestro inter&eacute;s y todos podamos aprender un poco m&aacute;s; por ello agradecer&iacute;a cualquier participaci&oacute;n con experiencias reales, opiniones, ideas y cualquier comentario que permita enriquecer dichos posts.</p>
<p>El primero de estos art&iacute;culos va a tratar sobre el ESB, c&oacute;mo usarlo, sus aplicaciones reales m&aacute;s comunes, etc&#8230;</p>
<p>Comenzemos pues, definiendo el ESB como un elemento de integraci&oacute;n que combina mensajer&iacute;a, servicios web, transformaci&oacute;n de datos, enrutaci&oacute;n, pol&iacute;ticas de seguridad, etc&#8230; y que permite la interacci&oacute;n entre diversas aplicaciones o sistemas de una Architectura Empresarial.<br />
El ESB se ha convertido en una de las partes m&aacute;s importantes de una Arquitectura SOA ya que se presenta como el &quot;pegamento&quot; multiprotocolo y multiprop&oacute;sito para dicha arquitectura.</p>
<p>Las aplicaciones y caracter&iacute;sticas m&aacute;s comunes del ESB son las siguientes:</p>
<p><strong>Enrutaci&oacute;n basada en contenido:</strong></p>
<p>Generalmente, el ESB cumple un cometido de enrutaci&oacute;n entre sistemas o aplicaciones. Esa enrutaci&oacute;n o decisi&oacute;n del punto final (endpoint) que debe invocarse se puede hacer en funci&oacute;n del contenido del mensaje. Para ello, el mensaje en cuesti&oacute;n debe llevar informaci&oacute;n asociada que permita determinar el endpoint en cuesti&oacute;n (es lo que suele llamarse metadatos o metainformaci&oacute;n del mensaje).</p>
<p>Por ejemplo, podemos hacer una invocaci&oacute;n a un servicio web u otro por medio de sus endpoints (esto es, las url&#8217;s de invocaci&oacute;n de los servicios) en funci&oacute;n de alg&uacute;n par&aacute;metro del mensaje. <br />
El caso pr&aacute;ctico m&aacute;s com&uacute;n, es un mensaje con informaci&oacute;n sobre concesi&oacute;n de un pr&eacute;stamo de dinero para el sector bancario. La decisi&oacute;n de aceptaci&oacute;n del pr&eacute;stamo puede definirse como autom&aacute;tica para cantidades por debajo de un umbral o manuales si se supera dicho l&iacute;mite. El ESB ser&iacute;a capaz de analizar dicha cantidad (ser&iacute;a informaci&oacute;n inclusa en el mensaje) e invocar un servicio web de resoluci&oacute;n autom&aacute;tica o manual seg&uacute;n el caso que est&eacute; manejando.<br />
<strong><br />
Transformaci&oacute;n de mensajes:</strong></p>
<p>La mayor&iacute;a de los ESB suelen incorporar motores de transformaci&oacute;n y parseadores de mensajes que permiten y facilitan la transformaci&oacute;n de los mismos. La manera m&aacute;s com&uacute;n suele ser por medio de un fichero XSLT de Transformaci&oacute;n de mensajes, aunque algunas herramientas utilizan otros sistemas, incluso propietarios. </p>
<p>Por ejemplo, disponemos de un modelo de datos com&uacute;n de nuestra arquitectura y queremos invocar un servicio web con un modelo de datos particular y &uacute;nico. El ESB nos permite realizar la transformaci&oacute;n del mensaje de un modelo a otro por medio de un fichero XSLT (o cualquier otro sistema que utilice) y as&iacute; desacoplar completamente la implementaci&oacute;n de uno y otro. De esta manera, un futuro cambio de uno u otro modelo, solo deber&iacute;a, en principio, aceptar a la transformaci&oacute;n del mensaje, nunca a las implementaciones de ambos modelos involucrados.</p>
<p><strong> Configuraci&oacute;n y no codificaci&oacute;n:</strong></p>
<p>Una de las cosas m&aacute;s ventajosas de un ESB es que suele realizarse todo por medio de configuraci&oacute;n y no codificaci&oacute;n. Independientemente del producto que estemos utilizando (hoy en d&iacute;a la mayor&iacute;a incluyen IDE&#8217;s gr&aacute;ficos que facilitan la configuraci&oacute;n de los elementos del ESB; aunque algunos pueden necesitar de configuraci&oacute;n por medio de ficheros y manualmente) suele ser suficiente con la configuraci&oacute;n de los componentes del ESB que vayamos a utilizar. No suele necesitarse la codificaci&oacute;n, lo que limita el n&uacute;mero de errores y da fiabilidad al bus que se monte.<br />
No obstante, si fuera necesario, la codificaci&oacute;n (sea por medio de Java, .NET, o cualquier otro lenguaje) suele ser posible para casos concretos en que los componentes del ESB manejado no implementen o faciliten la configuraci&oacute;n deseada.</p>
<p><strong> Proxy de Servicios:</strong></p>
<p>Una de las mayores ventajas del ESB es la de crear una capa de proxy por encima del servicio. Ello, nos permite abstraer su implementaci&oacute;n (que al final, puede ser como una caja negra, de la que solo disponemos la interfaz, normalmente su WSDL) y a&ntilde;adirle informaci&oacute;n o requisitos para su ejecuci&oacute;n. </p>
<p>El caso m&aacute;s pr&aacute;ctico ser&iacute;a el de un servicio web con dos operaciones. Una de ellas, permite la consulta online en una base de datos de libros. La otra operaci&oacute;n permite la compra de un libro y por tanto requiere del manejo de informaci&oacute;n confidencial como puede ser una tarjeta de cr&eacute;dito.<br />
El ESB nos permite generar un proxy por encima de dicho servicio y dar lugar a dos nuevos servicios (que ser&aacute;n los que realmente se permitan invocar a traves de aplicaciones cliente). Uno de los dos proxy&#8217;s podr&iacute;a ser el servicio con la operaci&oacute;n de consulta (sin requisito adicional). El otro servicio podr&iacute;a resultar en un proxy con requisito de seguridad a&ntilde;adido sobre la operaci&oacute;n del servicio original. El proxy podr&iacute;a ser requer&iacute;do para su invocaci&oacute;n, por ejemplo, por medio de HTTPS que llamar&iacute;a finalmente a la operaci&oacute;n del servicio original no securizada. </p>
<p><strong> Conversi&oacute;n de protocolos:</strong></p>
<p>Como ya hemos comentado, una de las caracter&iacute;sticas del ESB es su funcionalidad multiprotocolo. Esto es, que permite la conexi&oacute;n a distintas aplicaciones o sistemas por medio de numerosos protocolos. Adem&aacute;s, suelen incorporar la posibilidad de a&ntilde;adir conectores a todo tipo de aplicaciones que pueden ser desarrollados por el mismo fabricante del ESB, por terceros o incluso por el propio desarrollador a trav&eacute;s de un API estandarizada.</p>
<p>El ejemplo m&aacute;s pr&aacute;ctico ser&iacute;a un servicio web por HTTP, al que se le quiere dar fiabilidad por medio de mensajer&iacute;a JMS. El ESB ser&iacute;a el encargado de exponer el servicio de manera fiable a trav&eacute;s de un proveedor de JMS y luego realizar la conversi&oacute;n de protocolo necesaria para la invocaci&oacute;n via HTTP.<br />
<strong><br />
Auditor&iacute;as y Logs de Mensajes:</strong></p>
<p>Otra caracter&iacute;stica importante del ESB es su funci&oacute;n como auditor de mensajer&iacute;a y &quot;logado&quot; de mensajes. La comunicaci&oacute;n de informaci&oacute;n a trav&eacute;s del ESB nos permite centralizar sistemas de log y persistencia de informaci&oacute;n susceptible de ser auditada. Adem&aacute;s, luego con herramientas de BAM o incluso Business Intelligence pueden explotarse dichos datos y realizar monitorizaciones exhaustivas que permitan la optimizaci&oacute;n del ESB, la Arquitectura SOA y en definitiva el negocio de la empresa.<br />
<strong><br />
Manejo de Excepciones:</strong></p>
<p>Generalmente los servicios web tienen un comportamiento de respuesta correcta y en algunos casos pueden devolver excepciones de manera controlada (o no). El ESB nos permite gestionar las excepciones de una manera estandarizada (por ejemplo SOAP Fault) y realizar las correcciones oportunas al ocurrir dichos errores.</p>
<p>El ejemplo m&aacute;s pr&aacute;ctico consistir&iacute;a en definir un modelo est&aacute;ndar de nuestra arquitectura para el manejo de excepciones. Por medio del ESB podr&iacute;amos tratar cualquier tipo de error (independientemente del protocolo o el modelo de datos de los servicios involucrados) de una manera com&uacute;n a todo nuestro entorno y as&iacute; poder unificar criterios, facilitar la internacionalizaci&oacute;n de mensajes de error, etc&#8230;<br />
<strong><br />
Securizaci&oacute;n de Servicios:</strong></p>
<p>Los servicios que suelen integrarse por medio de un ESB pueden o no estar securizados. A veces, la informaci&oacute;n es necesaria de securizarse en mayor o menor medida dependiendo del cliente externo que vaya a utilizarla. Por medio del ESB se pueden definir pol&iacute;ticas de seguridad para los servicios y establecer m&aacute;s o menos requisitos para la invocaci&oacute;n / ejecuci&oacute;n de los mismos.</p>
<p>El ejemplo pr&aacute;ctico consistir&iacute;a en securizar con SSL un servicio sin seguridad (por ejemplo, un servicio adaptado de un sistema legado que carece de elementos securizantes) por medio de certificados digitales.<br />
<strong><br />
Acceso a Repositorio de Servicios:</strong></p>
<p>Un Repositorio de Servicios (no confundir con UDDI) nos permite acceder a metainformaci&oacute;n de los servicios integrados que facilita el control de los mismos y el poder aplicar pol&iacute;ticas y condiciones de una manera centralizada y jerarquizada (entre muchas otras caracter&iacute;sticas, muy ligadas a veces con la gobernabilidad de la arquitectura).</p>
<p>Un ejemplo pr&aacute;ctico consistir&iacute;a en resolver de manera din&aacute;mica los endpoints de invocacion de los servicios por medio del acceso a un repositorio de servicios que nos diera dicha informaci&oacute;n en tiempo de ejecuci&oacute;n. De esta manera, por ejemplo, cambiar a la invocaci&oacute;n de un servicio en pruebas u otro de respaldo, ser&iacute;a autom&aacute;tico por medio de configuraci&oacute;n del propio repositorio.<strong></p>
<p>Validaci&oacute;n, Enriquecimiento, Transformaci&oacute;n y Operaci&oacute;n de Mensajes:</strong></p>
<p>Se puede decir, que estas son las 4 caracter&iacute;sticas estrella de un ESB:</p>
<p><em> Validaci&oacute;n</em> de la informaci&oacute;n, de los mensajes entrantes, sobre los que se pueden aplicar distintas condiciones y verificaciones que hagan cumplir los requisitos establecidos.<br />
<em> Enriquecimiento</em> de los mensajes, posiblidad de a&ntilde;adir informaci&oacute;n o metainformaci&oacute;n adicional para cumplir las necesidades de integraci&oacute;n en cada momento.<br />
<em> Transformaci&oacute;n</em> de los mensajes, normalmente entre los diversos modelos de datos del conjunto de servicios y aplicaciones a integrar.<br />
<em> Operaci&oacute;n</em> de los mensajes o enrutaci&oacute;n en funci&oacute;n de directivas preestablecidas o a partir de metainformaci&oacute;n inclusa en la propia comunicaci&oacute;n.</p>
<p>Estas son solo algunas de las principales caracter&iacute;sticas y usos de un ESB. Dependiendo del producto que vayamos a utilizar ser&aacute; m&aacute;s o menos fuerte en ciertas cosas u otras.</p>
<p>&iquest;Qu&eacute; otras experiencias reales teneis con ESB&#8217;s? &iquest;Veis que falte algo? &iquest;Cu&aacute;l es el producto del mercado que creeis mejor se adapta a vuestras necesidades o que cumple en mayor medida con estos requisitos?</p>
<p><strong>Links interesantes:</p>
<p></strong><a target="_blank" href="http://soa.sys-con.com/read/46170.htm">ESB Integration Patterns by Dave Chappel</a><br />
<a href="http://www.redbooks.ibm.com/abstracts/sg246346.html" target="_blank"> Patterns: Implementing an SOA using an Enterprise Service Bus </a><br />
<a target="_blank" href="http://www.redbooks.ibm.com/abstracts/sg246773.html"> Patterns: Integrating Enterprise Service Buses in a Service-Oriented Architecture </a><br />
<a href="http://www.ibm.com/developerworks/patterns/application/at4-runtime.html" target="_blank"> Application Integration::Broker application pattern::Runtime patterns</a><br />
<a target="_blank" href="http://safari.oreilly.com/0596006756/esb-PREFACE-2"> Enterprise Service Bus (O&#8217;Reilly Safari Books Online)</a><br />
<a href="http://artsciita.blogspot.com/2006/01/esb-patterns-that-click.html" target="_blank"> ESB Patterns that &quot;Click&quot; (The Art and Science of Being an I/T Architect)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.espaciosoa.net/2007/10/18/usos-practicos-de-un-esb/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>A la Caza del ESB Open Source</title>
		<link>http://www.espaciosoa.net/2007/08/24/a-la-caza-del-esb-open-source/</link>
		<comments>http://www.espaciosoa.net/2007/08/24/a-la-caza-del-esb-open-source/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 18:06:32 +0000</pubDate>
		<dc:creator>Kike</dc:creator>
				<category><![CDATA[ESB]]></category>
		<category><![CDATA[Espacio SOA]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.espaciosoa.net/2007/08/24/a-la-caza-del-esb-open-source/</guid>
		<description><![CDATA[Estos d&#237;as he estado buscando un ESB Open Source que se ajuste bien a mis necesidades. Empec&#233; mirando ServiceMix (al parecer se integra muy bien con Spring que es una de mis necesidades) y despu&#233;s me puse a mirar alg&#250;n otro: Mule, JBoss ESB y finalmente Open ESB. 
Creo que me voy a quedar con [...]]]></description>
			<content:encoded><![CDATA[<p>Estos d&iacute;as he estado buscando un ESB Open Source que se ajuste bien a mis necesidades. Empec&eacute; mirando <a href="http://incubator.apache.org/servicemix/home.html">ServiceMix</a> (al parecer se integra muy bien con Spring que es una de mis necesidades) y despu&eacute;s me puse a mirar alg&uacute;n otro: <a href="http://mule.codehaus.org/display/MULE/Home">Mule</a>, <a href="http://labs.jboss.com/jbossesb/">JBoss ESB</a> y finalmente <a href="https://open-esb.dev.java.net/">Open ESB</a>. <br />
Creo que me voy a quedar con este &uacute;ltimo. Les cuento mi historia:</p>
<p>Ando metido en un proyecto personal de estos que llaman ahora &quot;Web 2.0&quot; y en una primera instancia el uso que voy a dar al bus de servicios es para integrar numerosos servicios web. <br />
Mis necesidades iniciales son transformaci&oacute;n de datos y conversi&oacute;n de protocolos (a futuro posiblemente necesite orquestar servicios, por lo que bpel como lenguaje ser&aacute; perfecto ya que JBI puede incluir un componente espec&iacute;fico para ello). Y todo esto para cientos de servicios web a integrar&#8230; creo que un ESB llena a la perfecci&oacute;n mis requisitos.</p>
<p>Siempre he tenido que trabajar con ESB&#8217;s comerciales y nunca me hab&iacute;a puesto a mirar detenidamente las diferencias entre los Open Source del mercado. El caso es que me propuse realizar una peque&ntilde;a prueba para ver cual escog&iacute;a (partiendo de dos esquemas XSD de datos y un XSLT de tranformaci&oacute;n, utilizar un componente JBI de conversi&oacute;n de datos para hacerlo funcionar).</p>
<p>Creo que me voy a quedar con Open ESB. Me ha parecido el m&aacute;s r&aacute;pido e intuitivo de instalar/configurar/implementar (partiendo de cero) para una peque&ntilde;a prueba de transformaci&oacute;n de datos con XSLT. Y adem&aacute;s, me apetece probar GlassFish y NetBeans (<a href="https://open-esb.dev.java.net/Downloads_OpenESB_Addons_NB6.html">vienen en el mismo paquete</a>). Acostumbrado a los JBoss/Weblogic y a Eclipse quiero probar la &quot;gran alternativa&quot; de la cual he leido muy buenas cr&iacute;ticas.</p>
<p>&iquest;Hab&eacute;is trabajado vosotros con alguno de estos ESB? &iquest;Qu&eacute; os han parecido? Cualquier ayuda/consejo ser&aacute; agradecida <img src="/wp-content/plugins/deans_fckeditor/fckeditor/editor/images/smiley/msn/regular_smile.gif" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.espaciosoa.net/2007/08/24/a-la-caza-del-esb-open-source/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
