water-pipe-518030_640
Veo en un artículo de Axway, el proveedor de un conocido API Gateway, las que ellos denominan las diferencias entre microservices y SOA. Como siempre, esto puede lugar a un debate muy interesante, así que no me resisto a recogerlo aquí.

Desde que se ha hecho popular el término microservicio, mucho se ha comparado con el mucho más antiguo término de SOA. Que si son lo mismo, que si son cosas distintas, incluso más allá aún, hay gente que opina que por fin, los microservicios son la implementación correcta (por fin) de SOA.

Después de leer varios artículos sobre el tema, personalmente estoy de acuerdo con esta última “corriente de opinión”, creo que microservicios son una implementación concreta de SOA.

SOA no es WS-*

Por supuesto, tenemos que entender SOA como lo que es, una forma de pensar y diseñar una solución software basada en sus ocho principios. Si como se muestra en la presentación a la que me refiero, se asocia SOA al stack de WS-*, entonces por supuesto que son diferentes. Pero creo que esta premisa no es cierta, ¿o es que no se puede tener una arquitectura orientada a servicios con REST…? faltaría más, por supuesto que sí.

¿Bus o no bus?

Una diferencia importante en cuanto a la visión de SOA que tenemos, que podemos llamar “tradicional”, es la referente a la presencia de un bus de integración. En esta implementación, que estamos más acostumbrados a ver, tenemos un bus o “concentrador” de todas las invocaciones. En este caso, los nodos de la red son bastante tontos y se limitan a dejar un mensaje en el canal de comunicaciones que llegará al bus, a modo de gran guardia de tráfico, que redirige el mensaje a donde proceda.

Sin embargo, la visión de los microservicios es que no haya este gran concentrados, o al menos no mediante el concepto tradicional de bus. En su lugar, son los nodos los que son inteligentes y saben a quien dirigir el paquete. En el primer caso, en resumen, es la red la que es inteligente (con el bus) y en el segundo los canales (tuberías) son tontos y el listo de la película son los propios nodos que forman la red (que serían los propios servicios).

Aunque una vez más, es curioso que Axway se refiere a la presencia de “digital plataforma” para implementar la agregación. En efecto, el producto de este proveedor, llamado API Gateway se dedica a orquestar los servicios de negocio de la empresa, transformándolos para su consumo por un cliente interno o externo a la empresa…. lo cual se parece sospechosamente a un bus de integración ¿no?

En definitiva…

En definitiva, viendo el concepto que se suele tener de SOA, yo sólo pediría que no se confunda  con SOAP y WS-*. Si bien esta es la implementación tradicional, SOA es un conjunto de principios, que son válidos para implementarlos con REST en aplicaciones monolíticos, en microservicios, etc. etc.

Anuncios