Búsqueda personalizada

domingo, 21 de febrero de 2010

Arquitecturas SOA problemas generados y un enfoque de como afrontarlos

Hoy día todos conocemos lo que es la arquitectura orientada a servicios (SOA) , pero realmente conocemos cuales son las practicas adecuadas, los beneficios que esta arquitectura nos puede aportar, cuando utilizar este modelo y los problemas generados y como afrontarlos.
Creo que como todo lo referente a tecnología es una nueva moda y ahora todo el mundo desea hacer aplicaciones SOA sin realmente estudiar si es una solución adecuada para resolver nuestro problema.

Beneficios:

  • Nos permite crear una capa de logica de negocios o proceso de negocios accesible desde diversas aplicaciones. Pudiendo reutilizar nuestra logca de negocios.
  • Al definir un servicio normalmente se realiza siguiendo estandares de la inductria con lo cual podremos tener diversas apliciones consumiendo este servicio.
Existen muchos mas beneficios que puedo listar en este Post pero como indico en el título me voy a enfocar en los problemas que esta arquitectura genera y como los he afrontado en mi empresa.

Problemas del enfoque:

  • Versionado
  • Accesibilidad
  • Estado

Versionado:

Uno de los principales problemas al que nos enfrentamos en la arquitectura orientada a servicios es con respecto a las versiones del mismo. Cada vez que cambiamos un contrato ya sea modificando la entrada o la salida, seguramente obligaremos a los consumidores de ese servicio a subir de versión si no tenemos un manejo adecuado de las versiones.
Leyendo en internet encontre que en la especificacion de los servicios web no existe un modelo a seguir para el versionado. Por lo tanto primero que nada hay que decidir si queremos versionar por web service o web method. En mi opinión aunque es mas complejo de manejar podemos realizar un enfoque dual en este caso ya que si versionamos por web method y subimos la version de todos ellos al mismo tiempo habremos logrado una flexibilidad interesante, es decir si cambio un web method subo la version a nivel del servicio web para todos los webmethod.

En la practica esto se traduce en la simple incomporación de un parametro en todos los webmethod que indique la versión que deseo utilizar de forma que internamente simplemente tendremos un switch de las versiones donde indicaremos por defecto que se utilice la útima version para realizar la ejecución.

En otra ocasión publicare una amplicación de este articulo con mas especificaciones y ejemplos de implementación