🥇 Relational Database Service (RDS).

RDS es un servicio que simplifica el montaje, operacion, y escalamiento de una base de datos relacion en AWS. RDS se encarga de las tareas comunes como respaldos, parches, escalamiento y replicación.

En unos minutos puede crear bases de datos en los sistemas mas populares y empezar a crear transacciones SQL. Posteriormente RDS se encargara de las tareas de mantenimiendo de forma automática.

RDS simplifica el proceso de replicación de los datos para incrementar la disponibilidad, durabilidad o escalar mas alla de una sola instancia de bases de datos para aquellos procesos de grande cargas de trabajo en lectura de la base de datos.

RDS no provee acceso a las bases de datos mediante Shell y restringe el acceso a cierto procedimientos en el sistema y tablas que requieren privilegios avanzados. Tipicamente se pueden usar las mismas herramientas para realizar queries, analizar, modificar y administrar una base de datos.

🍿 Instancias de bases de datos.

RDS provee una Application Programming Interface (API) que permite crear y manejar una o mas instancias de bases de datos. Cada base de datos utiliza un motor de base de datos comercial u open source, actualmente estan soportados:

Se pueden crear nuevas instancias de bases de datos utiliazndo la llamada CreateDBInstance en la API o utilizando la consola de administracion. Las bases de datos existentes pueden ser modificadas utilizando la llamada ModifyDBInstance en la API. Una instancia de base de datos puede contener multiples bases de datos, las cuales se pueden administrar dentro de la misma instancia de base de datos mediante comandos SQL.

Los recursos de computo y memoria son determinados por el tipo instancia de la base de datos. Se puede seleccionar una instancia. El rango de tipos de instancias se exiente de db.t2.micro con 1 virtual CPU (vCPU) y 1 GB de memoria, hasta db.r3.8xlarge con 32 vCPUs y 244 GB de memoria. Conforme se necesiten cambios con el tiempo, es posible cambiar el tipo y clase de instancia y el monto de computo y de la memoria. RDS realizará toda la migración de los datos a otra instancia de mayor o menor tamaño. Independientemente del tipo de instancia elegida, se puede realizar el control del tamaño y las características del performance del almacenamiento utilizado.

Amazon RDS soporta una gran variedad de motores, versiones y combinacione sd ecaracteristicas. Muchas de las características y configuración típica es expuesta y manejada utilizando DB parameter groups (grupos de parametros para las bases de datos) y DB Option Groups (grupos de opciones para las bases de datos). El DB parameter groups funciona como contenedor de valores de la configuración del motor, que esta vacio por default. Para poder habilicar características específicas de un motor de DB se crea un DB option group y se configuran los valores de acuerdo a lo requerido.

Las bases de datos existentes e pueden migrar a RDS utilizando herramientas nativas y tecnicas que varian dependiendo del motor. Para MySQL se puede exportar/importar un backup mediante mysqldump. Tambien es posible utilizar MySQL Service, que brinda una interfaz gráfica que simplifica la migración de esquema y datos entre las bases de datos. También permite la conversión entre una base de datos y otra.

🍿 Motores.

🍿 Opciones de Almacenamiento.

RDS esta construido sobre EBS y permite seleccionar el tipo de almacenamiento basado en las preferencias de performance y requerimientos de costo. Dependiendo de la base de datos se puede escalar desde 4 hasta 6TB en espacio y hasta 30,000 IOPS.

RDS soporta tres tipos de almacenamiento.

🍿 Respaldos y Recuperaciones.

RDS provee dos mecanismos de respaldo de bases de datos: respaldos automatizados y snapshots.

Cada organizacion define un Recovery Point Objective (RPO) y Recovery Time Objective (RTO). Es común en sistemas enterprise tener un RPO en minutos y un RTO en horas o incluso dias.

RPO define el maximo periodo de predida de datos que es aceptable, en caso de una falla. Muchos sistemas respaldan los logs de transacciones cada 15 minutos, para permitir minimizar la perdida de datos en caso de un evento de borrado accidental o una falla del hardware.

