clock-885543_640

Creo que ha llegado el momento, después de 5 años de su publicación, la puesta al día del post “Principios de la Arquitectura Orientada a Servicios“. Después de este tiempo podríamos decir que ha cambiado todo y a la vez no ha cambiado gran cosa

Me pregunto por ejemplo  ¿siguen estando vigentes los principios de SOA después de 5 años?. ¿Y si los confrontamos con los cambios de tecnología y patrones de diseño que ha habido estos años? ¿han sabido “envejecer” bien? ¿siguen siendo válido con los microservicios?… un verdadero regreso al futuro ;-).

1.- Contratos de servicios estandarizados

Decir contrato estandarizado hace unos años equivalía a hablar de WSDL, el formato de contrato de los servicios SOAP. Un formato versátil, completo y también, muy difícil de entender para una persona, pero perfectamente válido para una máquina.

Hoy en día, el club de los formatos de los contratos cuenta con nuevos miembros, debido a que ya no existe un monopolio de servicios SOAP. Ahora tenemos los servicios REST por todos lados. Y lo que en un principio hablar de contratos con REST era hablar de una ausencia de estándares ahora ya no es así, tenemos Swagger, el que parece que se está imponiendo, y también RAML o API Blueprint.

Pero este principio va más allá de tener en cuenta el contract-first y un formato de contrato estándar. También significa el usar un lenguaje común en la aplicación (o conjunto funcional de servicios) y también en la empresa. Aquí me temo que la implantación práctica de este concepto, el tener un diccionario de conceptos común, no ha triunfado por las dificultades que plantea el poner de acuerdo a tanta gente dentro de una organización.

Con la llegada de los microservicios, con su independencia y su aislamiento del resto de microservicios, quizás ya ni tenga tanto sentido. El poner de acuerdo a toda la organización para usar un mismo lenguaje es una tarea casi imposible, como se ha visto estos años, pero también pierde un poco de sentido. Si tenemos este lenguaje común perderemos parte de esta independencia de los microservicios.

En definitiva, el concepto de contract-first y del contrato en sí mismo, mantiene toda su vigencia. Incluso se ha visto en la práctica cómo los servicios REST se han dotado de un formato estándar de contrato del que carecían. Así pues este principio de SOA, aplicado a microservicios, sigue vivo, muy vivo.

2.- Servicios con bajo acoplamiento

No es necesario ningún estudio en profundidad para constatar que el principio de bajo acoplamiento no sólo se ha mantenido si no que se ha visto corregido y aumentado.

Si bien antes lo normal era tener tanto el consumidor como el proveedor del servicio dentro de la misma empresa, e incluso dentro de la misma “aplicación”, en la situación actual estamos cada vez más acostumbrados a tener una composición, un mashup, de servicios que pertenecen a nuestra organización, a partners y a terceras partes. No es raro por ejemplo, un servicio que te dice como llegar cuando el usuario pasa cerca de una tienda para ofrecerle un descuento, combinado un servicio de CRM más uno de Google Maps más otro de marketing y otro que envía una notificación push. ¿Cómo lograr esto sin un bajo acoplamiento?.

Como conclusión, podríamos decir que los microservicios nos demandan un menor acoplamiento incluso así pues este principio goza de muy buena salud.

3.- Abstracción

Este principio busca ocultar los detalles internos del servicio, tanto como sea posible, considerando al servicio como una caja negra.

Como en el caso anterior, estamos ante un principio que se ha visto acentuado en la práctica. Uno de las características de los nuevos servicios, por poner sólo un ejemplo, es que son políglotas, es decir, que cada uno se puede hacer con el lenguaje que más convenga. ¿Hay mayor prueba de la aplicación práctica del concepto de abstracción?, ¿de no saber nada de cómo están hechos por dentro?.

De nuevo, la abstracción, otro concepto SOA que no ha perdido validez, todo lo contrario.

Seguiremos…

En próximas entradas continuaremos revisando la validez de los principios SOA y viendo si, como algunos dicen, SOA y microservicios son cosas diferentes, o simplemente estos son una implementación de los mismos principios.