<?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>Se hace camino al andar... &#187; soa</title>
	<atom:link href="http://blog.jmbeas.es/tag/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jmbeas.es</link>
	<description>Experiencias de un informático vocacional buscando la calidad y sus efectos colaterales.</description>
	<lastBuildDate>Mon, 16 Jan 2012 07:25:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>

   <image>
    <title>Se hace camino al andar...</title>
    <url>http://0.gravatar.com/avatar/8c024022cec721aaa11dc3b092e2c29c.png?s=48</url>
    <link>http://blog.jmbeas.es</link>
   </image>
		<item>
		<title>BeCodeWeek : Día 2</title>
		<link>http://blog.jmbeas.es/2011/04/06/becodeweek-dia-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=becodeweek-dia-2</link>
		<comments>http://blog.jmbeas.es/2011/04/06/becodeweek-dia-2/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 07:20:10 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[BeCodeWeek]]></category>
		<category><![CDATA[Agile Levante]]></category>
		<category><![CDATA[becodeweek]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[soaui]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/?p=1095</guid>
		<description><![CDATA[Hoy he tardado casi dos horas en escribir el post del día 1, así que esta noche me he traído el portátil. Quizás no me de tiempo a escribirlo todo, pero sí lo más importante. Hoy he acabado bastante cansado a pesar de haberme levantado &#8220;a mi ritmo&#8221;. Bueno, tardé bastante en llegar al taller, [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy he tardado casi dos horas en escribir el post del día 1, así que esta noche me he traído el portátil. Quizás no me de tiempo a escribirlo todo, pero sí lo más importante.</p>
<p>Hoy he acabado bastante cansado a pesar de haberme levantado &#8220;a mi ritmo&#8221;. Bueno, tardé bastante en llegar al taller, pero es que <a href="http://twitter.com/jmbeas/status/55169878570713088">el concepto Metro</a> no se maneja mucho por la zona; tampoco es que yo pusiera mucha atención al concepto Callejear. Así que pasó <a href="http://twitter.com/jmbeas/status/55182280313937921">lo que tenía que pasar</a>.</p>
<p><a href="http://twitter.com/elmendalerenda">Miguel Angel</a> estaba terminando de preparar el backlog en el que trabajamos ayer mientras yo escribía <a href="http://blog.jmbeas.es/2001/04/05/becodeweek-dia-1/">el post del día 1</a>, aun así contrastamos un par de dudas sobre cómo enfocar las tareas de la primera historia de usuario. Yo esperaba terminar pronto pero, la verdad, Xavi es bastante ruidoso. Por suerte, mañana estará casi todo el tiempo fuera, así que podremos concentrarnos sin problema. Eso sí, cuando vuelva está claro que tendré que ponerme los cascos. <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>Después de publicar el post me senté un rato con Xavi para que me ampliara sobre sus planes para dominar el mundo, con unas patatas fritas y una litrona. Eso sí, entre papa y papa: <a href="http://wisdomofganesh.blogspot.com/2007/10/life-above-service-tier.html">SOAUI</a> y otras lecciones de arquitectura. Además, es evidente que Xavi tiene clarísimas las fuerzas que hacen funcionar un producto y se le ilumina la cara cuando habla de cómo hará funcionar su próximo proyecto.</p>
<p>Después de comer me quedé con Miguel Angel para empezar la primera historia de usuario. Menos mal que él ya había empezado antes de comer porque avanzamos muy poquito. Mi desconocimiento de Javascript, de <a href="http://mootools.net/">Mootools</a> y del dominio del problema a resolver hicieron que no avanzaramos mucho. Xavi dice que, además, también influye mi habilidad natural para cuestionarlo todo. (Él lo dice con otras palabras, pero mi ego me impide reproducirlas). <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>Xavi y Emma nos hicieron llegar tarde a la reunión de <a href="http://twitter.com/AgileLevante" class="twitter-user-link" title="AgileLevante profile on Twitter" target="_blank">@AgileLevante</a>. Miguel Angel se ha propuesto recuperar la actividad del grupo. Para ello cuentan con el apoyo de Emma y de <a href="http://twitter.com/borillo">Ricardo Borillo</a>. A Ricardo le voy avisando desde ya que le voy a grabar un <a href="http://twitter.com/podgramando" class="twitter-user-link" title="podgramando profile on Twitter" target="_blank">@podgramando</a> muy pronto. Tenemos mucho de qué hablar. El grupito que se juntó era una mezcla de &#8220;veteranos&#8221; y &#8220;novatos&#8221;. Para mi fue estupendo ver caras nuevas. El final de la reunión terminó con una retrospectiva en la que tomaron varias acciones (con sus respectivos responsables). Entre ellas, Miguel Angel, se encargará de crear un site para el grupo donde poder ir anunciando la siguiente reunión.</p>
<p>Tras la reunión: cena, ducha, blog y a la cama. (No sin antes tener con <a href="http://twitter.com/hell0360">Emma</a> una conversación sobre SOA mientras revisaba <a href="http://jmbeas.iexpertos.com/tag/soa/">mis viejas entradas en el blog</a> y me instalaba <a href="http://pivotal.github.com/jasmine/">Jasmine</a> para mañana no estar demasiado pez)</p>
<p>&nbsp;</p>
<p><strong>P.S.</strong></p>
<p>Tengo el teléfono estropeado. Nunca os compréis un <a href="http://www.htc.com/es/product/tattoo/overview.html">HTC Tattoo</a>. Tendré que buscarme un teléfono nuevo. ¿Sugerencias? Igual hago como Xavi y vuelvo a un concepto más básico de teléfono-que-sólo-sirve-para-hablar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2011/04/06/becodeweek-dia-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Servicios autónomos</title>
		<link>http://blog.jmbeas.es/2009/04/29/servicios-autonomos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=servicios-autonomos</link>
		<comments>http://blog.jmbeas.es/2009/04/29/servicios-autonomos/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 18:15:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/servicios-autonomos/</guid>
		<description><![CDATA[Hace un par de semanas escribía sobre un curso al que asistí impartido por Udi Dahan y recibí varios comentarios que me pedían los ejemplos que usó Udi para explicar su enfoque SOA basado en el diseño de servicios autónomos en vez de en la reutilización de servicios. Hoy he estado tomando café con mi [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>Hace un par de semanas <a href='http://jmbeas.blogspot.com/2009/04/soa-no-va-de-reusar.html'>escribía sobre un curso</a> al que asistí impartido por <a href='http://www.udidahan.com/about/' target='_blank'>Udi Dahan</a> y recibí varios comentarios que me pedían los ejemplos que usó Udi para explicar su enfoque SOA basado en el diseño de servicios autónomos en vez de en la reutilización de servicios. Hoy he estado tomando café con mi paisano <a href='http://www.linkedin.com/in/jcdelarco' target='_blank'>Jose Carlos del Arco</a>, miembro del <a href='http://www.jsweb.es/pages/comiteOrganizador.html' target='_blank'>comité organizador de JSWEB</a> (Jornadas Científico Técnicas en Servicios Web y SOA) y hemos hablado (¡por supuesto!) de todo esto (y sobre más cosas, claro). Así que no me queda otra que rebuscar entre el desorden de mi mesa dónde demonios dejé esas notas y tratar de explicarlas. Por suerte, este fin de semana pasado he recuperado mi antiguo escáner y creo que podré escribir un poco menos. <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <br/><br/>Recordemos que Udi plantea que nuestros servicios deben ser diseñados para ser autónomos. Esto es, para que colaboren con otros servicios, pero que no estén acoplados a ellos (o que el acoplamiento sea el mínimo posible). Para ello trata de que la mayoría de las colaboraciones se hagan asíncronamente (&#8220;fire and forget&#8221;) y que los datos no sean compartidos sino que haya siempre una única autoridad certificadora de los datos (sólo un servicio escribe y el resto sólo lee). Para lograr que los cambios en los datos estén disponibles en el resto de servicios propone suscripciones a los eventos de cambio en los datos que cada cuál necesita.<br/><br/>Vamos al ejemplo y lo veremos más claro. Cuidado, es un ejemplo para ilustrar la idea de fondo. No lo toméis al pié de la letra.<br/><br/>Supongamos tres departamentos en una empresa (ventas, almacén y marketing).<br/>Supongamos que trabajamos para el departamento de ventas para implementar una aplicación web que permita comprar nuestros productos desde internet. ¡Qué original! ¿Verdad?<br/><br/>La solución que propondríamos sería implementar la aplicación web como más bonita y usable resulte, pero que <b>componerla</b> teniendo en cuenta nuestra orientación a servicios. Así, el catálogo de productos es &#8220;propiedad&#8221; del Departamento de Ventas, pero el precio y disponibilidad no. Por tanto, para mostrar esta información que nos es ajena tendremos que realizar peticiones a otros Departamentos, es decir, llamadas a los servicios de marketing (para el precio) y de almacén (para la disponibilidad).<br/><br/><img src='http://lh4.ggpht.com/_QhcG1I9XuzE/SfiIvn-J1MI/AAAAAAAAAOM/VkF_d5dtudY/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/><br/><br/>Udi, durante el curso, nos habló de cómo se componían las UIs de sitios como eBay o Amazon. Todas tenían en común que se componían a partir de llamadas a diferentes fuentes. Fijaos que hay partes de la UI que son muy estáticas (o casi), como las categorías de productos. Esa parte de la UI puede ser perfectamente el resultado de una llamada a un servicio. A nuestra aplicación web le viene a dar bastante igual si esta semana hemos empezado a vender &#8220;palos de fregona&#8221;, simplemente debería ser una nueva categoría y poco más, porque nuestra aplicación sabe vender productos que tenemos en nuestro catálogo.<br/><br/>Pero vayamos un poco más &#8220;adentro&#8221; de la capa de presentación (o incluso podríamos hablar de las aplicaciones, sin más). Los servicios se diseñarán e implementarán buscando que sean autónomos, es decir, que no requieran de otros para completar sus responsabilidades.<br/><br/>En nuestro ejemplo, el proceso de compra de un producto requerirá de la colaboración con otros servicios. Será necesario conocer el precio de un producto o las promociones o el precio de envío por correo urgente&#8230; Pero esto no quiere decir que nos tengamos que quedar esperando a que cada uno de los servicios nos responda.<br/><br/>En la figura 1 vemos cómo se suscribe el servicio de Ventas a los otros dos servicios. Así, obtiene los datos que necesita para operar de manera autónoma.<br/><br/><img src='http://lh6.ggpht.com/_QhcG1I9XuzE/SfiTSYdUNbI/AAAAAAAAAOQ/CHoc_p8vKik/%5BUNSET%5D.jpg?imgmax=800' style='max-width: 800px;'/><br/><br/><b>Paso 1)</b> Ventas se suscribe al valor de los precios que posee el servicio de Marketing<br/><b>Paso 2)</b> Marketing informa de los precios a Ventas (porque éste no tiene ningún precio anterior)<br/><b>Paso 3)</b> Ventas se suscribe al valor de disponibilidad (&#8220;stock&#8221;) de los productos que posee el servicio de Almacén<br/><b>Paso 4)</b> Almacén informa de las cantidades disponibles en almacén de los productos en el catálogo<br/><br/><br/>Por tanto, nuestra aplicación de Ventas puede mostrar toda la información necesaria para que un usuario inicie la compra de productos. Y dado que estamos suscritos a los cambios que se puedan producir tanto en los precios como en las cantidades disponibles, siempre (con un cierto margen) tendremos la información más actual: que es la única que necesitamos. Ahora veremos qué ocurre durante el proceso de compra.<br/><br/><img src='http://lh5.ggpht.com/_QhcG1I9XuzE/SfiVEpzqMEI/AAAAAAAAAOU/qB2Nqo3GTjE/%5BUNSET%5D.jpg?imgmax=800' style='max-width: 800px;'/><br/><br/><b>Paso 1)</b> El usuario (la aplicación) ya tiene toda la información necesaria para realizar el pedido e inicia el proceso de compra llamando al servicio de Ventas.<br/><b>Paso 2)</b> El servicio de Ventas hace sus comprobaciones, entre las que está el comprobar si hay &#8220;stock&#8221;, y calcula el total de la factura. Todo esto lo puede hacer porque es <b>autónomo</b>.<br/><b>Paso 3)</b> El servicio de Ventas informa al servicio de Almacén de que hay un pedido que debe ser servido. Lo hace asíncronamente, es decir, no espera a que el servicio de Almacén haga lo que tenga que hacer. Simplemente se asegura de proporcionarle toda la información necesaria para que se pueda realizar el proceso de empaquetamiento y envío del pedido al cliente.<br/><b>Paso 4)</b> El servicio de Almacén reduce (en su base de datos) el valor del stock de los productos involucrados en el pedido.<br/><b>Paso 5)</b> Dado que el servicio de Ventas está suscrito a los cambios de disponibilidad de los productos, recibe un mensaje con estos datos actualizados.<br/><br/>Como véis, el proceso de venta de un producto se puede realizar sin necesidad de esperar la respuesta de ningún otro servicio. Es más, el servicio de Almacén podría estar &#8220;apagado&#8221; y eso no nos afectaría para nada. El paso 3 se &#8220;encola&#8221; y el servicio de Almacén ya lo consumirá cuando sea. Por otro lado, si los valores de &#8220;stock&#8221; se mantienen sin cambios durante mucho tiempo, se planteará <b>la decisión de negocio</b> de qué hacer en esos casos: asumir que hay disponibilidad, que no hay disponibilidad, quedarnos con el último valor conocido&#8230;<br/><br/>Lógicamente, hay consideraciones a hacer en el caso de que &#8220;no todo vaya como la seda&#8221;. Hay que definir operaciones de compensación, por ejemplo. Pero si os fijáis, estaremos hablando realmente de automatizar operaciones que ya (probablemente) se están realizando de manera manual en el negocio actual. Por tanto, estaremos alineando la técnica con el negocio. Y demonios, ¿no es de eso de lo que tendríamos que estar hablando?<br/><br/><br/>
<div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=d9dcfa42-684c-83b0-89e3-2e9744866ccd' class='zemanta-pixie-img'/></div>
</div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2009/04/29/servicios-autonomos/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SOA no va de reusar</title>
		<link>http://blog.jmbeas.es/2009/04/16/soa-no-va-de-reusar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=soa-no-va-de-reusar</link>
		<comments>http://blog.jmbeas.es/2009/04/16/soa-no-va-de-reusar/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 10:55:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile-spain]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/soa-no-va-de-reusar/</guid>
		<description><![CDATA[El pasado día 7 asistí a un curso de un día sobre SOA organizado por iMeta e impartido por el reconocido Udi Dahan. Por cierto que fue en las instalaciones de Microsoft en &#8220;La Finca&#8221;. Uuuuyyy, qué miedooorrr&#8230; Bueno, tampoco es para tanto, soy muy Linux y muy Java, pero tampoco soy tan &#8220;talibán&#8221; como [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'><a href='http://www.flickr.com/photos/8623220@N02/2179118865'><img height='50%' width='50%' src='http://farm3.static.flickr.com/2316/2179118865_0e2c3f25f2.jpg' title='' alt='' style='float: left; margin-top: 10px; margin-bottom: 10px; margin-right: 10px;'/></a>El pasado día 7 asistí a <a href='http://jmbeas.blogspot.com/2009/03/udi-dahan-en-madrid.html'>un curso de un día sobre SOA</a> organizado por <a href='http://www.imeta.es/' target='_blank'>iMeta</a> e impartido por el reconocido <a href='http://www.udidahan.com/about/' target='_blank'>Udi Dahan</a>. Por cierto que fue en las instalaciones de Microsoft en &#8220;La Finca&#8221;. Uuuuyyy, qué miedooorrr&#8230; Bueno, tampoco es para tanto, soy muy Linux y muy Java, pero tampoco soy tan &#8220;talibán&#8221; como para no &#8220;entrar en la boca del lobo&#8221;. <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <br/><br/>Bueno, bromas aparte, la organización de iMeta fue muy buena (el <i>catering</i> estuvo a la altura, je, je) y Udi Dahan es toda una garantía. Además, como <a href='http://www.hadihariri.com/' target='_blank'>Hadi Hariri</a> (de iMeta) me había explicado, el curso no estaba centrado en ninguna tecnología en particular. Yo, por si acaso, advertí de mi &#8220;orientación ideológica&#8221; en mi presentación. Por cierto, pensé que mi inglés estaba más oxidado, aunque al final de la tarde ya no daba pié con bola&#8230; <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> <br/><br/>Pero vamos al tema. Udi Dahan es muy conocido en ambientes SOA (Service Oriented Architecture) y <a href='http://jmbeas.blogspot.com/search/label/DDD'>DDD</a> (Domain-Driven Design) porque tiene un enfoque diferente al SOA de otros autores. Durante el curso le pregunté directamente por esto y sobre cómo se encaja con la visión de, por ejemplo, <a href='http://www.thomaserl.com/' target='_blank'>Thomas Erl</a>. Udi me contestó que simplemente no encajan: el enfoque de Erl se centra en reusar, mientras que el de Dahan se centra en la autonomía de los servicios y el principio de única responsabilidad (single responsibility principle). En un correo posterior, Udi me ha aclarado que, según él, <a href='http://jmbeas.blogspot.com/2008/02/modelos-de-servicio-segn-thomas-erl.html'>Thomas Erl ve los servicios</a> más como construcciones de software, mientras que él los ve más como construcciones de negocio (implementados mediante varias construcciones de software). <br/><br/>No hace mucho leí <i><a href='http://www.amazon.com/Implementing-SOA-Total-Architecture-Practice/dp/0321504720' target='_blank'>&#8220;Implementing SOA&#8221;</a></i> de Paul C. Brown, y hay muchas más coincidencias con Dahan que con Erl. Y eso que de Erl tengo nada más y nada menos que tres tochacos que voy a tener que rifar, salvo que el último, <i><a href='http://www.amazon.com/Design-Patterns-Prentice-Service-Oriented-Computing/dp/0136135161' target='_blank'>&#8220;SOA Design Patterns&#8221;</a></i> me sirva para algo más que para hacer bulto en la estantería. :-/<br/><br/>Todo esto que resumo en apenas dos frases queda bastante claro a lo largo del curso porque Udi dedica bastante tiempo a explicar que al reusar realmente incrementamos el acoplamiento mientras que lo que realmente buscamos cuando decimos que queremos reusar es reducir el esfuerzo  empleado al desarrollar las aplicaciones para nuestros clientes. Por ello explica que, aunque sea paradójico, aquellas piezas de código en las que empleamos mayor esfuerzo, y que por tanto serían las que más nos interesaría reusar, suelen ser aquellas que son más específicas y que son las más dificiles de reusar puesto que están fuertemente acopladas al negocio que resuelven. Y por otro lado, resulta que nos empeñamos en que todas nuestras aplicaciones compartan componentes y diseños poco acoplados al negocio (es decir, que no aportan valor de negocio por sí mismos) con el objetivo de que sean lo más reutilizables posible. Pero parece que nos olvidamos de que, hagamos lo que hagamos, en algún punto de nuestro código tendremos que acoplarnos al negocio puesto que para eso desarrollamos software: <u>para resolver problemas de negocio</u>.<br/><br/>Udi nos presenta los conocidos <a href='http://www.infoq.com/news/2007/08/MsSoaTenets' target='_blank'>cuatro principios de la orientación a servicios</a> (según Microsoft):<br/>
<ul>
<li>los servicios son autónomos</li>
<li>los límites son explícitos</li>
<li>los servicios comparten esquemas y contratos, no clases</li>
<li>la compatibilidad de un servicio se determina en base a una política</li>
</ul>
<p><br/>y se centra en la <b>autonomía </b>de los servicios. Nos explica cómo alcanzar esa autonomía de una manera genuína, llegando hasta el extremo de que cualquier servicio se pueda implementar con el diseño que se quiera y sin la obligación de compartir siquiera la misma base de datos. <br/><br/><br />
<blockquote>- ¡Eh! ¿Qué ha dicho? ¿Qué no se comparte la base de datos? <br/>- ¿Y qué pasa con las restricciones de integridad? ¿Qué hago con mis <i>foreign keys</i>? <br/></p></blockquote>
<p><br/>Muchos le preguntaron a Udi por esto. Je, je, yo ya sabía por dónde iba él porque esta discusión me la conozco de cuando estaba en <a href='http://jmbeas.blogspot.com/2008/02/gedos.html'>Degesys</a>, aunque allí no llegamos a ninguna conclusión (al menos mientras yo estuve). El caso es que la respuesta es bien fácil: las restricciones de integridad en la base de datos sólo sirven para acoplar servicios entre sí. Así que tú verás si quieres estar acoplado o no&#8230; <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Claro, para conseguir esta autonomía hay hacer concesiones:<br/>
<ul>
<li>no tenemos un único modelo de datos compartido por todos los servicios</li>
<li>no tendremos un estado coherente de los datos al que estamos acostumbrados</li>
<li>tendremos que asumir un cierto nivel de redundancia en nuestros datos almacenados</li>
</ul>
<p><br/>¿Cómo se consigue esto? Pues Udi lo resuelve de una manera muy sencilla a la vez que elegante:<br/>
<ul>
<li>los datos son &#8220;propiedad&#8221; de una única fuente autorizada, es decir, cada dato en la base de datos sólo es manipulado por un único servicio</li>
<li>los servicios interesados en algún dato se suscriben a los cambios que publicará su fuente autorizada y guardan una copia local del dato (a modo de caché)</li>
</ul>
<p><br/>Esto, si no estoy equivocado, se viene conociendo como <a href='http://en.wikipedia.org/wiki/Event_Driven_Architecture' target='_blank'>Event-Driven Architecture</a> (EDA).<br/><br/>Pero Udi no nos contó sólo que <a href='http://www.udidahan.com/2008/11/01/soa-eda-and-cep-a-winning-combo/' target='_blank'>la manera de implementar SOA es haciendo EDA</a>, sino que insistió en que un servicio debe ser concebido desde el negocio y que se implementa íntegramente desde la UI hasta la BD. Para ello nos explicó diferentes maneras de componer la UI, pero todas evitando el concepto de página monolítica. Y recalcó que no tenemos que tener una única capa técnica consistente, sino que podemos decidir usar diferentes soluciones técnicas para cada problema de negocio. Claro, lo difícil es que hay que acertar en definir los <a href='http://domaindrivendesign.org/discussion/messageboardarchive/BoundedContext.html' target='_blank'><i>&#8220;bounded contexts&#8221;</i></a>, y sólo podremos acertar si tenemos claro que éste no es un trabajo tecnológico sino de análisis del negocio. <br/><br/><br />
<blockquote>- ¡Vaya, claro, por eso hablan tanto del alineamiento de IT con el negocio cuando se hace SOA! <br/>- ¡Ahora lo entiendo!<br/>- ¡Y yo que pensaba que todo esto de SOA iba de reusar componentes tecnológicos y poner webservices por doquier!<br/></p></blockquote>
<p><br/>Si estáis interesados, otro día puedo recopilar más notas y recordar algunos de los ejemplos que usó Udi en el curso.<br/><br/>¡Ah! Y que no se me olvide. Gracias a <a href='http://www.hadihariri.com/' target='_blank'>Hadi</a> por el detalle que tuvo conmigo para <a href='http://www.agile-spain.com' target='_blank'>Agile Spain</a>. Lo dejo ahí porque si queréis enteraros tendréis que asistir a la charla que darán Juan, Agustín y Leo sobre <a href='http://jmbeas.blogspot.com/2009/04/charla-de-introduccion-scrum.html'>&#8220;Introducción a Scrum&#8221;</a>.<br/><br/><br/><br/>
<div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=f8cc07d1-bf1a-851e-8a98-d5edabffb464' class='zemanta-pixie-img'/></div>
</div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2009/04/16/soa-no-va-de-reusar/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Udi Dahan en Madrid</title>
		<link>http://blog.jmbeas.es/2009/03/29/udi-dahan-en-madrid/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=udi-dahan-en-madrid</link>
		<comments>http://blog.jmbeas.es/2009/03/29/udi-dahan-en-madrid/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 14:51:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/udi-dahan-en-madrid/</guid>
		<description><![CDATA[Los que no conozcáis a Udi Dahan quizás tampoco os suene Domain Driven Design (DDD). Udi Dahan es un reconocido experto en SOA y que además participa activamente en la lista de DDD.El próximo 7 de abril va a impartir en las oficinas de Microsoft en Pozuelo (Madrid) un tutorial sobre SOA y DDD como [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>Los que no conozcáis a <a href='http://www.udidahan.com/about/' target='_blank'>Udi Dahan</a> quizás tampoco os suene <a href='http://domaindrivendesign.org/books/index.html#DDD' target='_blank'>Domain Driven Design</a> (DDD). Udi Dahan es un reconocido experto en SOA y que además participa activamente en la <a href='http://tech.groups.yahoo.com/group/domaindrivendesign' target='_blank'>lista de DDD</a>.<br/><br/>El próximo 7 de abril va a impartir en las oficinas de Microsoft en Pozuelo (Madrid) un <a href='http://www.udidahan.com/2009/02/11/architecture-days-in-spain/' target='_blank'>tutorial sobre SOA y DDD</a> como parte de los <a href='http://apps.imeta.com/events/Home/EventDetails/1' target='_blank'>Architecture Days 2009</a> que organiza <a href='http://www.imeta.es/' target='_blank'>iMeta</a> (multinacional con sede en Málaga). Y aunque Udi está relacionado fundamentalmente con el mundo .NET, <a href='http://www.hadihariri.com' target='_blank'>Hadi Hariri</a> (uno de los organizadores del evento) me ha explicado que el tutorial es a nivel de diseño, por lo que no se entra en detalles específicos de ningún lenguaje o plataforma (léase .NET o Java).<br/><br/>Así que he decidido pegarle <b>otro</b> pellizco a mis deteriorados ahorros para escuchar lo que nos tiene que decir <a href='http://www.udidahan.com/' target='_blank'>&#8220;The Software Simplist&#8221;</a> (en inglés, ups).<br/><br/><br/>
<div class='zemanta-pixie'><img src='http://img.zemanta.com/pixy.gif?x-id=4f574d8f-dbdd-8095-a443-af6dad7ce44e' class='zemanta-pixie-img'/></div>
</div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2009/03/29/udi-dahan-en-madrid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeDOS : Nueva etapa, nuevos avances</title>
		<link>http://blog.jmbeas.es/2008/04/28/gedos-nueva-etapa-nuevos-avances/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gedos-nueva-etapa-nuevos-avances</link>
		<comments>http://blog.jmbeas.es/2008/04/28/gedos-nueva-etapa-nuevos-avances/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 23:57:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gedos]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/gedos-nueva-etapa-nuevos-avances/</guid>
		<description><![CDATA[He estado bastante liadillo estas últimas semanas y no he tenido apenas tiempo de nada. Sin embargo, y no sólo porque tengo como objetivo semestral (en mi empresa) liderar esta iniciativa, hemos tenido un par de sesiones más del Grupo de Estudio &#8220;GeDOS&#8221;. Hemos cambiado un poco el formato porque no estabamos consiguiendo avances prácticos: [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>He estado bastante liadillo estas últimas semanas y no he tenido apenas tiempo de nada. Sin embargo, y no sólo porque tengo como objetivo semestral (en <a href='http://jmbeas.blogspot.com/' target='_blank'>mi empresa</a>) liderar esta iniciativa, hemos tenido un par de sesiones más del <a href='http://jmbeas.blogspot.com/search/label/GeDOS'>Grupo de Estudio &#8220;GeDOS&#8221;</a>. Hemos cambiado un poco el formato porque no estabamos consiguiendo avances prácticos: nos quedábamos la mayoría de las ocasiones en temas demasiado teóricos.<br/><br/>Hemos pasado a estudiar directamente los Principios de Diseño que explica Thomas Erl en cada capítulo de <a href='http://www.amazon.com/Principles-Service-Prentice-Service-Oriented-Computing/dp/0132344823' target='_blank'>su libro</a>. Vamos sesión por sesión, capítulo por capítulo. La verdad es que ahora estamos bastante más enfocados que antes y eso se nota. Es como si hubiéramos pasado una barrera que nos impedía hablar de Diseño de Servicios (en mayúscula); quizás la decisión de no hablar de tecnologías, frameworks, etc. haya ayudado en esto.<br/><br/>La siguiente sesión (a la vuelta del puente) será la del capítulo 8 (Abstracción de servicios).<br/><br/></div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2008/04/28/gedos-nueva-etapa-nuevos-avances/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeDOS : La granularidad de los servicios</title>
		<link>http://blog.jmbeas.es/2008/03/14/gedos-la-granularidad-de-los-servicios/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gedos-la-granularidad-de-los-servicios</link>
		<comments>http://blog.jmbeas.es/2008/03/14/gedos-la-granularidad-de-los-servicios/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 20:33:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gedos]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/gedos-la-granularidad-de-los-servicios/</guid>
		<description><![CDATA[La semana pasada celebramos una reunión más del Grupo de Estudio &#8220;Diseño Orientado a Servicios&#8221; en DEGESYS. Parece que, por fin, nos estamos centrando ya y comenzamos a avanzar.Os hago un extracto del acta de esa reunión por si alguien tiene curiosidad y/o quiere comentar algo. Parece que no había quedado bien claro cuál era [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>La semana pasada celebramos una reunión más del <a href='http://jmbeas.blogspot.com/search/label/GeDOS'>Grupo de Estudio &#8220;Diseño Orientado a Servicios&#8221;</a> en <a href='http://www.degesys.com' target='_blank'>DEGESYS</a>. Parece que, por fin, nos estamos centrando ya y comenzamos a avanzar.<br/><br/>Os hago un extracto del acta de esa reunión por si alguien tiene curiosidad y/o quiere comentar algo.<br/><br />
<blockquote><br/>
<p> Parece que no había quedado bien claro cuál era el tema a tratar, pero JRR abrió la discusión tratando sobre &#8220;¿alguien se acuerda cuál fue la pregunta inicial?&#8221;. <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> <br/></p>
<p>La conversación derivó rápidamente a discutir sobre la clasificación que hace T. Erl de servicios de entidad, de actividad o de utilidad. Discutimos sobre si los servicios son fundamentalmente de entidad (CRUD-like) en vez de principalmente de actividad (process-like). JRR hizo una anotación interesante: &#8220;la diferencia entre un <i>task service</i> y un <i>entity service</i> no es si está componiendo un proceso en base a otros servicios o no, sino en su naturaleza&#8221;. Y, ciertamente, Erl nunca hace esa simplificación sino que, en el ejemplo de la pág.45 compara el servicio &#8220;Factura&#8221; y su operación &#8220;Añadir&#8221; (claramente centrada en el dominio funcional de las facturas) con el servicio &#8220;Consolidación de Facturas de un Cliente&#8221; (que manipula un conjunto de facturas para un cliente dado y que no parece claramente centrado en el dominio funcional de las facturas ni tampoco de los clientes). Si este último caso resulta implementado como un proceso de negocio orquestando a otros servicios de grano más fino, hablaríamos de un <i>orchestrated task service</i>. Por último, Erl concluye en esta misma página que reconoce el punto de confusión y establece que la &#8220;capa de servicios de actividad&#8221; no concentra toda la lógica de procesos de negocio sino que se centra en aquella lógica no-agnóstica.</p>
<p>Iván apuntó la diferencia entre la clasificación de servicios por su modelo de análisis frente al diseño de capas de orquestación, de servicios de negocio y de servicios técnicos, donde esta clasificación de servicios de Erl encajaría enteramente en la capa de servicios de negocio. (Me atrevería a afirmar que Iván estaba pensando en <a rel='nofollow' href='http://www.ibm.com/developerworks/library/ar-archtemp/'>este artículo de IBM</a> cuando decía esto)<br/></p>
<p>También discutimos sobre el peligro de centrar el esfuerzo de análisis/diseño en las entidades (porque eso nos hace derivar peligrosamente hacia servicios CRUD-like que ofrecen al exterior el modelo de datos) en vez de trabajar desde los procesos de negocio (desde donde irían surgiendo los servicios y, de ahí, las entidades). En varias ocasiones tratamos de ejemplificar esta orientación a servicios centrada en los requisitos de negocio en vez de centrada en los datos y parece que un ejemplo sacado del proyecto SGC aclaró un poco las ideas: </p>
<p><br/></p>
<p>El proceso de contratación de un nuevo servicio para un cliente dado consiste en:</p>
<ul>
<li>formalizar el contrato con el cliente (persistir los datos de la contratación del servicio)<br/></li>
<li>iniciar la provisión de ese servicio (que debe asíncrona porque puede demorarse en el tiempo incluso días, o no acabar nunca&#8230;), devolviendo al cliente un &#8220;ticket&#8221;</li>
</ul>
<p>Aunque no nos pusimos de acuerdo sobre si debía ser un &#8220;task service&#8221; o un &#8220;proceso orquestador de entity services&#8221;, la discusión parece que fue bastante enriquecedora porque durante ella se dijeron frases como:</p>
<ul>
<li>&#8220;Demandar al consumidor un alto nivel de conocimiento sobre mi negocio es malo&#8221;.</li>
<li>&#8220;El Diseño Orientado a Servicios comienza por el servicio, no por los datos&#8221;.</li>
<li>&#8220;Es más interesante enfocar el modelado desde el punto de vista de las actividades-procesos porque de ellas se podrán deducir más fácilmente las entidades&#8221; (También se escuchó la afirmación contraria) <img src='http://blog.jmbeas.es/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>Para iniciar un diseño SOA tenemos que conocer los procesos de negocio, caso contrario no podremos hacer SOA. </li>
</ul>
<p>Finalmente, acordamos (a propuesta de JRR) que en la siguiente sesión (la semana que viene) trataremos sobre la cualidad de &#8220;distribuibilidad&#8221; de un diseño para ser considerado Orientado a Servicios. La idea de fondo es validar la afirmación &#8220;una arquitectura basada en un contenedor OSGi, pero que no se puede hacer distribuida (e.d. ejecutada en varios contenedores separados físicamente), es SOA&#8221;. No hemos planteado un material específico porque entendemos que en el capítulo 3 da suficientes pistas, sin embargo, quedamos abiertos a alguna aportación que pueda ser de ayuda para esta discusión.</p>
<p><br/></p>
<p><br/></p></blockquote>
</div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2008/03/14/gedos-la-granularidad-de-los-servicios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOFEA: ¿Cómo hacer una capa de presentación orientada a servicios?</title>
		<link>http://blog.jmbeas.es/2008/03/02/sofea-%c2%bfcomo-hacer-una-capa-de-presentacion-orientada-a-servicios/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sofea-%25c2%25bfcomo-hacer-una-capa-de-presentacion-orientada-a-servicios</link>
		<comments>http://blog.jmbeas.es/2008/03/02/sofea-%c2%bfcomo-hacer-una-capa-de-presentacion-orientada-a-servicios/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 23:52:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[sofea]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/sofea-%c2%bfcomo-hacer-una-capa-de-presentacion-orientada-a-servicios/</guid>
		<description><![CDATA[Hace ya bastante tiempo que he oido hablar a mi compañero Xavi Gost acerca de SOFEA. He estado leyendo un artículo de Matt Raible y me ha parecido bastante interesante. Pero lo que más me ha llamado la atención es la visita que a continuación he hecho a la demo de AppCelerator. Es realmente espectacular. [...]]]></description>
			<content:encoded><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>Hace ya bastante tiempo que he oido hablar a mi compañero Xavi Gost acerca de <a href='http://wisdomofganesh.blogspot.com/2007/10/life-above-service-tier.html'>SOFEA</a>. He estado leyendo un <a href='http://raibledesigns.com/rd/entry/sofea_also_known_as_soui'>artículo de Matt Raible</a> y me ha parecido bastante interesante. Pero lo que más me ha llamado la atención es la visita que a continuación he hecho a la <a href='http://unittest.appcelerator.org/index.html'>demo de AppCelerator</a>. Es realmente espectacular. Visitad el ejemplo de los gráficos (Widgets > Chart > Line Chart).<br/><br/></div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2008/03/02/sofea-%c2%bfcomo-hacer-una-capa-de-presentacion-orientada-a-servicios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeDOS : Contratos de servicio y estandarización</title>
		<link>http://blog.jmbeas.es/2008/02/24/gedos-contratos-de-servicio-y-estandarizacion/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gedos-contratos-de-servicio-y-estandarizacion</link>
		<comments>http://blog.jmbeas.es/2008/02/24/gedos-contratos-de-servicio-y-estandarizacion/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 21:45:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gedos]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/gedos-contratos-de-servicio-y-estandarizacion/</guid>
		<description><![CDATA[Bueno, pues esta semana que termina hemos dado el siguiente paso en el Grupo de Estudio. No es que haya sido un &#8220;Gran Paso para la Humanidad&#8221; pero un paso tras otro es como se anda. ESTADO Planificada para el día 14/Feb/2008 Pospuesta a la semana siguiente: J-21/Feb/2008 18:30 Reunión realizada En fase de discusión [...]]]></description>
			<content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">Bueno, pues esta semana que termina hemos dado el siguiente paso en el Grupo de Estudio. No es que haya sido un &#8220;Gran Paso para la Humanidad&#8221; pero un paso tras otro es como se anda.</p>
<h3>ESTADO </h3>
<ul>
<li> Planificada para el día 14/Feb/2008</li>
<li>Pospuesta a la semana siguiente: J-21/Feb/2008 18:30</li>
<li> Reunión realizada </li>
<li> En fase de discusión</li>
</ul>
<h3>TEMA</h3>
<ul>
<li>
<h3>Contratos de servicio y estandarización </h3>
</li>
</ul>
<h3>MATERIAL </h3>
<ul>
<li>SOA. Principles of service design. Ch 6. Service contracts.pdf</li>
</ul>
<h3>ORDEN DEL DÍA</h3>
<ul>
<li>La sesión la moderará JMB.</li>
<li>Dado que no hemos participado mucho en las preguntas planteadas en la sesión anterior, propongo que no concluyamos nada y que pasemos directamente al tema del día: &#8220;Service Contracts&#8221;</li>
<li>La pregunta inicial la hará Xavi G.</li>
<li>Duración: 30 minutos</li>
<li>Es importante (lo ha pedido Iván) que tratemos el tema de discutir sobre los contratos de DEAS-SALES, así que deberíamos dar tiempo a esta discusión para poder sacar conclusiones.</li>
<li>Jose M. explicará los contratos de DEAS-SALES y discutiremos sobre ellos.</li>
<li>Duración: 30 minutos</li>
<li>Conclusiones y a casa.</li>
</ul>
<h3>PONENTE </h3>
<p>    Xavi G. </p>
<h3>MODERADOR </h3>
<p>    JMB</p>
<h3>ASISTENTES </h3>
<ul>
<li>Iván H.</li>
<li> Xavier G.</li>
<li> Jose Manuel B.</li>
<li> Jose M.</li>
<li> Alfredo R.</li>
</ul>
<h3>DURACIÓN </h3>
<p>    Comenzamos a las 18:40 (otra vez un poco de retraso) y terminamos a las 20:05 (previsto a las 19:30)</p>
<h3>RESUMEN </h3>
<p>Xavi G. comenzó haciendo un resumen de lo más relevante (para él) del capítulo y así introdujo la discusión sobre la estandarización de los mensajes.</p>
<p>Xavi G. resaltó algunas frases y conceptos que le parecieron especialmente interesantes:</p>
<ul>
<li>Los contratos deben resistir el paso del tiempo.</li>
<li>Los contratos deben expresar el dominio de su ámbito.</li>
<li>Es interesante que los mensajes sigan un estándar conocido lo más universalmente posible para así no cerrar las posibilidades de interoperabilidad.</li>
<li>Los contratos de servicios deben ser descubribles.</li>
</ul>
<p>Alfredo R. aprovechó que el tema de esta sesión estaba centrada en los contratos para preguntar sobre cómo deberíamos (en DEGESYS) construir nuestros contratos:</p>
<ul>
<li>métodos con campos de tipo String (y que luego se parsean en el servicio para comprobar su conformidad al XSD correspondiente)</li>
<li>métodos con campos de tipo ObjetoComplejo (y que sea JAXB y el wsgen el que construya el XSD)</li>
</ul>
<p>Esta pregunta tiene más que ver con la discusión Contract-First vs Contract-Last y, aunque parece que todos teníamos mucha más simpatía por Contract-First, tanto Alfredo como JMB explicaron por qué estamos usando ahora mismo JAXB (e.d. Contract-Last) y reclamaron una manera diferente de hacer.</p>
<p>También estudiamos los contratos de DEAS-SALES y vimos que no parecía buena idea el seguir el patrón Request/Response puesto que:</p>
<ul>
<li>no era propio del modelo de dominio, sino más bien una necesidad tecnológica (distinguir entre los mensajes de ida y los de vuelta)</li>
<li>no era necesario puesto que ya SOAP hace ese encapsulamiento</li>
</ul>
<p>Revisitamos otra vez la discusión Contract-First vs Contract-Last y parece imponerse la necesidad de un prototipo.</p>
<p>Antes de terminar, JMB preguntó a todos si compartían/conocían la clasificación de tipos de servicio que proponía Thomas Erl en sus libros (entity, task y utility services). Así, propuso el material para la siguiente sesión.</p>
<p></p>
<h3>SIGUIENTE SESIÓN </h3>
<p><b> Fecha:</b> 28/Feb/08<br /><b>Tema:</b> La granularidad de los servicios<br /><b>Material de Estudio:</b> SOA. Principles of service design. Ch 3. Service-oriented computing and SOA.pdf</p>
</div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2008/02/24/gedos-contratos-de-servicio-y-estandarizacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modelos de servicio (según Thomas Erl)</title>
		<link>http://blog.jmbeas.es/2008/02/21/modelos-de-servicio-segun-thomas-erl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=modelos-de-servicio-segun-thomas-erl</link>
		<comments>http://blog.jmbeas.es/2008/02/21/modelos-de-servicio-segun-thomas-erl/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 01:27:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/modelos-de-servicio-segun-thomas-erl/</guid>
		<description><![CDATA[En la página 43 del libro &#8220;SOA: Principles of Service Design&#8221; (y también en el anterior &#8220;Service-Oriented Architecture (SOA): Concepts, Technology, and Design&#8220;), Thomas Erl presenta una clasificación de servicios que creo bastante útil: servicios de entidad (entity services) servicios de tarea (task services) servicios de utilidad (utility services) Estos servicios se dispondrían por capas [...]]]></description>
			<content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">En la página 43 del libro &#8220;<a href="http://www.amazon.com/Principles-Service-Prentice-Service-Oriented-Computing/dp/0132344823">SOA: Principles of Service Design</a>&#8221; (y también en el anterior &#8220;<a href="http://www.amazon.com/Service-Oriented-Architecture-SOA-Technology-Computing/dp/0131858580"><span class="sans">Service-Oriented Architecture (SOA): Concepts, Technology, and Design</span></a>&#8220;), Thomas Erl presenta una clasificación de servicios que creo bastante útil:
<ul>
<li>servicios de entidad (<em>entity services</em>)</li>
<li>servicios de tarea (<em>task services</em>)</li>
<li>servicios de utilidad (<em>utility services</em>)</li>
</ul>
<p>Estos servicios se dispondrían por capas o niveles (<em>layers</em>), estando los de tarea más cerca de las aplicaciones y los de utilidad más cerca de los sistemas externos.</p>
<p><b>Servicios de entidad</b></p>
<p>Su ámbito funcional se circunscribe a una o más entidades de negocio, p.ej. Cliente, Empleado, etc. Se consideran servicios muy reusables porque se diseñan agnósticos de la mayoría de los procesos de negocio en los que puedan participar.</p>
<p>Ejemplo:<br />
<blockquote><strong>Employee</strong>
<ul>
<li>GetWeeklyHoursLimit</li>
<li>UpdateWeeklyHoursLimit</li>
<li>GetHistory</li>
<li>UpdateHistory</li>
<li>DeleteHistory</li>
<li>AddProfile</li>
<li>GetProfile</li>
<li>UpdateProfile</li>
<li>DeleteProfile</li>
</ul>
</blockquote>
<p>Sus operaciones pueden ser parecidas al CRUD.</p>
<p>También llamados &#8220;<em>business entity services</em>&#8221; o &#8220;<em>entity-centric business services</em>&#8220;.</p>
<p><b>Servicios de tarea</b></p>
<p>Su ámbito funcional está directamente asociado a una tarea o proceso de negocio. Este tipo de servicio tiende a ser menos reusable que los servicios de entidad. Normalmente se comporta como el controlador de una composición de servicios (quizás estos más agnósticos).</p>
<p>Ejemplo:<br />
<blockquote><strong>RevenueAnalysis</strong>
<ul>
<li>Submit</li>
</ul>
</blockquote>
<p>Dependiendo de la tecnología empleada, este tipo de servicios pueden ser implementados con un WebService o con una plataforma de orquestación de servicios (definido el proceso de negocio con BPEL, p.ej).</p>
<p>También llamados &#8220;<em>business process services</em>&#8221; o &#8220;<em>task-centric business services</em>&#8220;.</p>
<p><b>Servicios de utilidad</b></p>
<p>Los anteriores se centran en el negocio, éstos se centran en la tecnología.</p>
<p>En la capa de servicios de utilidad agrupamos servicios reusables, transversales e idealmente agnósticos de la aplicación que lo puede consumir.</p>
<p> Ejemplo:<br />
<blockquote><strong>Transform</strong><br /> 
<ul>
<li>APImport</li>
<li>APExport</li>
<li>ARImport</li>
<li>ARExport</li>
</ul>
</blockquote>
<p>También llamados &#8220;<em>application services</em>&#8220;, &#8220;<em>infrastructure services</em>&#8221; o &#8220;<em>technology services</em>&#8220;.</p></div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2008/02/21/modelos-de-servicio-segun-thomas-erl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Primera sesión del GeDOS</title>
		<link>http://blog.jmbeas.es/2008/02/17/primera-sesion-del-gedos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=primera-sesion-del-gedos</link>
		<comments>http://blog.jmbeas.es/2008/02/17/primera-sesion-del-gedos/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 17:29:00 +0000</pubDate>
		<dc:creator>jmbeas</dc:creator>
				<category><![CDATA[Del viejo blog]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gedos]]></category>
		<category><![CDATA[soa]]></category>

		<guid isPermaLink="false">http://jmbeas.iexpertos.com/primera-sesion-del-gedos/</guid>
		<description><![CDATA[Más vale tarde que nunca&#8230; hace más de una semana adelanté que habíamos creado un Grupo de Estudio sobre &#8220;Diseño Orientado a Servicios&#8221; y que iba a tratar de publicar los resultados de la primera reunión. Pues bien, aunque esta semana íbamos a celebrar la segunda reunión y hemos tenido que posponerla, ya tengo el [...]]]></description>
			<content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">Más vale tarde que nunca&#8230; hace más de una semana adelanté que habíamos creado un <a href="http://jmbeas.blogspot.com/2008/02/gedos.html">Grupo de Estudio sobre &#8220;Diseño Orientado a Servicios&#8221;</a> y que iba a tratar de publicar los resultados de la primera reunión. Pues bien, aunque esta semana íbamos a celebrar la segunda reunión y hemos tenido que posponerla, ya tengo el resumen de la primera reunión y quería compartirlo.</p>
<blockquote><p><b>ESTADO</b>
<ul>
<li>Planificada para el día 07/Feb/2008</li>
<li>Reunión realizada</li>
<li>En fase de discusión</li>
</ul>
<p><b>MATERIAL</b>
<ul>
<li>&#8220;<a href="http://www.amazon.com/Principles-Service-Prentice-Service-Oriented-Computing/dp/0132344823">SOA Principles of Service Design</a>&#8221; Capítulo 4 : Service-Orientation</li>
</ul>
<p><b>PONENTE</b>
<ul>
<li>Jose Manuel Beas</li>
</ul>
<p><b>MODERADOR</b>
<ul>
<li>No se eligió previamente, pero JMB intentó actuar como tal.</li>
</ul>
<p><b>ASISTENTES</b>
<ul>
<li>Iván H.</li>
<li>Xavier G.</li>
<li>JMB</li>
<li>Jose M.</li>
<li>Marco F.</li>
<li>JRR</li>
<li>Alfredo R.</li>
</ul>
<p><b>DURACIÓN</b>
<ul>
<li>Comenzamos a las 18:40 (un poco de retraso) y terminamos a las 19:50 (previsto a las 19:30)</li>
</ul>
<p><b>PRIMERA IMPRESIÓN</b>
<ul>
<li>Comenzamos comentando el material que se había elegido.</li>
<li>JMBeas apuntó hacia el concepto de interoperabilidad, que es uno de los 8 conceptos de diseño que se identifican en el material bajo estudio.</li>
<li>La discusión rápidamente se desplazó a temas generales y JoseRamon volvió al foco planteando una pregunta acerca de si un servicio era necesariamente distribuido.</li>
<li>Ante la discusión generalizada se decidió ir repasando cada uno de los 8 conceptos y en el primero y al hilo del significado de &#8220;Standardized Service Contract&#8221; volvió a desviarse hacia temas generales.</li>
<li>La reunión, a partir de ese punto, se desenfoca y acabamos planteando temas demasiado abstractos para ser objeto de estudio. Hablamos de qué es un servicio, de dónde parte, de la importancia del contrato y de cómo es un contrato propiamente dicho.</li>
<li>El tiempo avanza y decidimos cerrar la sesión no sin antes tomar algunas decisiones.  Se decide que el tema de estudio para la siguiente reunión es el capítulo del mismo libro dedicado a los contratos. Se formulan tres líneas de debate:</li>
<ul>
<li>¿El significado de &#8220;Standardized Service Contract&#8221; es el de generar un estándar propio de la empresa o de acercarse a estándares de la industria?</li>
<li>¿Es necesariamente distribuido un servicio? ¿y distribuible?</li>
<li>Definir el ámbito de discusión y de aplicación de SOA para este grupo&#8230; todos estamos de acuerdo en que es Degesys y por lo tanto los escenarios en los que nos movamos deberían estar incluidos en este ámbito.</li>
</ul>
<li>Planteamos también el escribir para la próxima sesión un contrato tal como lo entendemos cada uno para poder, por síntesis, encontrar un punto de partida común para la siguiente sesión.</li>
</ul>
<p><b>CONCLUSIONES FINALES</b>
<ul>
<li>N/A</li>
</ul>
<p><b>SIGUIENTE SESIÓN</b>
<ul>
<li>Fecha: 14/Feb/2008 (San Valentín)</li>
<li>Material de Estudio: &#8220;SOA Principles of Service Design&#8221; Capítulo 6 : Service Contracts (Standardization and Design)</li>
</ul>
</blockquote>
<p>Hemos creado un grupo en GoogleGroups para ver qué tal se nos da. Si vemos que la cosa funciona (y hay petición popular), abriremos la participación al público en general. De momento, a medida que vaya pudiendo extraer alguna conclusión suficientemente interesante, trataré de conseguir permiso para publicarla aquí.</p>
</div>
<div class="blogger-post-footer">http://jmbeas.blogspot.com</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.jmbeas.es/2008/02/17/primera-sesion-del-gedos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

