DNS, CDN y servicios edge

Las 7 politicas de enrutamiento de Route 53, caching CDN de CloudFront, Global Accelerator y proteccion DDoS con WAF/Shield explicados con analogias.

Los servicios de DNS, CDN y edge representan 33 preguntas en el examen SOA-C03, lo que los convierte en una de las areas mas evaluadas. Esta guia explica cada servicio desde los conceptos basicos para que entiendas no solo los datos sino el razonamiento detras de ellos.

 

Que es DNS y por que existe?

Cuando escribes www.example.com en tu navegador, tu computadora no sabe donde esta ese servidor. Solo entiende direcciones IP como 192.0.2.1. DNS (Domain Name System) actua como el directorio telefonico de internet, traduciendo nombres de dominio amigables para los humanos en direcciones IP legibles por las maquinas.

Al igual que buscar el nombre de un amigo en un directorio telefonico para encontrar su numero, tu dispositivo busca un nombre de dominio en DNS para encontrar la direccion IP del servidor. Solo entonces puede hacer una conexion.

 

Amazon Route 53 — DNS y enrutamiento de trafico de AWS

Route 53 es el servicio DNS de AWS. Mas alla de la simple traduccion de nombre a IP, proporciona potentes politicas de enrutamiento que te permiten controlar exactamente a donde va el trafico en funcion de varios criterios.

El nombre viene del numero de puerto DNS 53, combinado con la palabra Route para sugerir enrutamiento de trafico.

 

Zonas alojadas — Contenedores para registros DNS

Una zona alojada es como el directorio telefonico de una empresa, una coleccion de registros DNS para un solo dominio.

La Zona Alojada Publica gestiona registros para dominios orientados a internet. Cualquier persona en internet puede consultar example.com y obtener una respuesta.

La Zona Alojada Privada gestiona registros visibles solo dentro de VPCs especificas. Util para dominios internos como internal.company.com que no deben ser resolubles desde el internet publico.

 

Tipos de registros DNS

| Tipo | Proposito | Ejemplo | |------|-----------|---------| | Registro A | Dominio a direccion IPv4 | www.example.com -> 192.0.2.1 | | Registro AAAA | Dominio a direccion IPv6 | www.example.com -> 2001:db8::1 | | Registro CNAME | Dominio a otro nombre de dominio | blog.example.com -> www.example.com | | Registro Alias | Dominio a recurso AWS | example.com -> ALB o CloudFront |

La distincion Alias vs CNAME se examina frecuentemente. Debes conocerla claramente.

CNAME apunta un nombre de dominio a otro nombre de dominio. Sin embargo, no se puede usar en el Zone Apex, que significa el dominio raiz en si mismo (example.com). Puedes usar CNAME para www.example.com pero no para example.com directamente. Esta es una limitacion del estandar DNS. Ademas, las consultas CNAME generan cargos por consulta.

Alias es una extension de Route 53 al estandar DNS. Se puede usar en el Zone Apex (example.com), resolviendo el problema que CNAME no puede manejar. Apunta directamente a recursos AWS como ALB, distribuciones de CloudFront, endpoints de sitios web estaticos S3 y URLs de Elastic Beanstalk. Las consultas Alias son gratuitas. Usa Alias siempre que necesites apuntar tu dominio raiz a un recurso AWS.

 

Politicas de enrutamiento de Route 53 — El tema mas critico

Debes conocer las siete politicas de enrutamiento y que escenario resuelve cada una. Esto se examina intensamente.

Enrutamiento Simple es la politica mas basica. Devuelve una sola direccion IP para un dominio. Usalo cuando tienes un recurso y no necesitas logica especial. No admite verificaciones de estado.

Enrutamiento Ponderado asigna pesos a multiples recursos y distribuye el trafico proporcionalmente. Es ideal para pruebas A/B. Por ejemplo, envia el 90 por ciento del trafico a tu version de produccion estable y el 10 por ciento a tu nueva version para probarla con seguridad. Establecer un peso de 0 detiene el trafico a ese recurso por completo.

Enrutamiento Basado en Latencia enruta cada usuario a la Region de AWS que proporciona la menor latencia de red para ellos. Un usuario en Seoul se conecta a la region de Tokio o Seoul. Un usuario en Nueva York se conecta a la region de Virginia. Usa esto para optimizar la experiencia del usuario para una aplicacion implementada globalmente.

Enrutamiento de Conmutacion por Error crea una configuracion de recuperacion ante desastres Activo-Pasivo. Mientras el recurso primario pase su verificacion de estado, todo el trafico va ahi. En el momento en que la verificacion de estado falla, Route 53 redirige automaticamente el trafico al recurso secundario.

Enrutamiento de Geolocalizacion dirige el trafico segun donde se encuentra geograficamente el usuario, a nivel de pais o continente. Los usuarios de Corea del Sur van a un servidor de contenido en coreano. Los usuarios de Estados Unidos van a un servidor de contenido en ingles. Esto tambien es util para el cumplimiento legal.

Enrutamiento de Geoproximidad enruta basandose en la distancia geografica entre usuarios y recursos, pero agrega un valor de Bias que te permite desplazar el limite. Aumentar el bias para un recurso expande el area geografica que sirve. Debe usarse con Route 53 Traffic Flow, el editor visual de politicas de trafico.

