Construcción de service mesh con AWS App Mesh - Control de comunicación entre microservicios y observabilidad
Presentamos cómo configurar de forma declarativa despliegues canary con sidecar Envoy, políticas de reintento y cifrado mTLS, y cómo visualizar las dependencias entre servicios con la integración de X-Ray.
Descripcion general de App Mesh y discontinuacion del servicio
App Mesh es un service mesh que controla y monitorea la comunicacion entre microservicios. Coloca proxies Envoy como sidecar en cada servicio y enruta el trafico entre servicios a traves del proxy. Sin modificar el codigo de la aplicacion, se pueden configurar pesos de trafico, reintentos, timeouts y circuit breakers. Sin embargo, AWS dejo de aceptar nuevos clientes a partir del 24 de septiembre de 2024 y finalizo el soporte de App Mesh el 30 de septiembre de 2026. Para proyectos nuevos, no adopte App Mesh; en su lugar elija ECS Service Connect o Amazon VPC Lattice.
Control de trafico y observabilidad
Con el enrutador virtual se configuran pesos de trafico, permitiendo controles como enviar el 10% del trafico a una nueva version en un despliegue canary. Cambiando los pesos gradualmente (10% -> 25% -> 50% -> 100%), se puede migrar el trafico de forma segura. Las politicas de reintento se definen de forma declarativa, configurando hasta 3 reintentos con backoff exponencial ante errores HTTP 503. El circuit breaker se implementa mediante deteccion de valores atipicos, excluyendo temporalmente del enrutamiento los endpoints cuya tasa de error supera el umbral. Al habilitar la integracion de X-Ray, el proxy Envoy envia datos de rastreo, permitiendo visualizar las cadenas de llamadas entre servicios, la latencia y las tasas de error. Con las metricas de CloudWatch se puede monitorear el numero de solicitudes, la latencia y la tasa de error por servicio.
mTLS y control de acceso
App Mesh puede cifrar la comunicacion entre proxies Envoy con mTLS. Al configurar certificados emitidos por AWS Private CA en los nodos virtuales, se realiza autenticacion mutua en el handshake entre proxies, previniendo la suplantacion de identidad. Mediante SDS (Secret Discovery Service), la rotacion de certificados tambien se automatiza. En el control de acceso, se definen explicitamente los servicios permitidos como backend de los nodos virtuales, bloqueando comunicaciones no intencionadas entre servicios. Los registros de acceso de Envoy se envian a CloudWatch Logs, permitiendo auditar que servicio accedio a que endpoint.
Estructura de precios y optimizacion de App Mesh
App Mesh en si no genera cargos adicionales. El costo depende de los recursos de computo (CPU y memoria) consumidos por el proxy Envoy. Como funciona como sidecar de tareas ECS o Pods EKS, es importante dimensionar adecuadamente los recursos asignados al proxy en la definicion de tarea. AWS recomienda asignar 512 unidades de CPU y al menos 64 MiB de memoria al contenedor Envoy, y la asignacion puede aumentarse si una carga mayor deja recursos insuficientes. Si se habilita el rastreo con X-Ray, se generan costos de almacenamiento de datos de rastreo, por lo que se ajusta la tasa de muestreo para equilibrar costos y observabilidad.
Destinos de migracion - ECS Service Connect y VPC Lattice
AWS recomienda dos destinos de migracion desde App Mesh: ECS Service Connect y Amazon VPC Lattice. ECS Service Connect se especializa en comunicacion entre servicios dentro de ECS y, como App Mesh, esta basado en Envoy pero con configuracion del plano de control simplificada. No se necesitan definiciones de nodos virtuales ni enrutadores virtuales; simplemente agregar serviceConnectConfiguration a la definicion del servicio ECS habilita descubrimiento de servicios, balanceo de carga y reintentos. VPC Lattice proporciona comunicacion entre servicios a traves de limites de VPC, enrutando entre diferentes tipos de computo incluyendo ECS, EKS, Lambda y EC2. No requiere proxies sidecar como Envoy; unirse a una red de servicios VPC Lattice establece la conectividad, reduciendo la carga operativa. Como criterio de seleccion, use Service Connect para comunicacion confinada dentro de ECS, y VPC Lattice para escenarios multi-VPC o multi-cuenta con tipos de computo heterogeneos.
Decisiones de diseno y consideraciones en la migracion
La decision de diseno principal al migrar desde App Mesh es como replicar los despliegues canary existentes (pesos de trafico). ECS Service Connect no soporta directamente enrutamiento ponderado entre servicios, asi que use enfoques como los despliegues Blue/Green como alternativa. VPC Lattice soporta target groups ponderados para division de trafico, proporcionando control similar a los enrutadores virtuales de App Mesh. Para mTLS, ECS Service Connect admite cifrado TLS con AWS Private CA, pero el blog de migracion de AWS de septiembre de 2024 indica que la autenticacion mutua (mTLS) aun no esta disponible en Service Connect. VPC Lattice proporciona nativamente autorizacion entre servicios a traves de politicas de autenticacion IAM, logrando control de comunicacion zero-trust mediante un enfoque diferente al mTLS. Para la migracion a Service Connect, el blog de migracion de AWS describe una estrategia blue/green que crea copias de cada servicio ECS y transfiere el trafico gradualmente.
Resumen
App Mesh es un service mesh que controla y monitorea la comunicacion entre microservicios con proxies Envoy. Configura de forma declarativa despliegues canary con pesos de trafico, politicas de reintento y circuit breakers, y cifra las comunicaciones con mTLS. Sin embargo, dado que AWS finalizo el soporte de App Mesh el 30 de septiembre de 2026, los destinos de migracion son ECS Service Connect (para comunicacion intra-ECS) o Amazon VPC Lattice (para comunicacion cross-VPC/cross-account).
Referencias (recursos oficiales de AWS)
Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.
- AWS App Mesh (página oficial)
- Amazon ECS (página oficial)
- Amazon EKS (página oficial)
- Documentación de AWS (oficial)
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.