20120804-143736.jpg

El bueno de Vilfredo nos dejó una regla basada en la experiencia que ha pasado a la historia con su apellido: Pareto.

Esta regla de Pareto o la del 80-20 se puede aplicar a muchos ámbitos de la vida, incluida la informática. Nos dice por ejemplo, que el 80% de los errores en el software están en el 20% del mismo o que el 80% del coste del desarrollo produce únicamente el 20% del software. Aquí lo tenéis en la wikipedia

Y puestos a ser originales, durante esta semana, he hecho una reflexión sobre esta famosa regla y SOA, como no podría ser de otra manera llamándose este blog “pensando en SOA”.

Pues bien, esta es mi versión de la regla de Pareto aplicada a la arquitectura orientada a servicios:

Regla de Pareto en #SOA: conociendo el 20% de los conceptos resuelves el 80% de los casos #pensandoEnSOA

¿Y cuales son estos conceptos a los que me refiero? Los he ido twitteando a lo largo de esta semana. Si los leéis, veréis que no descubren la pólvora, ya que son bastante conocidos. Sin embargo, como suele ocurrir en estos casos no por ser evidentes y de sentido común se aplican en los casos reales con la asiduidad que sería recomendable.

20120804-143543.jpg

La primera es saber dónde va cada cosa. Si tenemos una arquitectura de referencia más o menos estándar, como la propuesta por IBM (ver esta entrada en el blog), tendremos tres grandes capas de aplicación:

  1. El frontal que se encarga de la interfaz con el usuario
  2. La capa de integración que se dedica a combinar servicios de negocio en servicios compuestos, transformar el protocolo de la información , enrutar, etc. (para esto último se suele usar un ESB)
  3. La capa de negocio, backend o core de negocio.

Pues bien, como decía una de las primeras cosas que tenemos que ver es dónde ponemos cada cosa. Algunos ejemplos:

  1. Si tenemos que gestionar las preferencias visuales del usuario, como guardar URL a páginas favoritas, personalización del menú, o el tema visual (colores, estilos) de las páginas se hará en frontal.
  2. Una lógica o servicio que contenga lógica de negocio, como el cálculo del precio de un servicio, irá en el Backend.
  3. Un servicio compuesto, hecho a base de combinar servicios de diferentes backends en la capa de integración.
  4. Un nuevo servicio compuesto, hecho con la combinación de servicios del mismo backend, en el propio backend.

Aunque muchas de estas cosas parezcan obvias no lo son tanto para las personas que no estén un poco familiarizadas con esta arquitectura con clara separación de responsabilidades.

El frontal no tiene lógica de negocio

Uno de los errores en los que se puede caer es en colocar la lógica de negocio en el frontal. ¿Por qué esto es una mala práctica?.
En primer lugar porque una aplicación de frontal estará dirigida a un canal en concreto. Puede ser una aplicacion web para el usuario final en internet, o puede ser una pesada aplicacion bancaria para el canal de oficinas y sucursales. Si ponemos la lógica de negocio ahí, tendremos que repetirla para cada nuevo canal, con el coste de desarrollo y mantenimiento que ello supone.

Además, debido al continuo avance de la tecnología, las aplicaciones de frontal tienen una vida más corta. Hace sólo cuatro años no existía el iPhone, y hace dos no existía el iPad, por poner solo un par de ejemplos. Hoy en día, y sólo para los smartphones y tablets tenemos aplicaciones nativas (iOS y Android Básicamente), tenemos aplicaciones web basadas en HTML 5 e incluso híbridos de ambos.

Sin embargo, la lógica de negocio se considera más estable, con un ciclo de vida que puede superar el lustro fácilmente y que no es extraño que supere los diez años. Sobre todo teniendo en cuenta que en SOA podemos crear nueva lógica de negocio componiendo servicios de más bajo nivel (y mucho más estables en el tiempo).

Sin estado

Otra de los conceptos que debemos asumir es que los servicios no deben tener estado, es decir, su funcionamiento no depende de las invocaciones anteriores ni al orden en el que se hagan estas. Además de la ganancia en rendimiento, al no tener estado los servicios se pueden implementar con un software más sencillo y desacoplado.

Si quieres ver el resto de reglas busca el hashtag #reglaDel20 en twitter con más fácil aún, en la parte derecha de la página principal de mi blog http://pensandoensoa.com

¿qué regla añadirías tú?