Enrutamiento de Multiples Valores devuelve multiples direcciones IP (hasta 8) e incluye solo recursos saludables, los que pasan las verificaciones de estado. Proporciona distribucion basica de carga. No es un reemplazo para Elastic Load Balancer pero funciona bien para casos de uso simples.

 

Verificaciones de estado de Route 53

Las verificaciones de estado verifican periodicamente que tus recursos esten funcionando correctamente, como un medico programando revisiones regulares para un paciente.

Puedes monitorear endpoints HTTP/HTTPS, conexiones TCP, o el estado de otras verificaciones de estado. Combinadas con el enrutamiento de conmutacion por error, las verificaciones de estado permiten la conmutacion automatica cuando un recurso primario deja de estar disponible.

 

Amazon CloudFront — Red de entrega de contenido global

CloudFront es un servicio CDN (Red de Entrega de Contenido). Almacena en cache tu contenido en ubicaciones edge distribuidas por todo el mundo para que los usuarios lo reciban mas rapido, desde una ubicacion mas cercana a ellos.

Piensa en una cadena de tiendas de conveniencia. Podrias tener un solo almacen central y hacer que todos viajen ahi para comprar productos. O podrias almacenar productos en tiendas de conveniencia locales cerca de donde viven los clientes. CloudFront es la red de tiendas de conveniencia. Tu servidor de origen es el almacen.

Sin CloudFront, un usuario en Seoul descargando una imagen almacenada en un bucket S3 en Virginia debe esperar que los datos viajen hasta la mitad del mundo, cientos de milisegundos. Con CloudFront, la imagen esta en cache en la ubicacion edge de Seoul y se entrega en decenas de milisegundos.

 

Origenes de CloudFront

Un origen es el servidor fuente donde CloudFront obtiene contenido cuando aun no esta en cache.

Los buckets S3 almacenan archivos estaticos como imagenes, CSS, JavaScript y HTML. ALB (Application Load Balancer) se encuentra frente a aplicaciones web dinamicas. Las instancias EC2 pueden servir como servidores web directamente. Los servidores HTTP externos fuera de AWS tambien pueden ser origenes.

 

Caching de CloudFront

TTL (Tiempo de Vida) define cuanto tiempo permanece valido el contenido en cache antes de que CloudFront obtenga una copia nueva del origen. El valor predeterminado es 24 horas. Establece TTL mas largo para contenido que cambia raramente como imagenes o fuentes. Establece TTL mas corto para contenido que cambia frecuentemente.

La Invalidacion de Cache obliga a CloudFront a eliminar el contenido en cache antes de que expire su TTL. Si actualizas tu sitio web pero los usuarios siguen viendo la version antigua, ejecuta una invalidacion. Puedes especificar patrones de ruta como /images/* para invalidar archivos especificos solo. Las invalidaciones generan un pequeno cargo.

La Clave de Cache determina que solicitudes comparten la misma respuesta en cache. Una clave de cache tipicamente es la ruta URL, pero tambien puede incluir cadenas de consulta, encabezados y cookies. Una clave de cache mas simple significa que mas solicitudes llegan al cache, mejorando el rendimiento.

 

OAC de CloudFront — Protegiendo el contenido de S3

OAC restringe el acceso a tu bucket S3 para que el contenido solo sea accesible a traves de CloudFront, no directamente a traves de URLs de S3.

Imagina este escenario: sirves imagenes a traves de CloudFront. Alguien descubre la URL directa de S3 y comienza a descargar contenido sin pasar por CloudFront. OAC resuelve esto configurando la politica del bucket S3 para solo permitir solicitudes que provengan del principal de servicio de CloudFront. Las solicitudes directas de URL de S3 son bloqueadas. OAC es el reemplazo moderno del antiguo OAI (Origin Access Identity).

 

AWS Global Accelerator — IPs estaticas mas red global AWS

Global Accelerator mejora el rendimiento de las aplicaciones enrutando el trafico del usuario a la ubicacion edge de AWS mas cercana y luego llevandolo a traves de la red interna de alta velocidad de AWS a tus endpoints de aplicacion.

Proporciona dos direcciones IP Anycast estaticas. Dado que estas IPs nunca cambian, puedes hacer conmutacion por error entre regiones sin ningun cambio de DNS ni retrasos de propagacion. Admite protocolos TCP y UDP, lo que lo hace ideal para aplicaciones en tiempo real como videojuegos multijugador, llamadas VoIP y sistemas de trading financiero.

 

CloudFront vs Global Accelerator

| Caracteristica | CloudFront | Global Accelerator | |----------------|-----------|-------------------| | Uso principal | Contenido cacheable (imagenes, video, HTML) | Aplicaciones en tiempo real no cacheables | | Direcciones IP | Basadas en dominio, pueden cambiar | 2 IPs Anycast estaticas, nunca cambian | | Protocolos | HTTP y HTTPS | TCP y UDP | | Caching | Si, en ubicaciones edge | Sin caching | | Mejor para | Sitios web, distribuc

Volver a la lista del blog