Editar

Compartir a través de


Uso de puertas de enlace de API en microservicios

Azure Application Gateway
Azure API Management

En una arquitectura de microservicios, un cliente podría interactuar con más de un servicio front-end. Dado este hecho, ¿cómo sabe un cliente qué puntos de conexión se van a llamar? ¿Qué ocurre cuando se introducen nuevos servicios o se refactorizan los servicios existentes? ¿Cómo controlan los servicios la terminación SSL, TLS mutua, autenticación y otros problemas? Un de puerta de enlace de API de puede ayudar a abordar estos desafíos.

Diagrama de de una puerta de enlace de API

Descargar un archivo de Visio de esta arquitectura.

¿Qué es una puerta de enlace de API?

Una puerta de enlace de API proporciona un punto de entrada centralizado para administrar interacciones entre clientes y servicios de aplicaciones. Actúa como proxy inverso y enruta las solicitudes de los clientes a los servicios adecuados. También puede realizar diversas tareas transversales, como autenticación, terminación SSL, TLS mutua y limitación de velocidad.

¿Por qué usar una puerta de enlace de API?

Una puerta de enlace de API simplifica la comunicación, mejora las interacciones del cliente y centraliza la administración de responsabilidades comunes de nivel de servicio. Actúa como intermediario y evita la exposición directa de los servicios de aplicación a los clientes. Sin una puerta de enlace de API, los clientes deben comunicarse directamente con servicios de aplicaciones individuales, lo que puede presentar los siguientes desafíos:

  • código de cliente complejo: puede dar lugar a código de cliente complejo. Los clientes deben realizar un seguimiento de varios puntos de conexión y controlar los errores de forma resistente.

  • acoplamiento ajustado: crea un acoplamiento entre el cliente y el back-end. Los clientes deben comprender la descomposición de los servicios individuales, complicando el mantenimiento y la refactorización del servicio.

  • mayor latencia: una sola operación puede requerir llamadas a varios servicios. El resultado puede ser varios recorridos de ida y vuelta de red entre el cliente y el servidor, lo que agrega una latencia significativa.

  • control redundante de problemas: cada servicio orientado al público debe controlar problemas como la autenticación, SSL y la limitación de velocidad de cliente.

  • limitaciones del protocolo: los servicios deben exponer un protocolo descriptivo para el cliente, como HTTP o WebSocket. Esta exposición limita opciones de protocolos de comunicación.

  • superficie expuesta a ataques expandida: los puntos de conexión públicos aumentan la posible superficie expuesta a ataques y requieren protección.

Uso de una puerta de enlace de API

Una puerta de enlace de API se puede adaptar a los requisitos de la aplicación mediante patrones de diseño específicos. Estos patrones de diseño abordan la funcionalidad clave, como el enrutamiento, la agregación de solicitudes y los problemas transversales:

  • enrutamiento de puerta de enlace. Puede usar una puerta de enlace de API como proxy inverso para enrutar las solicitudes de cliente a diferentes servicios de aplicación. La puerta de enlace de API usa enrutamiento de nivel 7 y proporciona un único punto de conexión para que los clientes los usen. Use el enrutamiento de puerta de enlace de API cuando quiera desacoplar clientes de los servicios de aplicación.

  • de agregación de puerta de enlace. Puede usar la puerta de enlace de API para agregar varias solicitudes de cliente en una sola solicitud. Use este patrón cuando una sola operación requiera llamadas a varios servicios de aplicación. En la agregación de API, el cliente envía una solicitud a la puerta de enlace de API. A continuación, la puerta de enlace de API enruta las solicitudes a los distintos servicios necesarios para las operaciones. Por último, la puerta de enlace de API agrega los resultados y los devuelve al cliente. La agregación ayuda a reducir la chattiidad entre el cliente y los servicios de aplicación.

  • puerta de enlace descargando. Puede usar una puerta de enlace de API para proporcionar funcionalidad transversal, por lo que los servicios individuales no tienen que proporcionarla. Puede ser útil consolidar la funcionalidad transversal en un solo lugar, en lugar de hacer que cada servicio sea responsable. Estos son ejemplos de funcionalidad que podría descargar en una puerta de enlace de API:

    • Terminación SSL
    • TLS mutuo
    • Autenticación
    • Lista de direcciones IP permitidas o lista de bloqueados
    • Limitación de velocidad de cliente (limitación)
    • Registro y supervisión
    • Almacenamiento en caché de respuestas
    • Firewall de aplicaciones web
    • Compresión GZIP
    • Mantenimiento del contenido estático

