SAA-C03

Deep Dive

Practicar ahora
D3 · Alto rendimiento

Caché: ElastiCache, DAX y CloudFront

La caché es fundamental para arquitecturas de alto rendimiento. El examen evalúa cuándo usar cada tipo: ElastiCache para aplicaciones, DAX para DynamoDB, CloudFront para contenido web. También evalúa patrones de caché como lazy loading y write-through.

Icon-Architecture/48/Arch_Amazon-ElastiCache_48

Por qué usar caché

La caché reduce latencia almacenando datos frecuentemente accedidos en memoria — órdenes de magnitud más rápida que disco o base de datos. También reduce la carga en la base de datos, permitiendo servir más tráfico con la misma infraestructura.

~10 ms

Base de datos (HDD)

~1 ms

Base de datos (SSD)

~0.1 ms

In-memory (Redis)

Icon-Architecture/48/Arch_Amazon-ElastiCache_48

ElastiCache Redis vs Memcached

CaracterísticaRedisMemcached
PersistenciaSí (RDB + AOF snapshots)No (solo memoria)
Replicación / Multi-AZSí — réplicas de lectura + failoverNo
Clustering / ShardingCluster Mode (sharding horizontal)Nativo multi-thread por nodo
Estructuras de datosStrings, hashes, sets, sorted sets, lists, HyperLogLogSolo strings simples
Pub/SubNo
Backup / RestoreNo
ThreadsSingle-thread por core (Cluster Mode = multi-nodo)Multi-thread nativo
Caso de usoSesiones, leaderboards, pub/sub, cache con HACache simple de objetos, multi-thread

Elige Redis cuando...

  • Necesitas persistencia de datos (datos sobreviven reinicio)
  • Requieres alta disponibilidad con Multi-AZ
  • Sesiones de usuario que NO pueden perderse
  • Leaderboards con sorted sets
  • Mensajería Pub/Sub entre servicios
  • Datos con TTL y expiración automática

Elige Memcached cuando...

  • Caché puramente de objetos sin necesidad de HA
  • Necesitas máximo throughput multi-thread
  • Datos simples (key-value sin estructuras complejas)
  • Está bien perder la caché (se reconstruye desde BD)
  • Necesitas escalar horizontalmente de forma simple

Regla práctica para el examen

Si la pregunta menciona cualquiera de estas palabras → Redis: "sesiones", "persistencia", "Multi-AZ", "replicación", "pub/sub", "sorted sets", "leaderboards". Si dice "caché simple", "objetos", "multi-thread", "sin requisitos de HA" → Memcached.

Icon-Architecture/48/Arch_Amazon-DynamoDB_48

DynamoDB DAX

DAX (DynamoDB Accelerator) es un cluster de caché in-memory totalmente administrado, diseñado específicamente para DynamoDB. Reduce la latencia de lecturas de milisegundos a microsegundos.

Cómo funciona

1

Tu aplicación usa el SDK de DAX en vez del SDK de DynamoDB

2

DAX primero busca en su caché in-memory

3

Cache hit: respuesta en microsegundos

4

Cache miss: DAX consulta DynamoDB y cachea el resultado

5

La aplicación no cambia — mismo API de DynamoDB

DAX vs ElastiCache para DynamoDB

DAX

Caché específico de DynamoDB. Transparente para la app. Entiende el modelo de datos de DynamoDB.

ElastiCache (Redis)

Caché de propósito general. Requiere lógica en la app para gestionar caché. Puede cachear resultados de múltiples fuentes.

Señal DAX en el examen

"Latencia de microsegundos para DynamoDB" o "miles de lecturas por segundo en DynamoDB" → DAX. DAX no ayuda con operaciones de escritura.

Icon-Architecture/48/Arch_Amazon-CloudFront_48

CloudFront como caché de contenido

CloudFront no es solo un CDN para contenido estático — también cachea respuestas dinámicas de APIs y puede reducir dramáticamente la latencia para usuarios globales.

Cache TTL

Cuánto tiempo CloudFront cachea un objeto. Configurado por Cache-Control o Expires headers del origen, o por CloudFront Cache Policy.

EXAMEN: TTL 0 = no cachear (para APIs dinámicas). TTL alto = para assets estáticos con hash en nombre.

Cache Key

Qué elementos del request forman la clave de caché. Por defecto solo el URL. Puede incluir headers, cookies o query strings.

EXAMEN: Incluir query string en cache key para: ?lang=es → versión en español en caché separada.

Origin Shield

Capa adicional de caché entre los Edge Locations y el origen. Reduce requests al origen hasta un 60%.

EXAMEN: "Reducir carga en el servidor de origen" con CloudFront → habilitar Origin Shield.

Invalidaciones

Fuerza a CloudFront a descartar objetos cacheados. Útil tras deploy de nuevas versiones de código/assets.

EXAMEN: Invalidar /index.html y /app.*.js tras deploy. Primeras 1,000 paths/mes gratis.
Icon-Architecture/48/Arch_Amazon-ElastiCache_48

Patrones de caché

Lazy Loading (Cache-Aside)

Solo cacheas cuando hay un cache miss. La app primero busca en caché; si no está, consulta la BD y lo escribe en caché.

Ventajas

+Solo cachea datos realmente usados

+La caché puede fallar sin romper la app

Desventajas

-Primer acceso lento (cache miss)

-Datos pueden quedar stale

Write-Through

Cada escritura a la BD también actualiza la caché. Los datos en caché siempre están frescos.

Ventajas

+Sin datos stale

+Cache siempre caliente para datos escritos

Desventajas

-Escrituras más lentas (2 operaciones)

-Puede cachear datos que nunca se leen

TTL — Time To Live

Todos los patrones de caché deben incluir TTL para evitar datos stale indefinidamente. El TTL ideal depende de la frecuencia de actualización de los datos: sesiones de usuario (30 min), resultados de búsqueda (5 min), perfil de usuario (1 hora), catálogo de productos (24 horas).

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Una aplicación web tiene una base de datos RDS con consultas lentas de lectura que están afectando la experiencia del usuario. Los datos del catálogo de productos cambian raramente (1-2 veces al día). ¿Qué patrón de caché y servicio son más adecuados?