La ingeniería de confiabilidad del sitio ( SRE ) es un conjunto de principios y prácticas que aplican aspectos de la ingeniería de software a la infraestructura y las operaciones de TI . [1] La SRE tiene como objetivo crear sistemas de TI altamente confiables y escalables . Aunque están estrechamente relacionados, la SRE es ligeramente diferente de DevOps . [2] [3] [4]
El campo de la ingeniería de confiabilidad del sitio se originó en Google con Ben Treynor Sloss, [5] [6] quien fundó un equipo de confiabilidad del sitio después de unirse a la empresa en 2003. [7] Después de originarse en Google en 2003, el concepto se extendió a la industria de desarrollo de software más amplia, y otras empresas posteriormente comenzaron a emplear ingenieros de confiabilidad del sitio. [8] Para 2016, Google empleó a más de 1,000 ingenieros de confiabilidad del sitio. [9] Los equipos dedicados a SRE son comunes en las empresas web más grandes, sin embargo, no es raro encontrar un equipo de DevOps que cumple un doble propósito de SRE en algunas empresas medianas y muchas más pequeñas. [8] Las organizaciones que han adoptado el concepto incluyen Airbnb , Dropbox , IBM , [10] LinkedIn , [11] Netflix , [9] y Wikimedia . [12] Según un informe de 2021 del DevOps Institute, el 22% de los encuestados en una encuesta a 2.000 profesionales de TI de todo el mundo habían adoptado el modelo SRE en comparación con el 15% del año anterior. [13] [14]
La ingeniería de confiabilidad del sitio como función laboral puede ser realizada por colaboradores individuales u organizada en equipos, responsables de una combinación de lo siguiente dentro de una organización de ingeniería más amplia: disponibilidad del sistema , latencia , rendimiento , eficiencia, gestión de cambios , monitoreo , respuesta a emergencias y planificación de capacidad . [15] Los ingenieros de confiabilidad del sitio a menudo tienen antecedentes en ingeniería de software , ingeniería de sistemas o administración de sistemas . [16] Los enfoques de SRE incluyen automatización, diseño de sistemas y mejoras en la resiliencia del sistema . [16]
El conjunto de principios y prácticas de la ingeniería de confiabilidad de sitios puede ser realizado por cualquier persona. Aunque otros miembros del equipo deben implementar buenas prácticas, como en el caso de la ingeniería de seguridad , una empresa puede eventualmente contratar especialistas e ingenieros para el trabajo. [ cita requerida ]
SRE se considera una implementación específica de DevOps ; [17] SRE se centra específicamente en la construcción de sistemas confiables, mientras que DevOps cubre un alcance más amplio. [2] [3] [4] A pesar de tener diferentes enfoques, algunas empresas han cambiado el nombre de sus equipos de operaciones a equipos SRE con pocos cambios significativos. [8]
Se han realizado múltiples intentos de definir una lista canónica de principios de ingeniería de confiabilidad del sitio, pero si bien no hay consenso, las siguientes características generalmente se incluyen en la mayoría de las definiciones: [1] [18]
Las prácticas de ingeniería de confiabilidad del sitio también varían ampliamente, pero la lista a continuación se considera relativamente común como implementada al menos parcialmente:
Los equipos de SRE colaboran con otros departamentos dentro de las organizaciones para implementar los principios de manera eficaz. A continuación se presenta una descripción general de las prácticas comunes: [20]
Kitchen Sink se refiere al alcance expansivo y a menudo ilimitado de servicios y flujos de trabajo que supervisan los equipos de SRE. A diferencia de los roles tradicionales con límites claramente definidos, los SRE tienen varias responsabilidades, que incluyen todo, desde el diseño del sistema y la optimización del rendimiento hasta la gestión y automatización de incidentes. Este enfoque holístico permite a los SRE abordar muchos desafíos, asegurando que los sistemas funcionen de manera eficiente y evolucionen en respuesta a las demandas y complejidades cambiantes. Al adoptar esta perspectiva integral, los equipos de SRE pueden fomentar una cultura de mejora continua y resiliencia, mejorando en última instancia la confiabilidad general de los servicios.
Los equipos de SRE de infraestructura se centran en mantener y mejorar la confiabilidad de los sistemas clave que respaldan los flujos de trabajo de otros equipos. Si bien a veces colaboran con los equipos de ingeniería de plataformas, su principal responsabilidad es garantizar el tiempo de actividad, el rendimiento y la eficiencia. Los equipos de plataformas, por otro lado, desarrollan principalmente el software y los sistemas que se utilizan en toda la organización. Si bien la confiabilidad es un objetivo para ambos, los equipos de plataformas priorizan la creación y el mantenimiento de las herramientas y los servicios que utilizan las partes interesadas internas, mientras que los equipos de SRE de infraestructura tienen la tarea de garantizar que esos sistemas funcionen sin problemas y cumplan con los estándares de confiabilidad.
Los equipos utilizan una variedad de herramientas para medir, mantener y mejorar la confiabilidad del sistema. Estas herramientas desempeñan un papel crucial en la supervisión del rendimiento, la identificación de problemas y la facilitación del mantenimiento proactivo. Por ejemplo, Nagios Core se utiliza ampliamente para la supervisión y alerta del sistema, mientras que Prometheus (software) es popular para recopilar y consultar métricas en entornos nativos de la nube. Al aprovechar estas herramientas, los equipos de SRE pueden garantizar un rendimiento óptimo y responder rápidamente a posibles desafíos de confiabilidad.
Los equipos de SRE dedicados a productos o aplicaciones específicos son comunes en las grandes organizaciones. Estos equipos son responsables de garantizar la confiabilidad, la escalabilidad y el rendimiento de los servicios clave. En las empresas más grandes, es habitual tener varios equipos de SRE, cada uno de ellos centrado en diferentes productos o aplicaciones, lo que garantiza que cada área reciba atención especializada para cumplir con los objetivos de rendimiento y disponibilidad.
En un modelo integrado, los SRE individuales o pequeños pares de SRE se integran directamente en los equipos de ingeniería de software. Estos SRE trabajan en estrecha colaboración con los desarrolladores y aplican principios básicos de SRE, como la automatización, la supervisión y la respuesta a incidentes, directamente al ciclo de vida del desarrollo de software. Este enfoque ayuda a mejorar la confiabilidad y el rendimiento, al tiempo que fomenta la colaboración entre los SRE y los desarrolladores.
Los equipos de consultoría de SRE se especializan en asesorar a las organizaciones sobre la implementación de los principios y prácticas de SRE. Estos equipos, que suelen estar compuestos por SRE experimentados con amplia experiencia en diversas implementaciones, brindan información valiosa y orientación adaptada a las necesidades específicas de la organización. Cuando trabajan directamente con los clientes, a estos SRE se los suele denominar "ingenieros de confiabilidad del cliente".
En las grandes organizaciones que han adoptado la SRE, es común un modelo híbrido. Este modelo incluye varias implementaciones, como varios equipos de SRE de productos y aplicaciones dedicados a abordar las necesidades de confiabilidad únicas de diferentes productos. Un equipo de SRE de infraestructura puede colaborar con un grupo de ingeniería de plataforma para lograr objetivos de confiabilidad compartidos para una plataforma unificada que admita todos los productos y aplicaciones.
Desde 2014, la organización USENIX ha organizado la conferencia anual SREcon, que reúne a ingenieros de confiabilidad de sitios de diversas industrias. Esta conferencia sirve como plataforma para que los profesionales compartan conocimientos, exploren las mejores prácticas y discutan las últimas tendencias en ingeniería de confiabilidad de sitios. [21]
{{cite book}}
: CS1 maint: varios nombres: lista de autores ( enlace )