Opciones de puerta de enlace de API

Estas son algunas opciones para implementar una puerta de enlace de API en la aplicación.

  • servidor proxy inverso. Nginx y HAProxy son ofertas de proxy inverso de código abierto. Admiten características como el equilibrio de carga, la terminación SSL y el enrutamiento de nivel 7. Tienen versiones gratuitas y ediciones de pago que proporcionan características adicionales y opciones de soporte técnico. Estos productos están maduros con conjuntos de características enriquecidos, alto rendimiento y extensibles.

  • controlador de entrada de malla de servicio. Si usa una malla de servicio, evalúe las características del controlador de entrada específicas de esa malla de servicio. Busque complementos compatibles con AKS como Istio y Open Service Mesh. Busque proyectos de código abierto de terceros como Linkerd o Consul Connect. Por ejemplo, el controlador de entrada de Istio admite enrutamiento de nivel 7, redirecciones HTTP, reintentos y otras características.

  • de Azure Application Gateway. Application Gateway es un servicio de equilibrio de carga administrado. Proporciona enrutamiento de nivel 7, terminación SSL y firewall de aplicaciones web (WAF).

  • azure Front Door. Azure Front Door es una red de entrega de contenido (CDN). Usa puntos globales y locales de presencia (POP) para proporcionar acceso rápido, confiable y seguro al contenido web estático y dinámico de las aplicaciones globalmente.

  • azure API Management. API Management es una solución administrada para publicar API en clientes externos e internos. Proporciona características para administrar las API orientadas al público, como la limitación de velocidad, las restricciones de IP y la autenticación mediante microsoft Entra ID u otros proveedores de identidades. API Management no realiza ningún equilibrio de carga, por lo que debe usarlo con un equilibrador de carga, como Azure Application Gateway o un proxy inverso. Para más información, consulte API Management con Azure Application Gateway.

Elección de una tecnología de puerta de enlace de API

Al seleccionar una puerta de enlace de API, tenga en cuenta los siguientes factores:

  • Admitir todos los requisitos. Elija una puerta de enlace de API que admita las características necesarias. Todas las opciones anteriores de puerta de enlace de API de admiten el enrutamiento de nivel 7. Pero su compatibilidad con otras características, como la autenticación, la limitación de velocidad y la terminación SSL, pueden variar. Evalúe si una sola puerta de enlace satisface sus necesidades o si son necesarias varias puertas de enlace.

  • Prefiere ofertas integradas. Use soluciones integradas de entrada y puerta de enlace de API proporcionadas por la plataforma, como Azure Container Apps y AKS, siempre que cumplan los requisitos de seguridad y control. Use solo una puerta de enlace personalizada si las opciones integradas carecen de flexibilidad necesaria. Las soluciones personalizadas requieren un modelo de gobernanza, como GitOps, para administrar su ciclo de vida de forma eficaz.

  • Elija el modelo de implementación adecuado. Use servicios administrados como Azure Application Gateway y Azure API Management para reducir la sobrecarga operativa. Si usa servidores proxy inversos de uso general o equilibradores de carga, impleméntelos de forma que se alinee con la arquitectura. Puede implementar puertas de enlace de API de uso general en máquinas virtuales dedicadas o dentro de un clúster de AKS en sus ofertas del controlador de entrada. Para aislar la puerta de enlace de API de la carga de trabajo, puede implementarlas fuera del clúster, pero esta implementación aumenta la complejidad de la administración.

  • Administrar cambios. Al actualizar los servicios o agregar otros nuevos, es posible que tenga que actualizar las reglas de enrutamiento de la puerta de enlace. Implemente procesos o flujos de trabajo para administrar reglas de enrutamiento al agregar o modificar servicios, certificados SSL, listas de direcciones IP permitidas y configuraciones de seguridad. Use herramientas de automatización y infraestructura como código para simplificar la administración de la puerta de enlace de API.

Pasos siguientes

En los artículos anteriores se exploraron las interfaces entre microservicios y entre microservicios y aplicaciones cliente. Estas interfaces tratan cada servicio como una unidad opaca independiente. Un principio fundamental de la arquitectura de microservicios es que los servicios nunca deben exponer detalles internos sobre cómo administran los datos. Este enfoque tiene implicaciones significativas para mantener la integridad y la coherencia de los datos, que es el tema del siguiente artículo.