Grandes preguntas:
- ¿Repites mucho código en cada nuevo microservicio?
- ¿Haces que tus frontends llamen múltiples endpoints para obtener lo que realmente necesitan?
Flujo de llamadas sin API Gateway
- Problemas de latencia
- Menos seguridad
Flujo de llamadas con API Gateway
- El API Gateway sería un microservico más
- Se mejora la latencia
- Se incrementa la seguridad
- Es un reverse proxy que obtendrá las peticiones del cliente y las redireccionará al microservicio/API que está configurado para conectarse para luego procesar la respuesta y devolverla al cliente.
- Entre medias, se le puede añadir autenticación, autorización o filtros para validar la petición antes de enviarla a los microservicios.
- Otras características: rate limit, cache, header transformation, etc.
Algunas API Gateways en el mercado
Demo
- Crear un proyecto Web API
- La carpeta controllers no se necesita. La eliminamos.
- Instalar el paquete de ocelot
- Configuración en Program.cs
- Agregar archivo de configuración ocelot.json
- Routes: Aquí configuramos las rutas a nuestros microservicios.
- UpstreamPathTemplate: Este el endpoint el cual se va exponer a través del API Gateway
- UpstreamHttpMethod: El método para invocar el endpoint
- DownstreamHostAndPorts: Indicar el endpoint hacia donde tiene que ir
- DownstreamPathTemplate: El path de hacia donde hay que ir
- GlobalConfiguration: Aquí indicamos el punto de entrada a nuestra API Gateway (este dato se saca desde launchSettings.json (en iisExpress).
Resources:
- Implementing API Gateway with Ocelot in ASP.NET Core
- Using Refit to Consume APIs in C#
- Building Ocelot API Gateway Microservices with ASP.NET Core and Docker Container
- API Gateway with .NET Core
- Creando API Gateway en .NET con Ocelot
- Microservice Architecture in ASP.NET Core with API Gateway
- Patrón API Gateway
- Using the API Gateway Pattern In .NET to Encapsulate Microservices
- Creando una API Gateway en .NET Core con Ocelot