Construir una aplicación y ponerla en producción no es suficiente. Si no estás midiendo lo que ocurre con tus recursos, no vas a poder corregir errores ni garantizar que tus usuarios tengan una experiencia confiable. Dentro de Google Cloud Platform existe una familia completa de herramientas de supervisión que, combinadas con una filosofía de trabajo sólida, permiten construir productos verdaderamente confiables.
¿Por qué la supervisión de recursos es fundamental?
Imagina que tu aplicación está funcionando, distribuida en varias zonas continentales, integrada con un balanceador de cargas y reglas de firewall. Todo parece estar bien, pero un usuario entra y ve un error. ¿Tienes algún mecanismo para enterarte de eso? ¿Estás midiendo la latencia o los mensajes en los logs que podrían anticipar una falla? [1:06]
Como desarrolladores, deberíamos dejar de pensar solamente en escribir código y empezar a pensar en que estamos construyendo productos y soluciones. Lo que ponemos en funcionamiento necesita ser usado de manera confiable. No basta con decir que es escalable o elástico; tiene que hacer lo que los usuarios esperan, cada vez que lo necesiten [1:40].
¿Qué es SRE y cómo se relaciona con DevOps?
Site Reliability Engineering (SRE) es la manera en la que Google implementa DevOps, orientándolo fuertemente hacia la confiabilidad de los productos [2:18]. Si usas Gmail, Drive, Maps o el buscador de Google, sabes que la posibilidad de recibir un error es realmente reducida. Eso ocurre porque todos esos productos están construidos bajo esta filosofía, basada en métricas que permiten saber qué tan bien se comportan las aplicaciones, cuándo puede ocurrir un error y cómo aprender de él.
Tres elementos centrales de SRE son:
- SLI (Service Level Indicator): valor interno que mide la confiabilidad, por ejemplo, la relación entre solicitudes recibidas y solicitudes respondidas correctamente con un código 200 [3:24].
- SLO (Service Level Objective): el objetivo interno que defines a partir del SLI, como responder correctamente el 95% de las veces [3:55].
- SLA (Service Level Agreement): el acuerdo o promesa de valor que le das al usuario, con un margen de maniobra respecto al SLO, por ejemplo, garantizar el 90% de disponibilidad [4:08].
¿Por qué el SLA debe ser menor que el SLO?
Necesitas un margen de operación. Si tu aplicación funciona el 95% de las veces pero ocurre una degradación inesperada que toma más tiempo resolver, ya no podrás cumplirle al cliente ese 95%. Al establecer el SLA en 90%, te das espacio para manejar incidentes sin romper tu compromiso [4:30]. Los valores exactos deben responder a tu arquitectura, tu capacidad operativa y las necesidades reales de tus clientes.
¿Cómo se estructura la pirámide de confiabilidad de SRE?
Esta pirámide guía la forma en que debemos trabajar alrededor de nuestros productos [5:20]:
- Monitoring: lo que no se supervisa, no se puede corregir.
- Alertas: mecanismos para enterarte cuando algo falla.
- Respuesta ante incidentes: procedimientos para actuar cuando detectas una falla.
- Post mortem: análisis de causas raíz sin señalar personas, sino entendiendo por qué ocurrió el error y cómo prevenirlo.
- Pruebas y releases consistentes: hacer los lanzamientos cada vez menos riesgosos.
- Plan de capacidad: asegurar que nunca te quedes sin recursos para entregar la solución que tu cliente necesita.
- Mejores prácticas de desarrollo: la base para un producto confiable.
Estas prácticas no se resuelven solo con herramientas. Si no las adoptas culturalmente, aunque tengas la mejor tecnología, seguirás teniendo productos poco confiables [6:20]. Google ofrece dos libros gratuitos sobre SRE que documentan cómo concibieron esta filosofía y casos de éxito de sus clientes.
¿Qué herramientas ofrece Stackdriver para supervisión?
Stackdriver es la familia de servicios dentro de Google Cloud Platform que permite poner en práctica la supervisión [7:07]. Sus componentes principales son:
- Logging: proporciona métricas predefinidas y permite crear métricas personalizadas a partir de los registros.
- Monitoring: ofrece métricas predefinidas con la posibilidad de personalizarlas según tus necesidades.
- Tracing: permite entender la latencia de los servicios expuestos en Google Cloud [7:28].
- Debugging: permite hacer depuración en vivo, tomando una copia en memoria de los valores que tenía la aplicación al momento de la interrupción [7:38].
- Profiling: analiza el código para identificar cuellos de botella, los bloques donde más se está tardando la ejecución [7:52].
- Error Reporting: consolida todos los errores que ocurren en el contexto de tu proyecto, permitiendo asignar tareas, silenciar mensajes o priorizar según la relevancia [8:04].
Cada una de estas herramientas aporta los números y la visibilidad necesarios para tomar decisiones informadas sobre la salud de tus aplicaciones. ¿Ya estás midiendo la confiabilidad de tus servicios en la nube? Comparte tu experiencia aplicando SRE o Stackdriver en tus proyectos.