Site Reliability Engineering (SRE): Mejores Prácticas y Estrategias

Introducción a Site Reliability Engineering (SRE)

En el post de nuestro blog Monitorización de sistemas distribuidos: las cuatro señales doradas, habíamos mencionado el libro de Google Site Reliability Engineering: How Google Runs Production Systems, donde Site Reliability Engineering (SER o ingeniería de confiabilidad del sitio) se define como una disciplina utilizada por los equipos de TI y de ingeniería de software para crear y mantener servicios más confiables de manera proactiva. Su origen parte de que Google experimentó (al inicio de los años 2000) un crecimiento sin precedente y su consecuencia: la necesidad de confiabilidad en disponibilidad, rendimiento y confianza. Desde 2003, Google extendió el concepto de SER hacia la industria de desarrollo de software, buscando compaginar las funciones de dos equipos: el de operaciones y el de desarrollo de software para trabajar en forma coordinada, buscando la automatización de tareas repetitivas en operaciones, el uso de herramientas desarrolladas para monitorización y procesos automatizados para gestión de cambios, análisis y resolución de incidentes. Desde entonces, otras empresas comenzaron a adoptar el mismo modelo y a emplear ingenieros de confiabilidad de sitios. Actualmente la posición de SRE se ha vuelto más común en las grandes organizaciones: según un informe del Instituto DevOps en 2021, basado en una encuesta de 2000 ejecutivos, 22% de las organizaciones ya han adoptado el modelo SER, con sus principios y mejores prácticas.

Principios Fundamentales de SRE

SRE como tal puede ser llevada a cabo por una persona o un grupo de colaboradores, quienes deben asegurar y vigilar la disponibilidad del sistema, la latencia y el rendimiento óptimo, la eficiencia, la gestión de cambios y monitorización, así como también la respuesta a emergencias y la planificación de la capacidad. Su objetivo: mejorar la experiencia de los usuarios y reducir costos operativos de TI. Sus principios son:

  • Evaluación de riesgos: Consiste en un entendimiento claro sobre el riesgo de fallos inesperados, lo que resulta fundamental para mejorar la confiabilidad del sistema.
  • Objetivos de nivel de servicio (SLO, Service Level Objective[OD1] ): Los SLO ayudan a definir objetivos para lograr la fiabilidad del sistema, como el tiempo de actividad. Se proporcionan puntos de referencia para que los equipos de ingeniería los cumplan para poder brindar servicios confiables.
  • Eliminación del trabajo duro: Se refiere a eliminar el trabajo manual para mantener un servicio en funcionamiento. Los SRE tienen como objetivo automatizar tareas repetitivas, liberando tiempo para destinarlos a actividades más críticas. Se busca equilibrar la automatización y la fiabilidad.
  • Monitorización de sistemas distribuidos: Implica analizar datos del sistema para identificar cuellos de botella, anomalías y problemas de rendimiento. La SRE utiliza herramientas de seguimiento para abordar los problemas de forma proactiva.
  • Respuesta a incidentes: La SRE sigue procesos de respuesta a incidentes bien definidos. Se aprende de los incidentes, se realizan autopsias y se mejora continuamente la resiliencia del sistema.
  • Planificación de capacidad: La SRE pronostica las necesidades de recursos basándose en datos históricos y el crecimiento esperado. Una planificación adecuada de la capacidad garantiza que los sistemas puedan soportar cargas máximas sin que exista una degradación en el rendimiento.
  • Respuesta a Emergencias: La SRE está preparada para emergencias y realiza prácticas sobre escenarios de recuperación ante desastres; se mantienen guías de procedimiento y se responde rápidamente a incidentes críticos.

Acorta la distancia entre los datos informáticos y el valor empresarial con Pandora FMS

La solución de monitorización total para una completa observabilidad

Roles y Responsabilidades de un Ingeniero de SRE

