La ingeniería de fiabilidad del sitio (SRE) es una disciplina que se utiliza para crear sistemas de software ultraescalables y fiables mediante la aplicación de prácticas de ingeniería de software a problemas de infraestructura y operaciones. Los ingenieros de fiabilidad del sitio de expertos pueden diseñar soluciones que mantengan el equilibrio entre los equipos de desarrollo y operaciones. Google fue pionero en este puesto; para ver una explicación detallada, lee el libro electrónico de Google, «Site Reliability Engineering» (en inglés).
Los ingenieros de fiabilidad del sitio (SRE) trabajan entre el desarrollo y las operaciones, pero no necesariamente dentro de DevOps propiamente dicho. El concepto de SRE existe desde 2003, lo que significa que es más antiguo que DevOps. Ben Treynor, quien creó el equipo de fiabilidad del sitio de Google, popularizó el término. Según Treynor, SRE es «lo que sucede cuando un ingeniero de software se encarga de lo que antes se llamaba operaciones».
El objetivo de ambas disciplinas, DevOps y SRE, es mejorar el ciclo de lanzamiento ayudando al equipo de desarrollo a entender los procesos del equipo de operaciones, y viceversa, a lo largo del ciclo de vida de la aplicación. También abogan por la automatización y la supervisión, lo que contribuye a reducir el tiempo que transcurre desde que un desarrollador establece un cambio hasta que se aplica en la producción. La finalidad de SRE y DevOps es obtener este resultado sin comprometer la calidad del código ni del producto en sí.
SRE y DevOps plantean dos preguntas diferentes, pero igualmente valiosas:
DevOps pregunta qué hay que hacer.
La SRE pregunta cómo se puede hacer eso.
Los ingenieros de fiabilidad del sitio miden los indicadores de nivel de servicio (SLI) y los objetivos de nivel de servicio (SLO), mientras que los equipos de DevOps miden la tasa de fallo más la tasa de éxito a lo largo del tiempo. Los SRE comparten responsabilidades relacionadas con los siguientes pilares de DevOps de mejora de la infraestructura:
Los SRE no analizan cuántos silos existen en la empresa, sino que animan a todo el mundo a abordar este tema. Este debate se logra usando las herramientas y técnicas en toda la compañía, ayudando así a distribuir la propiedad entre todos los empleados.
Los SRE deben asegurarse de que no haya demasiados errores o fallos. Para ello, utilizan una fórmula compuesta de puntuaciones de SLI y SLO. Los SLI cuentan los fallos por solicitud calculando la latencia de las solicitudes, el rendimiento de las solicitudes por segundo o los fallos por solicitud por tiempo. Los SLO se obtienen del umbral y el porcentaje, y representan el éxito de los SLI en un período determinado.
A los SRE les motivan los cambios, pero si se realizan de forma lenta y metódica. Debido a que las empresas quieren avanzar más rápido, exigen lanzamientos frecuentes que mantengan el producto continuamente actualizado. Por eso, los responsables de DevOps y de SRE deben responder con rapidez pero seguir un ritmo constante y controlado.
Automatiza siempre que ofrezca valor a los equipos de desarrollo y operaciones eliminando las tareas manuales.
Los equipos de SRE necesitan saber que todo avanza en la dirección correcta. Esto se puede lograr configurando alertas para diferentes escenarios, adoptando la revisión de código por pares o utilizando pruebas de unidad.
La ingeniería de fiabilidad del sitio (SRE) y DevOps son dos disciplinas en tendencia que se superponen bastante; sus objetivos básicos son comprender cómo se mide el éxito o el fallo y cómo conseguir una fiabilidad continua en todas las aplicaciones. La fiabilidad no se centra solo en la infraestructura, sino que es relevante en cada paso del proceso, desde la calidad de las aplicaciones hasta el rendimiento y la seguridad. Los SRE ser ocupan de todos los procesos, desde el código fuente hasta la implementación; así se ganan la reputación de ser un verdadero puente entre el desarrollo y las operaciones.