netflix, spotify, airbnb la importancia de un api gateway
Siguiendo con los anteriores artículos relacionados con los microservicios
presentamos un nuevo diagrama de arquitectura de lo que se conoce como
API-gateway.
Que es una suerte de orquestador (y más) de las
llamadas a distintos microservicios. En realidad las operaciones que
realizan los microservicios suelen ser operaciones muy atómicas que
aunque tienen valor de negocio necesitan ser orquestadas para poder
representar una operación de negocio real.
Donde podemos ver a grandes rasgos la función de un API-Gateway. En
el caso que nos ocupa en zylk.net para componer esta capa se va a
usar, lo ya descrito anteriormente
- Servicios Expuestos por RPC
- Client-Side
Discovery Pattern
Y el proyecto Hystrix
de netflix. La idea es encapsular los servicios RCP con una capa
de comandos hystrix para poder crear el API Gateway. Para la PoC que
hemos definido se necesita
- Crear un primer comando hystrix que tarde en ejecutarse, pongamos
5 segundos - Crear un segundo comando que tarde en ejecutarse 4 segundos
Una vez que tenemos esto, crearemos un cliente que invoque ambos
comandos de dos maneras (existe una tercera basada en programación reactiva,
que en este caso no vamos a usar) Síncrona
- Síncrona
- Asíncrona
Si ejecutamos ambos clientes podemos ver las diferencias de ejecución
en ambos casos.
La verdad es que el proyecto
hystrix de netflix es un gran proyecto que
nos sirve para encapsular las llamadas a servicios de terceros. En
este caso nos permite encapsular nuestros propios microservicios
expuestos por yarn/avro-rpc. Además nos permite gestionar las
asincronía y también implementa el patrón
circuit-breaker, tan importante en los sistemas de
información de nueva generación como los que empezamos a
desarrollar en zylk.net
En este
link os podéis descargar las 4 clases que se han usado para la
PoC, para los que prefieren leer código.