En este artículo vamos a escribir respecto a AWS DevOps Guru for RDS. DevOps Guru es un servicio de machine learning o ML que esta disponible para todos los motores soportados en RDS y que tiene como objetivo mejorar el rendimiento de nuestra aplicación y su disponibilidad.

Este nuevo servicio nos permite detectar, diagnosticar y remediar una amplia variedad de situaciones que pueden surgir en RDS; por ejemplo sobre utilización o problemas con comandos de SQL.

Las principales ventajas de un servicio como este son:

  • Rápidez. El servicio esta monitoreando constantemente la información de telemetría de RDS y al emplear técnicas de ML y análisis estadístico es capaz de detectar anomalías de manera rápida.

  • Simplicidad. No necesitamos ser un experto en ML o inclusive un experto DBA para un motor relacional determinado. Nos apoyamos en toda la experiencia de los equipos de ingenería de AWS y la basta experiencia que han recopilado a los largo de los años con centenas de miles de bases de datos.

  • Resolución. Al automatizar la detección de anomalías y sugerirnos áreas de investigación o medidas correctivas logramos ser capaz de resolver problemas de una manera muchísimo más rápida que lo podríamos hacer manualmente.

Quizás la mejor manera de entender el valor de este servicio es aprendiendo a activarlo y validar algunos de los hallazgos que puede mostrarnos para respaldar las tres ventajas que he mencionado.

Activar el Servicio

El primer paso que debemos hacer es asegurarnos que tenemos activo el servicio de DevOps Guru. Como observamos; nos indica el rol que se utiliza, que recursos serán analizados y un tópico de SNS para recibir notificaciones. Una vez que confirmamos lo anterior procedemos a habilitar el servicio.

Agente

Configuración en RDS

El siguiente paso es ir al servicio de RDS y dentro de este a ‘Performance Insights’, el cual tiene que estar activado de previo en la(s) base de datos en las cuales deseamos activar DevOps Guru.

Agente

Acá debemos dar click al botón ‘Turn on DevOps Guru for RDS’. Al hacerlo nos solicitará indicar los tags a efectos de monitorear el recurso. Es crucial que el tag key siempre inicie con “devops-guru” o de lo contrario el servicio no podría identificar correctamente los recursos.

Agente

Además AWS nos indicará el costo aproximada por recurso a monitorear por hora; en este caso es poco más de $3 mensuales. Es un proceso muy simple y rápido.

Detección de Anomalías

Una vez que tenemos el servicio activo el mismo comenzará a analizar nuestra carga de trabajo. Y si detecta una anomalía nos lo hará saber. Veamos por ejemplo este hallazgo

Agente

Notaremos que nos informa que hay una anomalía relacionada a rendimiento que esta presente y que es de alta severidad. Incluso nos presenta un link para ver más detalles en DevOps Guru.

Si vamos a ese link se nos presenta un resumen de la situación. Por ejemplo: que es una anomalía de severidad alta, que tuvo una duración de 1 hora y 11 minutos y que se genera por una carga más alta de habitual en la base de datos, y que probablemente tuvo un impacto en el rendimiento de nuestro aplicativo.

Además, en la gráfica se nos dice que fue un pico de 18 veces la carga típica de esa base de datos.

Agente

Inclusive podemos ir más allá y ver que nos indica el servicio en la parte de análisis y recomendaciones. Que como notamos nos indica que la carga se centro en el evento wait/io/table/sql/handler y demás nos da el detalle del comando de SQL asociado al hallazgo.

Agente

Resolución

Si damos un click nos lleva a Performance Insights en donde nos señala el detalle del comando de SQL involucrado con su respectiva gráfica para el análisis del DBA o el equipo de desarrollo.

Agente

Ya con todos los detalles previos el DBA se percató de la ausencia de un índice que era necesario para soportar una nueva funcionalidad lanzada justo antes de esta anomalía.

Conclusión

Todos estos datos que nos brinda DevOps Guru for RDS son invaluables cuando se tienen cargas productivas. La posibilidad de detectar anomalías sobre nuestras cargas de trabajo y ser capaces de resolverlas de una manera rápida apoyados en elementos de ML es increíble.

Como vimos no necesitamos ser expertos en ML para poder disfrutar del beneficio de este servicio a un precio que es muy atractivo al sopesar sus beneficios.

Espero que este artículo les haya sido de utilidad.