AWS Certified Cloud Practitioner
Post 8 of 25
32%
Complete
AWS Cloud Practitioner #8: Amazon RDS - Databases Gestionadas
Domina RDS: databases relacionales gestionadas, Multi-AZ para alta disponibilidad, Read Replicas para escalamiento, y cuándo usar RDS vs. EC2.
Recommended Prerequisites
For the best learning experience, we recommend reading these posts first:
AWS Cloud Practitioner #1: De Servidores Físicos a la Nube
Aprende qué es cloud computing y las diferencias entre IaaS, PaaS y SaaS con una metodología bottom-up que construye tu conocimiento paso a paso.
Cloud Architecture7 min read→AWS Cloud Practitioner #6: Amazon EC2 - Tu Servidor en la Nube
Domina Amazon EC2: instance types, familias, pricing models (On-Demand, Reserved, Spot), y aprende cuándo usar cada opción para optimizar costos y performance.
Cloud Architecture12 min read→
🎯 Lo que Aprenderás Hoy
Al finalizar este post, podrás:
- Explicar qué es Amazon RDS y sus ventajas vs. databases en EC2
- Identificar los 6 database engines soportados
- Diferenciar entre Multi-AZ (availability) y Read Replicas (performance)
- Comprender backups automáticos y snapshots
- Decidir cuándo usar RDS vs. otros database services
El Problema Real
Tu startup necesita una database PostgreSQL para su aplicación web.
Opción 1: EC2 + PostgreSQL manual
Setup:
1. Lanzar EC2 instance
2. Instalar PostgreSQL manualmente
3. Configurar networking, security groups
4. Setup backups (scripts cron)
5. Configurar monitoring
6. Implementar replication (manual)
7. Gestionar patches y updates
Responsabilidades continuas:
- Aplicar security patches mensualmente
- Monitorear disk space
- Gestionar backups
- Manejar failover manualmente
- Escalar storage (downtime)
- Optimizar performance (tuning)
Costo tiempo: 10+ horas/mes
Riesgo: Alto (error humano en backups, patches, etc.)Opción 2: Amazon RDS
Setup:
1. aws rds create-db-instance --engine postgres --db-instance-class db.t3.micro
Responsabilidades continuas:
✅ Backups automáticos
✅ Patches automáticos
✅ Monitoring incluido
✅ Multi-AZ failover automático
✅ Scaling con zero downtime
Costo tiempo: <1 hora/mes
Riesgo: Bajo (AWS gestiona casi todo)¿Qué es Amazon RDS?
Amazon RDS (Relational Database Service) es un servicio gestionado de databases relacionales.
Analogía: RDS es como tener un DBA (Database Administrator) 24/7.
Sin RDS (EC2 + DB): Tú eres el DBA
- Instalas el software
- Configuras replication
- Gestionas backups
- Aplicas patches
Con RDS: AWS es el DBA
- AWS instala y configura
- AWS gestiona backups
- AWS aplica patches
- Tú solo usas la database
¿Qué Gestiona AWS?
AWS gestiona:
✅ OS installation y patches
✅ Database software installation
✅ Automated backups
✅ High availability (Multi-AZ)
✅ Scaling infrastructure
✅ Monitoring básico
✅ Security patches
TÚ gestionas:
📌 Database schema (tables, indexes)
📌 Query optimization
📌 Application connection strings
📌 User management y permissions
📌 Security Groups
📌 Cuándo escalarDatabase Engines Soportados
RDS soporta 6 database engines:
1. Amazon Aurora
AWS-proprietary, compatible con MySQL y PostgreSQL
Características especiales:
✅ 5x más rápido que MySQL, 3x más que PostgreSQL
✅ Auto-scaling storage (hasta 128 TB)
✅ 15 Read Replicas (vs. 5 para otros engines)
✅ Backtrack (volver a punto en tiempo sin usar backup)
Pricing:
~20% más caro que RDS MySQL/PostgreSQL
Pero performance puede compensar con less instances
Usa cuando:
- Necesitas máximo performance
- Apps enterprise críticas
- Necesitas muchos Read Replicas2. MySQL
Open-source, más popular
Versiones: 5.7, 8.0
Max storage: 64 TB
Read Replicas: Hasta 5
Pricing:
db.t3.micro: ~$15/mes (free tier eligible)
db.m5.large: ~$122/mes
Usa cuando:
- Migrando app existente con MySQL
- Comunidad grande (muchos recursos)
- Costo-efectivo3. PostgreSQL
Open-source, features avanzados
Versiones: 11, 12, 13, 14, 15
Max storage: 64 TB
Read Replicas: Hasta 5
Features únicos:
- JSON support nativo
- Advanced indexing (GiST, GIN)
- Full-text search
Usa cuando:
- Necesitas JSON/NoSQL features en SQL database
- Complex queries y analytics
- ACID compliance estricto4. MariaDB
MySQL fork, compatible con MySQL
Versiones: 10.3, 10.4, 10.5, 10.6
Similar a MySQL pero con features adicionales
Usa cuando:
- Quieres evitar Oracle (MySQL owner)
- Necesitas features de MariaDB específicos5. Oracle
Enterprise database
Licencias: License Included o BYOL (Bring Your Own License)
Ediciones: Standard, Enterprise
Pricing:
Mucho más caro que MySQL/PostgreSQL
License Included: $0.35/hora (db.t3.small)
BYOL: Más barato si ya tienes licencia
Usa cuando:
- App legacy requiere Oracle
- Enterprise features específicos de Oracle
- Ya tienes licencias Oracle6. Microsoft SQL Server
Database de Microsoft
Ediciones: Express, Web, Standard, Enterprise
Licencias: License Included o BYOL
Pricing:
Express: Gratis (limited to 10 GB)
Web: ~$0.05/hora
Standard/Enterprise: Significativamente más caro
Usa cuando:
- App .NET existente
- Requieres T-SQL
- Integración con Microsoft stackCaracterísticas Clave de RDS
1. Automated Backups
¿Qué es? RDS automáticamente hace backup de database completa + transaction logs.
Configuración:
- Retention period: 1-35 días (default: 7)
- Backup window: Elige cuándo corren (ej: 3am-4am)
- Point-in-time recovery: Restaura a cualquier segundo dentro de retention
Ejemplo:
Database corrupted a las 2:30pm
Puedes restaurar a:
- 2:29pm (1 minuto antes)
- 2:00pm (30 minutos antes)
- Cualquier segundo de los últimos 7 días# Habilitar automated backups
aws rds modify-db-instance \
--db-instance-identifier mydb \
--backup-retention-period 7 \
--preferred-backup-window "03:00-04:00"
# Restaurar a punto en tiempo
aws rds restore-db-instance-to-point-in-time \
--source-db-instance-identifier mydb \
--target-db-instance-identifier mydb-restored \
--restore-time 2025-11-16T14:29:00ZImportante:
✅ Backups son GRATIS (storage incluido hasta 100% de DB size)
✅ Retention hasta 35 días
✅ Backups se toman durante backup window (puede afectar performance)
❌ Si borras DB instance, backups automáticos se borran también
→ Usa snapshots para retention long-term2. DB Snapshots
¿Qué son? Backups manuales que persisten incluso si borras la DB instance.
Automated Backups vs. Snapshots:
Automated Backups:
- Automáticos
- Retention: 1-35 días
- Se borran cuando borras DB instance
- Incluye transaction logs (point-in-time)
Snapshots:
- Manuales (tú los creas)
- Retention: Indefinido (hasta que lo borres)
- NO se borran cuando borras DB instance
- Full backup (no point-in-time)# Crear snapshot
aws rds create-db-snapshot \
--db-instance-identifier mydb \
--db-snapshot-identifier mydb-snapshot-before-migration
# Restaurar desde snapshot
aws rds restore-db-instance-from-db-snapshot \
--db-instance-identifier mydb-restored \
--db-snapshot-identifier mydb-snapshot-before-migration
# Copiar snapshot a otra región (disaster recovery)
aws rds copy-db-snapshot \
--source-db-snapshot-identifier arn:aws:rds:us-east-1:123456789012:snapshot:mydb-snapshot \
--target-db-snapshot-identifier mydb-snapshot-backup \
--region eu-west-1Casos de uso:
✅ Antes de migration/upgrade mayor
✅ Compliance (mantener snapshot por años)
✅ Disaster recovery (copiar a otra región)
✅ Dev/test (restaurar snapshot de prod en dev)
Ejemplo:
Antes de migrar de MySQL 5.7 → 8.0:
1. Crear snapshot
2. Realizar migration
3. Si falla → restaurar desde snapshot
4. Si funciona → borrar snapshot después de validar3. Multi-AZ Deployment
¿Qué es? RDS mantiene standby replica síncrona en otra Availability Zone para alta disponibilidad.
Arquitectura:
Primary DB (AZ-1a) Standby DB (AZ-1b)
│ │
│──── Synchronous ───────────│
│ Replication │
│ │
Application ────┐ │
│ │
└─ DNS endpoint ──┘
(automatic failover)
Si Primary falla:
1. RDS detecta (60-120 segundos)
2. DNS endpoint apunta a Standby
3. Standby se promueve a Primary
4. Total downtime: 1-2 minutosCaracterísticas:
✅ Replication SÍNCRONA (no data loss)
✅ Automatic failover (sin intervención)
✅ Standby NO es accesible (no puedes leer de ella)
✅ Solo para high availability, NO para scaling reads
Pricing:
~2x costo (pagas por standby instance)
db.t3.micro Single-AZ: $15/mes
db.t3.micro Multi-AZ: $30/mes¿Cuándo usar Multi-AZ?
✅ Production databases críticas
✅ Apps que requieren 99.95%+ uptime
✅ Compliance (muchas regulaciones requieren HA)
❌ NO usar para:
❌ Dev/test environments (costo innecesario)
❌ Apps que toleran downtime
Ejemplo:
eCommerce checkout database:
→ Multi-AZ (downtime = pérdida de ventas)
Internal analytics database:
→ Single-AZ (downtime de 30 min es aceptable)Mantenimiento con Multi-AZ:
Sin Multi-AZ:
Maintenance → Downtime
Con Multi-AZ:
1. Apply patches a Standby
2. Failover a Standby (ahora Primary)
3. Apply patches a old Primary (ahora Standby)
4. Total downtime: ~2 minutos (solo failover)4. Read Replicas
¿Qué son? Copias asíncronas de database usadas para distribuir read traffic.
Arquitectura:
Primary DB (Read + Write)
│
│──── Async Replication ────┬──→ Read Replica 1 (Read only)
│
├──→ Read Replica 2 (Read only)
│
└──→ Read Replica 3 (Read only)
Application:
- Writes → Primary
- Reads → Load balance entre ReplicasCaracterísticas:
✅ Replication ASÍNCRONA (puede haber lag)
✅ Se puede leer de Replicas (scaling reads)
✅ Hasta 5 Replicas (15 para Aurora)
✅ Pueden estar en diferente región
✅ Pueden promover a standalone DB
Pricing:
Pagas por cada Replica + data transfer
db.t3.micro Primary: $15/mes
db.t3.micro Replica: $15/mes
Total con 3 Replicas: $60/mesMulti-AZ vs. Read Replicas:
| Aspecto | Multi-AZ | Read Replicas |
|---|---|---|
| Propósito | High Availability | Scaling reads |
| Replication | Síncrona | Asíncrona |
| Standby accesible? | NO | SÍ |
| Automatic failover? | SÍ | NO |
| Regions | Same region | Cross-region OK |
| Cantidad | 1 standby | Hasta 5 (15 Aurora) |
| Uso | Disaster recovery | Performance |
¿Cuándo usar Read Replicas?
✅ App con mucho más reads que writes (ej: 90% reads)
✅ Reporting/analytics (offload de primary)
✅ Disaster recovery cross-region
Caso de uso:
Blog con 100,000 lectores/día, 10 writers/día
Sin Read Replicas:
Primary DB handling 100% del traffic
→ CPU al 80%, slow queries
Con 3 Read Replicas:
Primary: 100% writes + 25% reads (CPU 30%)
Replicas: 75% reads distribuido (CPU 25% cada uno)
→ Performance 3x mejorPromotion de Read Replica:
# Promover Read Replica a standalone DB
aws rds promote-read-replica \
--db-instance-identifier mydb-replica-1
Casos de uso:
1. Disaster recovery:
Primary en us-east-1 falla completamente
→ Promote Replica en eu-west-1
2. Migration entre regions:
Crear Replica en nueva región
→ Promote
→ Update application to point to new regionReplication Lag:
Problema:
Write a Primary → Toma 2 segundos replicar a Replica
User ve data vieja en Replica
Solución:
CloudWatch metric: ReplicaLag
Si lag > threshold → envía reads a Primary5. Encryption
At Rest:
✅ AES-256 encryption
✅ Managed by AWS KMS
✅ Encrypts:
- Database storage
- Automated backups
- Snapshots
- Read Replicas
⚠️ Debe habilitarse al crear DB (NO se puede agregar después)# Crear DB con encryption
aws rds create-db-instance \
--db-instance-identifier mydb \
--engine postgres \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
# Para encriptar DB existente (no encriptada):
# 1. Snapshot
# 2. Copy snapshot con encryption
# 3. Restore desde encrypted snapshotIn Transit:
✅ SSL/TLS connections
# PostgreSQL example
psql "host=mydb.123456789012.us-east-1.rds.amazonaws.com port=5432 dbname=mydb user=admin sslmode=require"
# MySQL example
mysql -h mydb.123456789012.us-east-1.rds.amazonaws.com -u admin -p --ssl-mode=REQUIRED6. Scaling
Vertical Scaling (Instance Type):
# Cambiar de db.t3.micro a db.t3.small
aws rds modify-db-instance \
--db-instance-identifier mydb \
--db-instance-class db.t3.small \
--apply-immediately
Downtime:
Sin Multi-AZ: 5-10 minutos
Con Multi-AZ: 1-2 minutos (failover durante upgrade)Storage Scaling:
# Aumentar storage de 20GB a 100GB
aws rds modify-db-instance \
--db-instance-identifier mydb \
--allocated-storage 100
Downtime: NO (online operation)
⚠️ Puedes AUMENTAR storage, pero NO disminuirAuto Scaling de Storage:
# Habilitar auto-scaling
aws rds modify-db-instance \
--db-instance-identifier mydb \
--max-allocated-storage 1000
RDS automáticamente aumenta storage cuando:
- Free space < 10%
- Condition persiste por 5 minutos
- 6 horas desde último scaling
Beneficio: Nunca te quedas sin espacioRDS vs. EC2 + Database
¿Cuándo usar RDS vs. instalar database en EC2?
Usa RDS cuando:
✅ Quieres managed service (menos admin overhead)
✅ Necesitas automated backups y point-in-time recovery
✅ Multi-AZ alta disponibilidad
✅ Read Replicas para scaling
✅ Automatic patching
✅ Monitoring integrado
Ejemplo:
Startup con 2 developers
No tienen DBA dedicated
→ RDS (AWS gestiona todo)Usa EC2 + Database cuando:
✅ Necesitas acceso root al OS
✅ Database engine no soportado por RDS
✅ Custom configurations no disponibles en RDS
✅ Necesitas features específicos de OS
Ejemplo:
App legacy con Oracle RAC (Real Application Clusters)
→ RDS no soporta RAC
→ EC2 con Oracle RAC manualComparación
| Aspecto | RDS | EC2 + DB |
|---|---|---|
| Setup | 5 minutos | 2-4 horas |
| Patching | Automático | Manual |
| Backups | Automático | Manual (scripts) |
| HA | Multi-AZ (1-click) | Manual (days) |
| Scaling | Vertical + Read Replicas | Manual |
| Monitoring | CloudWatch integrado | Setup manual |
| Costo | Más caro (managed) | Más barato (DIY) |
| Flexibilidad | Limitada | Total |
📝 Preparación para el Examen
Puntos Clave para Memorizar
RDS Basics:
- 📌 Managed database: AWS gestiona OS, patches, backups
- 📌 6 engines: Aurora, MySQL, PostgreSQL, MariaDB, Oracle, SQL Server
- 📌 No SSH access: Es managed, no tienes acceso root
Alta Disponibilidad:
- 📌 Multi-AZ: Standby síncrono en otra AZ, automatic failover, HA
- 📌 Read Replicas: Async replicas, scaling reads, NO failover automático
- 📌 Multi-AZ ≠ Read Replicas: Diferentes propósitos
Backups:
- 📌 Automated backups: 1-35 días retention, point-in-time recovery
- 📌 Snapshots: Manuales, indefinidos, persisten si borras DB
- 📌 Encryption: Must enable at creation time
Scaling:
- 📌 Vertical: Cambiar instance type (downtime mínimo con Multi-AZ)
- 📌 Horizontal reads: Read Replicas (hasta 5, 15 para Aurora)
- 📌 Storage: Puede aumentar online, NO puede disminuir
Preguntas de Práctica
Pregunta 1:
Una aplicación tiene 95% reads y 5% writes. Performance está degradándose por alto tráfico de reads. ¿Qué solución mejora performance?
A) Multi-AZ deployment B) Aumentar instance type C) Crear Read Replicas D) Habilitar automated backups
Respuesta: C) Crear Read Replicas
Read Replicas distribuyen read traffic entre múltiples instances, mejorando performance para workloads read-heavy.
A es incorrecto: Multi-AZ es para HA, standby NO es accesible para reads.
Pregunta 2:
Una empresa necesita garantizar que su database pueda recuperarse rápidamente si una AZ falla. ¿Qué feature de RDS deberían usar?
A) Read Replicas B) Multi-AZ deployment C) Automated backups D) Snapshots
Respuesta: B) Multi-AZ deployment
Multi-AZ mantiene standby síncrono en otra AZ con automatic failover (1-2 minutos). Específicamente diseñado para high availability.
A es incorrecto: Read Replicas son async y NO tienen automatic failover.
Pregunta 3:
¿Qué ocurre con automated backups cuando se elimina una DB instance?
A) Se mantienen indefinidamente B) Se convierten en snapshots automáticamente C) Se eliminan junto con la DB instance D) Se mueven a S3 Glacier
Respuesta: C) Se eliminan junto con la DB instance
Automated backups se borran cuando borras la DB. Para retención long-term, crea snapshot manual antes de borrar.
🎓 Resumen
Lo que aprendimos:
- RDS: Managed database service, AWS gestiona OS/patches/backups
- 6 Engines: Aurora (fastest), MySQL, PostgreSQL, MariaDB, Oracle, SQL Server
- Multi-AZ: Standby síncrono para HA, automatic failover
- Read Replicas: Async replicas para scaling reads
- Backups: Automated (1-35d) + manual snapshots (indefinido)
- Encryption: At rest (KMS) + in transit (SSL/TLS)
Decisiones clave:
¿Necesitas HA?
└─ SÍ → Multi-AZ
¿Read-heavy workload?
└─ SÍ → Read Replicas
¿Necesitas máximo performance?
└─ SÍ → Aurora
¿Budget limitado + open-source?
└─ SÍ → MySQL/PostgreSQL
¿Compliance requiere custom OS config?
└─ SÍ → EC2 + Database (no RDS)⏭️ Próximo Post
En el Post #9 comenzaremos el Módulo 3: Networking con Amazon VPC:
- Virtual Private Cloud
- Subnets (public/private)
- Internet Gateway, NAT Gateway
- Diseño de network architecture
📚 Recursos
Tags: #AWS #CloudPractitioner #RDS #Databases #HighAvailability #MultiAZ #ReadReplicas #Certification
Related Articles
AWS Cloud Practitioner #3: Superpoderes de la Nube - Elasticity, Scalability y HA
Comprende las ventajas clave de cloud computing: elasticity, scalability, high availability y agility. Aprende cómo AWS implementa estos conceptos.
AWS Cloud Practitioner #1: De Servidores Físicos a la Nube
Aprende qué es cloud computing y las diferencias entre IaaS, PaaS y SaaS con una metodología bottom-up que construye tu conocimiento paso a paso.
AWS Cloud Practitioner #2: Infraestructura Global AWS - Regions, AZs y Edge Locations
Descubre cómo AWS distribuye su infraestructura globalmente y aprende a elegir la región correcta para tus aplicaciones usando metodología bottom-up.
AWS Cloud Practitioner #4: Well-Architected Framework - Los 6 Pilares
Aprende los 6 pilares del AWS Well-Architected Framework: Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization y Sustainability.