RTO es definido el maximo periodo sin operaciones que es permitido para recuperar los datos de los backups y reestablecer el sistema. Para sistemas grandes, puede tomar horas restaurar un backup completo.

🥤 Respaldos Automatizados.

RDS continuamente monitorea los cambios y respalda las bases de datos. Crea snapshots de los volumenes de las DB, almacenando totalmente la instancia de base de datos y no solo bases de datos individuales. Se puede definir un periodo de reteción cuando se crea la instancia de la base de datos, que por default sera de 1 dia y se puede modificar hasta un máximo de 25. Cuando se elimina una instancia, se perderán todos los snapshots de la misma y no podrán ser recuperados.

Los backups automatizados ocurren diariamente durante un periodo de tiempo configurable de 30 minutos. Se puede realizar la recuperación de una DB Instance hasta un punto específico en el tiempo creando una nueva DB Instance.

🥤 Snapshots Manuales.

Ademas de los snapshots automaticos, es posible realizar snapshots manuales en cualquier moment. A diferencia de los automáticos, estos se preservan hasta que se eliminan manualmente.

Para bases de datos en operación, utilice Multi-AZ para minimizar el impacto del performance su snapshot. Durante el respaldo, el almacenamiento I/O puede ser suspendido mientras los datos son respaldados, y puede experimentarse elevados valores de latencia. Para las bases de datos Multi-AZ este periodo es menor.

🥤 Proceso de Recuperación.

No es posible restaurar un snapshot a una base de datos existente. Una nueva instancia debe de ser creada cuando se restaura un snapshot. Cuando se restaura una DB Instance, solo los parámetros default de la base de datos y el security group son asociados con las instancias restauradas. Tan pronto como la restauración se complete, se deben asociar los parametros necesarios a la base de datos y los security groups utilizados.

Cuando se utilicen respaldos automatizados, RDS combina los respaldos diaros realizados junto con los transaction logs para permitir restaurar la base de datos hasta cualquier punto durante el periodo de retención, usualmente, hasta los ultimos 5 minutos.

🍿 Alta disponibilidad con Multi-AZ.

Permite crear clusters de bases de datos a traves de multiples AZ, reduciendo la complejidad envuelta en esta tarea. Esto permite incrementar la disponibilidad de su base de datos utilizando replicación. Esto permite alcanzar los mas demandantes objetivos RPO y RTO utilizando replicación sincrona para minimizar RPO y RTO a minutos.

Multi AZ permite posicionar una copia secundaria en otra AZ para propositos de recuperación de desastres.

Endpoint:

mi_base_de_datos.#######.us-west-2.rds.amazonaws.com

Este nombre DNS que AWS es el que se utiliza para crear una conexión hacia su base de datos.

RDS automáticamente replica los datos desde la base de datos maestra en la instancia primaria, hacia la base de datos esclava en una instancia secundaria utilizando synchronous replication. Cada AZ utiliza su propia infraestructura, con una ingeneria para hacerla altamente confiable.

RDS realizará un failover para los siguientes eventos:

Los deployments de Multi-AZ son realizados unicamente con propositos de recuperación; su intención no es mejorar el performance de la base de datos. La base de datos de reserva no esta disponible para realizar queries desde la instancia primaria. Para mejorar el performance utilizando multiples instancias, utilice replicas de lectura, u otro tipo de cache de base de atos coom Amazon ElastiCache.

🍿 Escalando hacia arriba o hacia abajo.

RDS permite escalar verticalmente y para algunas bases de datos horizontalmente.

🥤 Escalamiento Vertical.

Cosniste en añadir mas poder de computo, memoria y recursos de almacenamiento que permitan procesar mas transacciones, ejecutar mas queries y almacenar mas datos. Con RDS estos cambios pueden ser calendarizados y ocurrir durante los periodos de mantenimiento.

