Aspectos generales
P: ¿Qué es AWS App Mesh?
R: AWS App Mesh facilita el monitoreo, el control y la depuración de las comunicaciones entre los servicios. App Mesh usa Envoy, un proxy de malla de servicios de fuente abierta que se implementa junto con sus contenedores de microservicios. App Mesh está integrado con el servicio de AWS para controlar y supervisar y funciona con muchas herramientas conocidas de terceros. App Mesh se puede usar con contenedores de microservicio gestionados por Amazon ECS, Amazon EKS, AWS Fargate, Kubernetes que se ejecutan en AWS y los servicios que se ejecutan en Amazon EC2.
P: ¿Por qué debo utilizar App Mesh?
R: App Mesh facilita la obtención de visibilidad, la seguridad y el control sobre las comunicaciones entre sus servicios sin escribir código nuevo ni ejecutar una infraestructura de AWS adicional. Al usar App Mesh, puede estandarizar cómo se comunican los servicios, se implementan las reglas para las comunicaciones entre los servicios y se captan las métricas, los registros y las huellas directamente en los servicios de AWS y las herramientas de terceros a su elección.
P: ¿Cómo funciona App Mesh?
R: App Mesh se ajusta y gestiona una malla de servicio para sus servicios. Para hacer esto, ejecuta el proxy de Envoy de fuente abierta junto con cada servicio y App Mesh configura el proxy para manejar todas las comunicaciones dentro y fuera de cada contenedor. App Mesh recopila métricas, como las tasas de errores y conexiones por segundo, lo que se puede exportar a Amazon Cloudwatch usando el recopilador statsd. Al usar las API de App Mesh, puede enrutar el tráfico según la ruta o los pesos hacia versiones de servicio específico.
P: ¿Qué es una malla de servicio?
R: Una malla de servicio es una capa de software nuevo que maneja todas las comunicaciones entre los servicios. Ofrece nuevas características para conectar y manejar las conexiones entre los servicios y es independiente de cada código de servicio lo que permite el funcionamiento entre los límites de red y con múltiples sistemas de gestión de servicio.
Integraciones
P: ¿Cómo funciona App Mesh con Amazon Elastic Container Services (ECS) y AWS Fargate?
R: App Mesh ofrece nuevas capacidades de comunicación, observación y gestión para las aplicaciones gestionadas por Amazon ECS y AWS Fargate. Añada la imagen proxy de Envoy a la definición de la tarea. App Mesh administra la configuración de Envoy para brindar capacidades de malla de servicios. App Mesh exporta las métricas, los registros y las trazas a los puntos de enlace especificados en la configuración de arranque de Envoy provista. App Mesh proporciona una API para configurar rutas de tráfico y otros controles entre microservicios que están habilitados para malla.
P: ¿Cómo funciona App Mesh con Amazon Elastic Container Services for Kubernetes (EKS)?
R: Use el controlador AWS App Mesh de fuente abierta y cambie el controlador de admisión de webhook. Estos controladores conectan sus servicios de Kubernetes en App Mesh y asegura que el proxy Envoy se inyecte en sus puntos de entrega. App Mesh exporta las métricas, los registros y las trazas a los puntos de enlace especificados en la configuración de arranque de Envoy provista. App Mesh proporciona una API para configurar rutas de tráfico y otros controles entre microservicios que están habilitados para malla.
P: ¿Cómo funciona App Mesh con los servicios que se ejecutan en Amazon EC2?
R: Ejecute el proxy Envoy como un contenedor o un proceso en su instancia EC2. Use el contenedor init de proxy que ofrece AWS o ejecute su propio script para redireccionar el tráfico de red en la instancia mediante el proxy. App Mesh administra la configuración de Envoy para brindar capacidades de malla de servicios. App Mesh exporta las métricas, los registros y las trazas a los puntos de enlace especificados en la configuración de arranque de Envoy provista. App Mesh proporciona una API para configurar rutas de tráfico y otros controles entre microservicios que están habilitados para malla.
P: ¿Por qué debo usar App Mesh en lugar de los balanceadores de carga elástico de AWS?
R: Recomendamos usar AWS Elastic Load Balancing para manejar todo el tráfico de Internet y el tráfico de los clientes que no estén dentro de su límite de confianza. Para los servicios internos que se conectan a otros servicios dentro de una región de AWS, App Mesh ofrece flexibilidad, consistencia y mayor grado de control y monitoreo para las comunicaciones de los servicios.
Monitorización, registro y medición
P: ¿Qué tipo de capacidades de monitoreo ofrece App Mesh?
R: Con App Mesh, obtiene métricas y registros consistentes para cada paso entre los servicios. Estos registros y métricas incluyen metadatos como los nombres de los servicios y los identificadores de solicitud. Con estos, puede agregar, filtrar y ver los paneles gráficos de las comunicaciones entre los servicios usando herramientas como Amazon CloudWatch. Los paneles comunes quizás incluyen tasas y códigos de error entre su servicio y los servicios dependientes. App Mesh recopila y rastrea automáticamente cada servicio y facilita visualizar un mapa de servicio con detalles de todas las llamadas de la API del servicio. Estas capacidades facilitan la depuración y la identificación de la causa raíz de los problemas de comunicación entre sus microservicios.
P: ¿Puedo usar herramientas que no sean de AWS para monitorear, generar registros o realizar rastreos con App Mesh? Sí.
R: Sí. App Mesh admite cualquier herramienta de terceros que funcione con Envoy. Esto incluye Splunk, Prometheus, Jaeger, Flagger y Grafana, como así también las soluciones de rastreo abierto como Zipkin y LightStep.
Control de tráfico
P: ¿Qué tipo de controles de tráfico ofrece App Mesh?
R: App Mesh le da un conjuntos de controles por parte del cliente para el enrutamiento de tráfico. App Mesh ofrece API para enrutar el tráfico entre las aplicaciones según los nombres y las versiones del servicio. Estas capacidades facilitan la implementación de nuevas versiones de sus microservicios.
Autenticación de servicio a servicio
P: ¿Cómo admite App Mesh la identidad de la aplicación?
La TLS mutua (mTLS) ofrece un método para aplicar la identidad de la aplicación a nivel de la capa de transporte y acepta o deniega las conexiones cliente en función de los certificados que presenten. AWS App Mesh es compatible con el uso de la identidad de aplicaciones cliente mediante certificados X.509, que se denomina seguridad de capa de transporte mutua, o mTLS. Para configurar la mTLS, debe establecer el cliente que proporcione un certificado al servicio del servidor durante el inicio de la solicitud, como parte de la negociación de la sesión de TLS. El servidor utiliza este certificado para identificar y autenticar al cliente, y verificar que el certificado sea válido y que haya sido emitido por una autoridad certificada confiable (CA). Además, para identificar al cliente mediante el Nombre alternativo del sujeto (SAN) que figura en el certificado.
P: ¿Por qué debería utilizar mTLS con AWS App Mesh?
Los microservicios también tienen necesidades de seguridad particulares, entre las que se encuentran el cifrado de tráfico de extremo a extremo y el control de acceso a servicios flexible, que se puede abordar mediante una malla de servicios. La implementación de mTLS de AWS App Mesh les permite a sus aplicaciones cliente verificar los servidores y ofrece cifrado de tráfico, mientras que la TLS mutua ofrece autenticación de pares que se utiliza para la autenticación de servicio a servicio. Esta agrega una capa de seguridad sobre la TLS que les permite a sus servicios verificar el cliente que realiza la conexión. La desintegración de una aplicación monolítica en microservicios y su ejecución en una malla de servicios ofrece varios beneficios, entre estos, una mejor visibilidad y un enrutamiento de tráfico inteligente.