Hemos visto varias opciones para guardar datos: RDS/Aurora (relacional), DynamoDB (NoSQL) y ElastiCache (caché). Y AWS tiene aún más. Ante tanta variedad, surge la pregunta clave: ¿cuál uso para mi caso? Este subcapítulo te da el criterio para elegir bien. Cierra la Parte II y es uno de los conocimientos más prácticos del libro.

El principio: «la herramienta adecuada para cada trabajo»

AWS defiende la idea de bases de datos especializadas (purpose-built): en lugar de forzar todos tus datos en un único tipo de base de datos, eliges el tipo que mejor encaja con cada necesidad. Una aplicación grande a menudo usa varias bases de datos distintas a la vez, cada una para lo que mejor hace.

Analogía: No usas un martillo para todo. Para clavar usas un martillo; para atornillar, un destornillador; para cortar, una sierra. Con las bases de datos igual: cada tipo es la herramienta ideal para cierto trabajo.

Las preguntas clave para elegir

Hazte estas preguntas sobre tus datos y tu caso:

  1. ¿Mis datos tienen una estructura clara y relaciones entre sí?
  2. ¿Necesito consultas complejas (filtros, joins, informes)?
  3. ¿Qué escala y rendimiento necesito?
  4. ¿Los datos cambian de forma flexible o tienen un esquema fijo?
  5. ¿Estoy repitiendo muchas lecturas iguales?

Veamos cómo te orientan hacia cada opción.

Guía de decisión

Usa una base RELACIONAL (RDS / Aurora) cuando…

  • Tus datos tienen estructura clara y relaciones (usuarios que tienen pedidos, pedidos que tienen productos…).
  • Necesitas consultas complejas: filtros múltiples, uniones entre tablas, informes, agregaciones.
  • La consistencia y la integridad de los datos son críticas (banca, facturación, inventario).
  • Tu aplicación usa SQL.

Ejemplos: sistemas de gestión, banca, facturación, comercio electrónico (la parte de pedidos), aplicaciones empresariales clásicas. Aurora si necesitas más rendimiento/escala; RDS vanilla si quieres algo más sencillo y económico.

Usa una base NoSQL (DynamoDB) cuando…

  • Necesitas escala masiva y rendimiento constante en milisegundos.
  • Accedes a los datos sobre todo por una clave conocida («dame el elemento X»).
  • Tus datos son flexibles o cambian de estructura con frecuencia.
  • Quieres cero administración (serverless).

Ejemplos: carritos de compra, perfiles de usuario, sesiones, catálogos con atributos variables, datos de IoT, aplicaciones con millones de usuarios y picos enormes.

Usa una CACHÉ (ElastiCache) cuando…

  • Repites muchas lecturas iguales y quieres acelerarlas.
  • Quieres aliviar la carga de tu base de datos principal.
  • Necesitas datos «calientes» al instante (sesiones, rankings, contadores).

Recuerda: la caché acompaña a otra base de datos; no la sustituye. Es una capa de velocidad por delante.

Tabla resumen de decisión

Necesito… Usa…
Datos estructurados + relaciones + consultas complejas RDS / Aurora (relacional, SQL)
Máximo rendimiento, escala enorme, acceso por clave DynamoDB (NoSQL)
Acelerar lecturas repetidas / aliviar la BD ElastiCache (caché)
Análisis de grandes volúmenes / informes (data warehouse) Redshift (Capítulo 29)
Buscar texto / búsquedas avanzadas OpenSearch
Datos muy conectados (redes, relaciones) Neptune (base de grafos)

Las tres últimas filas son bases especializadas que AWS también ofrece. No las hemos detallado, pero conviene saber que existen para casos concretos (veremos Redshift en el Capítulo 29).

Combinarlas: el caso real

En la vida real, una aplicación seria mezcla varias. Veamos un ejemplo completo.