Los individuos o equipos de SRE recopilan y analizan métricas, registros y seguimientos para obtener una comprensión más profunda del rendimiento de sus sistemas. Los roles y responsabilidades en la ingeniería de SRE pueden ser:

  • Ingeniero de SRE: Son responsables de las operaciones diarias del equipo de SRE, como la monitorización, la gestión y respuesta a incidentes y la automatización.
  • Gerente de SRE: Supervisan al equipo de SRE y establecen metas, desarrollan procesos y garantizan que el equipo cumpla sus objetivos.
  • Arquitecto SRE: Diseñan e implementan nuevos sistemas y procesos para el equipo de SRE, además de garantizar que el trabajo del equipo esté alineado con los objetivos generales de la organización.
  • Desarrollador de SRE: Escriben el código para automatizar tareas, mejorar la fiabilidad y agregar nuevas funciones a los sistemas del equipo de SRE.
  • Ingeniero de herramientas SRE: Desarrollan y mantienen las herramientas que el equipo de SRE utiliza para realizar su trabajo. Esta función puede ser desempeñada por un ingeniero SRE en organizaciones más pequeñas.

Desde luego, estos roles dependen de las necesidades de la organización, buscando siempre mantener la fiabilidad de los sistemas de la organización.

Mejores Prácticas de SRE

Llevar cabo las mejores prácticas permite alcanzar mejores niveles de satisfacción de los usuarios mediante una colaboración entre los equipos de desarrollo y de operaciones de TI, con mejoras continuas:

  • Apóyate en la automatización para desligarte de tareas repetitivas que consumen mucho tiempo.
  • Asegúrate de usar las mismas herramientas para automatizar y mejorar las operaciones que utilizan los desarrolladores en el desarrollo y mejoras en software.
  • Realiza análisis y mediciones poniéndote en el lugar del usuario, apoyándote incluso en las cuatro señales doradas.
  • Diseña, implementa y ajusta los objetivos de nivel de servicio (SLO) y los indicadores de nivel de servicio (SLI), apoyándote en una única plataforma de observabilidad para reducir la profusión de herramientas y poder observar y administrar de manera unificada.
  • Asigna presupuestos de errores para implementar continuamente nuevas características y funcionalidades dentro de niveles aceptables de riesgo.

También, se recomienda la gestión de incidentes con procesos claros de qué hacer, a quién corresponde, cómo escalar un incidente, además de implementar un análisis retrospectivo (postmortem) después de que haya ocurrido un incidente o interrupción en un sistema.

Estrategias para la Implementación de SRE