Despues de selecionar una instancia mas grande o pequeña, RDS realizará el proceso de migración con una interrupción mínima.

En cada db instance es posible escalar hasta 5 o 6 GB de espacio deoendiendo del tipo de almacenamiento o el motor de base de datos. La expansion de almacenamiento es soportada para todas las bases de datos excepto SQL Server.

🥤 Escalamiento Horizontal mediante Particionamiento.

Una base de datos relacional puede ser escalada verticalmente hasta cierto punto donde la instancia alcanza su limite de tamaño. Particionar una base de datos en multiples instancias o shards es una tecnica comun para manejar peticios mas alla de las capacidaddes de una instancia.

El sharding permite escalar horizontalmente permite escalar horizontalmente y manejar mas usuarios y peticiones pero requiere logica adicional en la capa de aplicaciones. La aplicacione ndecita decidir que ruta correcta utilizar para los shards, y se hace mas limitada en el tipo de queries que puede realizar. Las bases de datsoc como DynamoDB o Cassandra estan diseñadas para escalar horizontalmente.

🥤 Escalamiento horizontal mediante Replicas de Lectura.

RDS soporta replicas de lectura que permiten escalar hacia arriba de manera elastica, mas alla de la capacidad de una instancia de base de datos para permitir cargas de trabajo de lecturas intensas.

Ejemplos en donde desplegar una o mas replicas de lectura es util:

Por ejemplo un blog puede tienes muy pocas operaciones de escritura y muchas de lectura, por lo que la mayoria de la actividad de las bases de datos será read-only. Al descargar la actividad de lecturas en varias replicas, la instancia principal puede ocuparse solo de las operaciones de escritura.

Las replicas de lectura son actualmente soportadas en RDS por MySQL, PostgreSQL, MariaDB y Aurora. Los updates realizados a la db instance fuente son replicados de manera asyncrona a la replica de lectura.

Es posible crear una o mas replicas de lectura dentro de una region, o atraves de multiples regiones. Es posible utilizar read replicas para servir trafico de lectura mas cercano a los usuarios globales y migrar las bases de datos a través de las regiones.

🍿 Seguridad.

Asegurar las instancias de RDS y las bases de datos relacionales requiere un plan de manejo de desasttres con muchas capas frecuentemente encontradas en sistema basados en bases de datos. Que incluyen infraestrucutra, base de datos y red.

Proteger el acceso a los recurso de la infraestructura usando politicias de IAM que limiten que acciones pueden realizar los administradores como CreateDBInstance y DeleteDBInstance.

Otra practica de seguridad es desplegar una instancia de RDS en una red privada mediante VPC que limite el acceso de la red a las instancias de las bases de datos. Antes de esto primero debe crear un subgrupo de reg (db subnet group) que predefina que subredes estan disponibles para despliegues de RDS. Ademas de restringir el acceso de red utilizando ACL’s y Security Groups para limitar el tráfico de entrada a una lista corta de direcciones IP.

A nivel de la base de datos, también sera necesario crear usuarios y garantizales permisos para leer y escribir en las bases de datos. El acceso a la base de datos es controlado por el motor de la base de datos misma y su mecanismo de usuarios. Cree usuarios a nivel de la base de datos con contraseñas que utilicen combinaciones poderosas y que se roten frecuentemente.

Finalmente, proteja la confidencialidad de sus datos en transito y reposo con encriptación provista por RDS. Las características de seguridad varian ligeramente de un motor a otro, pero todos los motores soportan alguna forma de encriptación en transito y reposo. Es posible tambien conectarse mediante un cliente a una base de datos utilizando SSL para proteger los datos en transito. Y para aquellos en reposo, utilice Key Management Services (KMS) o Transparent Data Encryption (TDE). Tdoso los logs, respanldos y snapshots son encriptados por una instancia de RDS.

Bases de Datos en AWS. RedShift.
comments powered by Disqus