Bases de datos relacionales - Alta disponibilidad con Amazon RDS y Aurora
Explicamos cómo construir bases de datos relacionales de alta disponibilidad utilizando Amazon RDS y Aurora.
El valor de las bases de datos relacionales gestionadas
Las bases de datos relacionales son el núcleo de los sistemas empresariales críticos, siendo indispensables para el procesamiento de transacciones, la integridad de datos y el procesamiento de consultas complejas. Amazon RDS es un servicio de base de datos relacional completamente gestionado que soporta 5 motores: MySQL, PostgreSQL, MariaDB, Oracle y SQL Server. En la operación de bases de datos on-premises, surgen enormes tareas operativas como adquisición de hardware, instalación del SO, configuración del motor de BD, aplicación de parches, copias de seguridad y configuración de replicación, y se estima que aproximadamente el 70% del tiempo de los DBA se dedica a estas tareas rutinarias. RDS delega estas tareas operativas a AWS, permitiendo que los DBA se concentren en actividades de mayor valor como el diseño de esquemas y la optimización de consultas. Las copias de seguridad automáticas tienen un período de retención de hasta 35 días, con restauración a cualquier punto en el tiempo (PITR) posible en intervalos de 5 minutos.
La arquitectura innovadora de Amazon Aurora
Amazon Aurora es una base de datos relacional nativa de la nube desarrollada por AWS, que logra hasta 5 veces el rendimiento de MySQL y hasta 3 veces el de PostgreSQL. El almacenamiento de Aurora se replica automáticamente en 6 copias distribuidas en 3 zonas de disponibilidad, con expansión automática hasta 128 TB. Esta arquitectura de almacenamiento distribuido elimina la necesidad de aprovisionamiento previo de almacenamiento, cobrando solo por lo utilizado. Aurora soporta hasta 15 réplicas de lectura con una latencia de replicación típicamente inferior a 20 milisegundos. El failover se completa en menos de 30 segundos, maximizando la disponibilidad de la aplicación. A continuación se muestra un ejemplo de comando CLI para crear una instancia RDS for PostgreSQL. aws rds create-db-instance \ --db-instance-identifier my-postgres-db \ --db-instance-class db.r6g.large \ --engine postgres \ --engine-version 15.4 \ --master-username admin \ --master-user-password MySecurePassword123 \ --allocated-storage 100 \ --multi-az \ --storage-encrypted
Base de datos serverless con Aurora Serverless v2
Aurora Serverless v2 es una opción serverless que escala automáticamente la capacidad de la base de datos según la demanda de la carga de trabajo. Escala desde 0,5 ACU (Aurora Capacity Unit) hasta un máximo de 256 ACU en incrementos granulares de 0,5 ACU, respondiendo instantáneamente a las fluctuaciones de demanda. En entornos de desarrollo y pruebas, minimiza los costos en períodos de inactividad mientras escala automáticamente durante las pruebas de carga. Aurora Serverless v2 puede coexistir con instancias provisionadas en el mismo clúster, permitiendo configuraciones híbridas que distribuyen las cargas de lectura a réplicas de lectura serverless. Con bases de datos on-premises, es necesario mantener hardware dimensionado para picos funcionando constantemente, y no es raro que la utilización promedio se quede en un 20-30%. Aurora Serverless v2 cobra por segundo de ACU utilizado, minimizando el desperdicio de recursos. Para comprender en profundidad el diseño y operación de bases de datos AWS, los libros especializados (Amazon) son útiles.
Despliegue global y recuperación ante desastres
Aurora Global Database permite construir un clúster de base de datos global que abarca una región primaria y hasta 5 regiones secundarias. La latencia de replicación a las regiones secundarias es típicamente inferior a 1 segundo, y el failover se completa en menos de 1 minuto en caso de fallo regional. Esto permite lograr una recuperación ante desastres con RPO inferior a 1 segundo y RTO inferior a 1 minuto. La implementación Multi-AZ de RDS realiza failover automático a la instancia en espera cuando falla la instancia primaria, minimizando el tiempo de inactividad de la aplicación. RDS Proxy gestiona el pooling y la administración de conexiones de base de datos, procesando eficientemente grandes cantidades de conexiones efímeras desde aplicaciones serverless como Lambda. Construir una recuperación ante desastres equivalente on-premises requiere conexiones dedicadas a centros de datos remotos, implementación de software de replicación y preparación de procedimientos de failover, con inversiones del orden de cientos de millones de yenes.
Precios de RDS y Aurora
RDS db.r6g.large cuesta aproximadamente 0,252 dólares por hora (alrededor de 181 dólares al mes). Aurora con especificaciones equivalentes cuesta aproximadamente 0,29 dólares/hora, pero ofrece hasta 5 veces el rendimiento. El almacenamiento gp3 de RDS cuesta aproximadamente 0,08 dólares por GB al mes, y Aurora aproximadamente 0,10 dólares. Las instancias reservadas ofrecen descuentos de hasta el 72%. Aurora Serverless v2 se cobra por uso de ACU (Aurora Capacity Unit), a aproximadamente 0,12 dólares por hora de ACU.
Resumen - La elección óptima de base de datos relacional
Amazon RDS y Aurora son servicios que transforman fundamentalmente la operación de bases de datos relacionales. Reducen significativamente la carga operativa de los DBA mientras aseguran disponibilidad y durabilidad de nivel empresarial. Se elige Aurora cuando se necesita alto rendimiento con compatibilidad MySQL/PostgreSQL, y RDS cuando se requiere compatibilidad completa con motores existentes.