Se recomienda lo siguiente para poder implementar SRE de manera efectiva:

  • Comienza con una prueba de concepto, y de manera iterativa. Será esencial elegir herramientas y aplicaciones adecuadas para llevar a cabo las pruebas de concepto, brindando los datos y métricas sobre comportamiento. También, la aplicación debe permitirte realizar cambios en la ingeniería en ella, según sea necesario.
  • Desarrolla una cultura de fiabilidad y mejora continua, reforzando al equipo con capacitación para el perfeccionamiento de las habilidades internas, el enfoque en la priorización y la creación de una comunidad de aprendizaje. Es posible que se requiera capacitación adicional para los líderes sobre conceptos y prácticas culturales en la organización. Se debe tener claro los conceptos de SLO y SLI, ya que medir si los sistemas cumplen con las expectativas exige un cambio de mentalidad centrada en la experiencia del usuario.
  • Crea tu comunidad de SRE y procesos formalizados en la organización. Construir una comunidad de SRE en la organización es importante para el aprendizaje, pero también para contar con una base de conocimientos sobre prácticas recomendadas, con mecanismos de seguridad y procesos alineados. Hay que asegurarse de que no se pierda el conocimiento al paso del tiempo. También es importante aceptar el fracaso de manera que el equipo aprenda de los errores. Procura apoyarte en herramientas de monitorización que eviten la fatiga de alertas, mejorando la experiencia de tu equipo de TI. También incluye a tus proveedores y socios de ingeniería, para asegurarte de que tus contratos de niveles de servicio también reflejen los mismos objetivos.
  • Fomenta la mentalidad basada en datos. Se recomienda la recopilación de datos y el análisis retrospectivo libre de responsabilidad para que cada miembro del equipo se sienta libre de compartir su experiencia. Se debe emprender el análisis retrospectivo para aprender de los errores, incluyendo elementos de acción y la asignación de un propietario.
  • Ten siempre en mente que SRE es una metodología que se está implementando como un conjunto estandarizado de prácticas de ingeniería para equilibrar la velocidad del desarrollo de funciones con los riesgos de confiabilidad operativa. En tanto que DevOps abarca la colaboración entre equipos de desarrollo y operaciones para agilizar el desarrollo, las pruebas y la entrega de software. Su objetivo es acortar los ciclos de desarrollo y entrega, lo que está en consonancia con las prácticas de SRE. Por ello, DevOps y SRE no compiten por metodologías, sino que se complementan y deben integrarse para:
    • Reducir el aislamiento organizativo, en que cada equipo trabaja de forma aislada.
    • Crear el entorno adecuado de cambio gradual y constante.
    • Aceptar el fracaso y las iteraciones como una práctica habitual.
    • Usar las herramientas de automatización en beneficio de los equipos de TI y desarrollo.
    • Recopilar y disponer de métricas fiables y precisas.
    • Mejorar la respuesta ante crisis.

En Pandora FMS te ofrecemos constante evolución TI para mantenerte siempre a la vanguardia

Aseguramos operaciones ininterrumpidas, seguridad inquebrantable

Herramientas Esenciales para SRE

La automatización ayuda a reducir la carga operativa y mejorar la eficiencia y la gestión de configuraciones permiten a los equipos de SRE responder de forma rápida y efectiva a eventos inesperados. Se recomienda apoyarse en herramientas de:

  • Monitorización y Observabilidad: Estas herramientas proporcionan visibilidad en tiempo real sobre el rendimiento y la salud de los sistemas para prevenir o detectar problemas de manera inmediata y tomar medidas correctivas. Cabe destacar que la observabilidad permite a los equipos de ingeniería de fiabilidad comprender y gestionar eficazmente el estado interno de los sistemas.
  • Automatización y Orquestación: Estas herramientas contribuyen a reducir la carga y el estrés operativo, mejorando la eficiencia y experiencia para el equipo de SRE, en tanto que las herramientas de gestión de incidentes permiten responder de manera rápida y efectiva a eventos inesperados, con una clara definición de cursos de acción y escalamiento.
  • Gestión de Configuraciones y Despliegues: Estas herramientas contribuyen a que las aplicaciones se entreguen de forma segura, confiable y eficiente, dando también los elementos para una adecuada planificación, coordinación y ejecución de las capacidades de los sistemas, además de apoyar al enfoque proactivo que se desea lograr con SRE.

Desafíos Comunes en la Implementación de SRE y Cómo Superarlos

Cualquier ingeniero de SRE se enfrenta a desafíos que pueden ser superados con las herramientas adecuadas:

  • Complejidad en la monitorización y el exceso de alertas: Se debe seleccionar herramientas completas y robustas para monitorizar y configurar las métricas correctas para monitorizar los servidores y las aplicaciones.
  • Mantener la confiabilidad de la infraestructura y las aplicaciones: Se debe contar con las herramientas de monitorización y datos que permitan analizar y cumplir con las expectativas sobre los niveles de servicio.
  • Dificultad para gestionar los incidentes: Hay que hacerse con herramientas que permitan detectar incidencias y realizar el análisis de causa raíz[OD2] . También se debe mantener los registros de las incidencias, junto con la definición de políticas y procedimientos de gestión de incidencias para resolver inmediatamente, sin vulnerar los niveles de servicio.
  • Falta de priorización de tickets: Es de suma importancia priorizar tickets en función del impacto en la experiencia del usuario. También, es posible apoyarse en la automatización para tareas manuales repetitivas o disparar procesos de resolución que no requieran intervención humana para así poder concentrar esfuerzos en incidentes o procesos más críticos.