Ejemplo real — una tienda online:

  • RDS/Aurora (relacional): guarda los pedidos, pagos y facturas, donde la consistencia y las relaciones son críticas. Aquí necesitas SQL y garantías fuertes.
  • DynamoDB (NoSQL): guarda los carritos de la compra y las sesiones, que requieren escala enorme y acceso rápido por id de usuario.
  • ElastiCache (caché): guarda el catálogo de productos más visitados para que las páginas carguen al instante sin machacar la base de datos.
  • OpenSearch: alimenta el buscador de productos con búsquedas de texto avanzadas.

Cada pieza usa la base de datos que mejor resuelve su problema. Forzar todo en una sola haría la aplicación más lenta, más cara o más frágil.

Un consejo para principiantes

No te abrumes con tantas opciones. Cuando empiezas:

Si tienes dudas, una base de datos relacional (RDS/Aurora) es casi siempre una elección segura y versátil. Cubre la mayoría de necesidades. Añade DynamoDB cuando tengas un caso claro de escala masiva o acceso por clave, y ElastiCache cuando notes que la base de datos sufre por lecturas repetidas. Empieza simple y especializa solo cuando lo necesites.

Lo que debes recordar

  • AWS promueve bases de datos especializadas: elige el tipo que mejor encaja con cada necesidad, en lugar de forzar todo en una sola.
  • Relacional (RDS/Aurora): estructura, relaciones, consultas complejas, consistencia (SQL).
  • NoSQL (DynamoDB): escala masiva, rendimiento constante, acceso por clave, flexibilidad.
  • Caché (ElastiCache): acelerar lecturas repetidas y aliviar la base de datos (siempre acompañando a otra).
  • Las aplicaciones serias combinan varias según cada problema.
  • Si dudas al empezar, una base relacional es la opción segura y versátil; especializa cuando surja la necesidad.

Con esto cierras el Capítulo 8 y la Parte II. Ya conoces los servicios esenciales de AWS: cómputo (EC2), almacenamiento (S3), redes (VPC), identidad (IAM) y bases de datos. En la Parte III damos un gran salto: aprenderemos a definir toda esta infraestructura como código con Terraform.

Cloud, AWS & Terraform — De cero a experto

Capítulo 1 · Qué es el cloud computing

Capítulo 2 · El mercado cloud y los grandes proveedores

Capítulo 3 · Regiones, zonas de disponibilidad y edge

Capítulo 4 · Cómputo: EC2

Capítulo 5 · Almacenamiento: S3

Capítulo 6 · Redes: VPC

Capítulo 7 · Identidad y acceso: IAM

Capítulo 8 · Bases de datos gestionadas

Capítulo 9 · Por qué Infraestructura como Código

Capítulo 10 · HCL: el lenguaje de Terraform

Capítulo 11 · Providers y estado

Capítulo 12 · Tu primera infraestructura real en Terraform

Capítulo 13 · Balanceo de carga y autoescalado

Capítulo 14 · Serverless con Lambda

Capítulo 15 · Mensajería y eventos

Capítulo 16 · Entrega de contenido y DNS

Capítulo 17 · Contenedores en AWS

Capítulo 18 · Módulos: reutilización y composición

Capítulo 19 · Workspaces y gestión de entornos

Capítulo 20 · Backends remotos y locking

Capítulo 21 · Testing de infraestructura

Capítulo 22 · Terraform en CI/CD

Capítulo 23 · Seguridad en profundidad

Capítulo 24 · Observabilidad: logs, métricas y trazas

Capítulo 25 · Optimización de costes

Capítulo 26 · Alta disponibilidad y disaster recovery

Capítulo 27 · Well-Architected Framework de AWS

Capítulo 28 · Arquitecturas serverless a escala

Capítulo 29 · Plataformas de datos en AWS

Capítulo 30 · Multi-cuenta y landing zones

Capítulo 31 · Platform Engineering e Internal Developer Platform

Capítulo 32 · Certificaciones AWS relevantes

Capítulo 33 · Proyectos para consolidar lo aprendido

Capítulo 34 · Recursos y comunidad

© Copyright 2024. Todos los derechos reservados