Paso a paso

Conociendo AWS Aurora Serverless

Hoy se ha comunicado la disponibilidad general de Aurora Serverless MySQL, una variación de la base de datos administrada de AWS compatible con PostgreSQL y MySQL. El anuncio de este servicio se hizo en re:Invent 2017 y es hasta ahora que podemos empezar a probarlo para nuestros proyectos.

Pero, ¿qué significa que una base de datos esté en un modelo “sin servidor”?

  1. Te olvidas totalmente de elegir un tamaño de instancia para el clúster de tu base de datos. En Aurora Serverless solo pagas por la cantidad de recursos que ocupas y el tiempo (en segundos) que tu servicio se encuentra en operación.
  2. Puedes escalar automáticamente la capacidad de tu clúster de base de datos, según la demanda de tu aplicación. Esto significa que puedes empezar con un costo base barato y permitir a Aurora escalar hasta cierto límite cuando así lo requiera.
  3. Cuando no esté en uso, puedes elegir pausar automáticamente tu clúster y solo seguirá facturando el almacenamiento de datos. Esto lo hace especialmente útil para proyectos en desarrollo que no requieres una base de datos disponible el 100% del tiempo (y odias esa facturación del servicio que se te olvidó apagar el fin de semana).

Creando una base de datos Aurora Serverless

Ahora sí, manos a la obra. ¿Cómo se ocupa este nuevo servicio? Por el momento solo es compatible con Aurora MySQL 5.6, así que debemos elegir esta opción dentro de la creación de nueva base de datos en el servicio RDS dentro de tu consola de AWS:

Lo interesante está en la configuración. De entrada debemos elegir el Capacity TypeServerless

Y llenar el nombre, username maestro y su password:

Aurora Serverless mide su capacidad de cómputo en ACU (Aurora Capacity Units), 1 ACU significa aproximadamente 2 GB de memoria con su correspondiente CPU y aprovisionamiento de red. Este modelo es parecido a Lambda, donde el único parámetro para el usuario es la cantidad de memoria RAM que se le asigna a una función y queda a discreción de Amazon la cantidad de CPU que le asigna al contenedor. Cada ACU tiene un costo de $0.06 USD por hora.

Lo mínimo que le puedes asignar a tu base de datos son 2 ACU y un máximo de 256 ACU. Los parámetros Minium Aurora capacity unit y Maximum Aurora capacity unit le permite a la base de datos crear reglas de auto escalamiento con base al número de conexiones, límites de uso de CPU y memoria disponible. Para un entorno de desarrollo es recomendable ajustar el máximo y mínimo a 2 ACU y evitar gastos sorpresa.

Si todo esto no fuera suficiente para ahorrar en tu servidor de base de datos, existe la función de pausar el procesamiento después de un periodo de inactividad. Más adelante veremos como funciona la reanudación del servicio automáticamente.

Por último te pedirá configurar la VPC, Subnet, Security Group y el periodo de retención de backups. Nada diferente a lo que podías hacer antes con Aurora.

Al crear la base de datos, tienes una pantalla con el detalle y el monitoreo de la base de datos, así como los logs del servicio.

Probando con una aplicación

Para probar la conexión a Aurora Serverless hice una pequeña aplicación en Django configurada para MySQL. La parte interesante es la funcionalidad de pausado automático y auto escalamiento. En la parte inferior del detalle de la base de datos puedes encontrar el log de Recent events:

Como configuramos el pausado a 5 minutos, nuestra base de datos ya se encuentra sin servicio. ¡Pero no te preocupes! No tarda mucho en reiniciar, veamos:

Ejecución de las migraciones de Django mientras la base de datos está pausada

Le toma unos 30 segundos aproximadamente estar nuevamente en servicio. Nada mal considerando que el timeout por default es de 60 segundos, así no tendremos que hacer reintentos desde nuestro código.

Para probar la conexión a MySQL creamos un modelo en Django e insertamos datos a través del admin. Mientras nuestro servidor de pruebas se encuentra ejecutando, podemos ver el número de conexiones y ACU en el monitoreo de RDS:

Como puedes ver, Aurora Serverless no es fundamentalmente diferente a cualquier otro base de datos en RDS, excepto en el modelo de administración sin servidores que se adapta al uso de tu aplicación.

Observaciones

  • Si no te puedes conectar a tu base de datos, seguramente es el Security Group que se crea automáticamente. SOLO para pruebas puedes abrirlo a todo el mundo, ni se te ocurra hacer eso en producción:
  • Recuerda que la facturación mínima por ACU es por un periodo de 5 minutos, si configuras el pausado de la base de datos con un valor menor, puede que estés perdiendo dinero.
  • La capacidad en ACU no es el único parámetro de facturación, revisa la documentación para conocer los otros conceptos por los que te cobra el servicio de Aurora Serverless y algunos casos de uso.
  • Para que el pausado funcione, debes tener 0 conexiones activas en tu base de datos. Si olvidas un servicio prendido en algún servidor apuntando a Aurora, jamás verás el ahorro por el pausado automático.

Si tienes alguna pregunta o comentario no dudes en escribirme @eloyvega