AWS Cloud Map

Servicio que proporciona descubrimiento de servicios para microservicios, resolviendo la ubicación de servicios mediante DNS o API

Descripción general

AWS Cloud Map es un servicio completamente administrado que proporciona descubrimiento de servicios para recursos en la nube. En arquitecturas de microservicios, resuelve dinámicamente direcciones IP y números de puerto de los servicios, habilitando la comunicación entre servicios. Ofrece dos modos de descubrimiento: basado en DNS (integrado con Route 53) y basado en API, soportando diferentes tipos de cómputo como contenedores, Lambda y EC2 con un mecanismo de descubrimiento unificado. La integración nativa con ECS y EKS permite el registro y desregistro automático de servicios.

Mecanismo de namespaces y registro de servicios

Cloud Map organiza los servicios en una estructura jerárquica de namespaces y servicios. Un namespace corresponde a un dominio DNS (por ejemplo, production.internal) y contiene múltiples servicios (por ejemplo, api, auth, payment). Cada servicio tiene múltiples instancias, y cada instancia se registra con atributos como dirección IP, puerto y metadatos personalizados. Los namespaces pueden ser de DNS público (resolvibles desde Internet), DNS privado (resolvibles solo dentro de la VPC) o solo API (sin registros DNS, descubrimiento solo por API). En la práctica, los namespaces de DNS privado son los más utilizados, permitiendo que los servicios internos se comuniquen usando nombres DNS legibles como api.production.internal.

Descubrimiento basado en DNS vs basado en API

El descubrimiento basado en DNS es el más simple: los clientes resuelven el nombre del servicio mediante consultas DNS estándar y obtienen la dirección IP de una instancia saludable. Es compatible con cualquier aplicación que soporte DNS sin necesidad de SDK especial. Sin embargo, tiene limitaciones como el TTL del caché DNS (los cambios no se reflejan instantáneamente) y la imposibilidad de incluir metadatos personalizados en la respuesta. El descubrimiento basado en API utiliza la API DiscoverInstances de Cloud Map, devolviendo la lista completa de instancias con todos sus atributos. Permite filtrado por atributos personalizados y refleja los cambios instantáneamente sin caché. Libros sobre microservicios (Amazon) permiten aprender patrones de descubrimiento de servicios.

Integración con ECS y EKS - health checks

La integración más potente de Cloud Map es con ECS y EKS. En ECS, al habilitar el descubrimiento de servicios en la definición del servicio, las tareas se registran automáticamente en Cloud Map al iniciarse y se desregistran al detenerse. Los health checks de Route 53 o los health checks personalizados de Cloud Map verifican periódicamente la salud de las instancias, eliminando automáticamente las instancias no saludables de los resultados de descubrimiento. En EKS, el controlador de Cloud Map sincroniza automáticamente los Services y Pods de Kubernetes con Cloud Map, permitiendo que servicios fuera del clúster (Lambda, ECS) descubran servicios dentro del clúster. Esta integración entre orquestadores es una ventaja significativa sobre las soluciones de descubrimiento de servicios nativas de Kubernetes (CoreDNS), que solo funcionan dentro del clúster.

共有するXB!