Automatización para reducir toil

La Solución al Toil

En el capítulo anterior, identificamos el “Toil” como el trabajo manual y repetitivo que frena a los equipos de ingeniería. La principal herramienta de un SRE para combatir el Toil es la automatización.

El objetivo no es solo escribir un script para una tarea, sino construir un sistema que elimine la necesidad de intervención humana por completo. La regla de oro es: si tienes que hacer algo más de dos veces, automatízalo.

Un Ejemplo Práctico: Limpieza de Logs

Imaginemos una tarea de Toil muy común: un servicio llena el disco con ficheros de log, lo que dispara una alerta. Un ingeniero tiene que conectarse al servidor, encontrar los ficheros antiguos y borrarlos a mano.

  • Manual: Sí.
  • Repetitivo: Sí, ocurrirá cada vez que el disco se llene.
  • Automatizable: Absolutamente.
  • Táctico: Sí, es una reacción a una alerta.
  • Sin valor a largo plazo: Borrar los ficheros no evita que el problema vuelva a ocurrir.

Vamos a automatizar esto con un simple script de Bash.

Versión 1: Un Script Simple

Podríamos crear un script clean_logs.sh que se ejecute manualmente.

#!/bin/bash

LOG_DIR="/var/log/mi-servicio"
DAYS_TO_KEEP=7

# Comprueba si el directorio de logs existe
if [ ! -d "$LOG_DIR" ]; then
  echo "El directorio $LOG_DIR no existe."
  exit 1
fi

echo "Borrando logs de más de $DAYS_TO_KEEP días en $LOG_DIR..."

# Busca y borra los ficheros .log con más de DAYS_TO_KEEP días de antigüedad
find "$LOG_DIR" -name "*.log" -type f -mtime +"$DAYS_TO_KEEP" -delete

echo "Limpieza completada."

Esto ya es una mejora, pero sigue requiriendo que un humano ejecute el script.

Versión 2: Automatización con Cron

El siguiente paso es hacer que este script se ejecute automáticamente. Podemos usar cron, el planificador de tareas de Linux. Editamos el crontab del sistema (sudo crontab -e) y añadimos una línea para que el script se ejecute todos los días a las 3:00 AM.

0 3 * * * /usr/local/bin/clean_logs.sh > /dev/null 2>&1

Ahora la limpieza es automática. Hemos eliminado el Toil por completo.

Más Allá de los Scripts: Plataformas de Automatización

Para problemas más complejos, los SREs utilizan herramientas más potentes:

  • Infraestructura como Código (IaC): Herramientas como Terraform o Ansible permiten definir y gestionar toda la infraestructura (servidores, redes, balanceadores) mediante código. Esto elimina el Toil de crear o modificar recursos manualmente.
  • Integración y Despliegue Continuo (CI/CD): Plataformas como Jenkins, GitLab CI o GitHub Actions automatizan el proceso de compilación, testing y despliegue de código, eliminando uno de los mayores focos de Toil y riesgo.
  • Auto-remediación: El siguiente nivel de automatización. Un sistema de monitorización (como Prometheus + Alertmanager) no solo envía una alerta, sino que dispara una acción automática (un “webhook”) que ejecuta una solución. Por ejemplo, una alerta de “servicio no responde” podría triggerear un script que reinicia el servicio automáticamente.

Conclusión

La automatización es el núcleo del trabajo de un SRE. Cada hora invertida en automatizar una tarea de Toil es una hora que se recupera en el futuro para dedicarla a proyectos de ingeniería que aportan valor real y duradero al servicio. La mentalidad SRE es la de un “ingeniero perezoso”: busca la forma más inteligente de no tener que volver a hacer el mismo trabajo nunca más.