20 años de lecciones aprendidas en Site Reliability Engineering (SRE)
Lecciones de ingeniería de confiabilidad aprendidas en YouTube
-
Selección de medidas de mitigación de riesgos
- Cuando ocurre un error grave, se deben elegir medidas de mitigación proporcionales a la severidad del problema.
- Las medidas excesivas de mitigación pueden causar efectos secundarios, y solo deben usarse cuando haya una razón justificada para saltarse el procedimiento estándar.
-
Pruebas de mecanismos de recuperación para situaciones de emergencia
- Los mecanismos de recuperación y las medidas de mitigación deben practicarse y probarse con suficiente anticipación para poder responder de forma efectiva incluso en situaciones críticas.
- Las pruebas reducen riesgos futuros y mejoran la capacidad de respuesta.
-
Introducción gradual de cambios (aplicando pruebas canary)
- Antes de desplegar un cambio de forma completa, debe introducirse gradualmente para evitar que, si surge un problema, afecte a todo el sistema.
- A través del caso de cambios en la configuración de caché de YouTube, se reconoció que incluso un cambio pequeño requiere una introducción sistemática.
Lecciones aprendidas de Google Calendar
-
Importancia de una función de detención de emergencia
- Para cambios con riesgos potenciales, se necesita una función tipo "gran botón rojo" que permita responder rápidamente.
- También deben prepararse mecanismos de detención de emergencia considerando las dependencias del servicio.
-
Necesidad de pruebas de integración
- Las pruebas unitarias son útiles dentro de un alcance limitado, pero mediante pruebas de integración se debe verificar la idoneidad del sistema en conexión con el entorno real.
- A partir de un caso de error en Google Calendar, se reconoció la importancia de probar siguiendo las rutas reales de uso.
Lecciones de Google en 2017
-
Importancia de los canales de comunicación para emergencias
- Es necesario prepararse para contar con canales de comunicación y canales de respaldo.
- Ante una caída del servicio, se deben disponer varios medios de comunicación no dependientes entre sí y probar su efectividad.
-
Mantener funciones mínimas durante una degradación del rendimiento
- Para evitar que el servicio se detenga por completo, debe diseñarse de forma que pueda ofrecer funciones básicas incluso en estado degradado.
Pruebas sobre resiliencia ante desastres
- Pruebas de resiliencia y recuperación ante desastres
- Se debe probar la resiliencia de servicios o sistemas para asegurar su continuidad incluso en situaciones de desastre.
- Mediante pruebas de recuperación, se debe confirmar que el sistema puede volver a un estado normal después de una interrupción.
Importancia de las medidas de mitigación automatizadas
- Automatización de las medidas de mitigación
- En caso de fallas múltiples de red, en lugar de manejarlas manualmente, se debe reducir el tiempo de resolución mediante medidas de mitigación automatizadas.
Reducir el tiempo entre despliegues
-
Realizar rollouts frecuentes
- Los largos intervalos entre rollouts sirven para evaluar la seguridad del sistema.
-
Una sola versión global de hardware es un punto único de falla
- Depender de un solo modelo específico puede simplificar la operación, pero si ese modelo presenta problemas, la ejecución de funciones críticas puede interrumpirse.
- La existencia de diversos backbones de red ayuda a evitar una interrupción total y permite enrutar el tráfico de mayor prioridad hacia alternativas que sigan funcionando.
Aún no hay comentarios.