Desde luego, es fundamental que estas herramientas se apoyen en la comunicación y las actualizaciones periódicas de los recursos de monitorización y gestión de desempeño, además de fomentar la apertura para compartir constantemente la verdad sobre los incidentes.

El Futuro de SRE: Tendencias y Evoluciones

Aunque en un principio la práctica SRE fue adoptada solo por empresas de gran envergadura, se prevé que las empresas de menor tamaño también la adopten. También se prevé que la automatización y la Inteligencia Artificial se vayan integrando de forma generalizada a esta práctica, especialmente por el tamaño reducido del personal dedicado a la seguridad de TI y la necesidad de mejorar su ejecución y experiencia en su labor diaria de asegurar el funcionamiento de los sistemas y la mejor experiencia de los usuarios.

Otro aspecto importante es la nube: las organizaciones siguen buscando agilidad, escalabilidad y eficiencia en costos de infraestructura, por lo que persiste la tendencia a adoptar tecnologías nativas de la nube. Por ejemplo, los contenedores y los microservicios han revolucionado la forma en que se desarrollan, implementan y administran las aplicaciones; y los desarrolladores se centran en escribir código sin tener que administrar la infraestructura subyacente. Todo esto crea una suma de desafíos permanentes ahora y en un futuro: la creciente complejidad de arquitecturas nativas de la nube, la necesidad de soportar una gama más amplia de cargas de trabajo y la necesidad de ser más ágiles y receptivos al cambio. En este escenario, las tendencias de SRE en un futuro serán:

  • Foco en la automatización: Cada vez más se usará la automatización para reducir el trabajo y liberar a los ingenieros su tiempo y esfuerzos para que puedan centrarse en labores más estratégicas.
  • Foco en la observabilidad: Adopción de herramientas de observabilidad para obtener conocimientos profundos sobre el comportamiento de sus sistemas para identificar y solucionar problemas más rápidamente.
  • Foco en la seguridad: Tendencia a un enfoque más proactivo en materia de seguridad. Se incorpora la seguridad en el ciclo de vida del desarrollo y se busca garantizar que los sistemas sean resistentes a los ataques.
  • Foco en la colaboración: Los equipos de SRE colaboran más estrechamente con otros equipos, como los de desarrollo, seguridad y gestión de productos. Se buscará la confiabilidad desde las primeras etapas del proceso de desarrollo.

Descubre cuál es la mejor opción para tus necesidades de monitoreo

Interesantes historias contadas por nuestros clientes y socios

Conclusión

Como hemos visto, SRE surgió por la necesidad de Google de administrar infraestructuras masivas y más distribuidas, al mismo tiempo que buscaba satisfacer las expectativas cada vez mayores de los usuarios en cuanto a rendimiento y disponibilidad. Esas mismas necesidades han hecho que las empresas de cualquier industria y tamaño hayan adoptado las prácticas SRE. También ha quedado claro que DevOps y SRE se complementan y garantizan una excelente experiencia de usuario y el desempeño óptimo de los sistemas. Desde luego, se requieren herramientas y plataformas robustas e inteligentes de monitorización que den todos los elementos de valor (datos, análisis, observabilidad y automatización) para implementar las cuatro señales doradas en la supervisión de sistemas (latencia, tráfico, errores y saturación) y prepararse para las tendencias de SRE de hoy y en un futuro: automatización, observabilidad, seguridad y colaboración.

Obtén tu versión trial de Pandora FMS. ¡Una solución completa!

Conoce en detalle todas las capacidades de Pandora FMS

¿Dudas? Respondemos a las preguntas más frecuentes sobre Pandora FMS

Precios transparentes, inversión con resultados potentes