SRE vs. DevOps: diferencias y similitudes

Emiliano Pardo Saguier febrero 21, 2023
- 5 min read

Las organizaciones trabajan constantemente para adoptar nuevos marcos o frameworks y metodologías para que el software sea más escalable. Lo deben hacer de una manera confiable para que no cause problemas. La Ingeniería de Fiabilidad del Sitio o Site Reliability Engineering (SRE) es un conjunto de prácticas introducidas por un experto de Google para facilitar esta tarea. Pero, ¿cuál es la diferencia entre SRE y DevOps

Ambos mejoran el ciclo de desarrollo de software y lanzamiento de productos. Y lo ejecutan de forma similar: mediante la colaboración, la automatización y la mejora del monitoreo y la eliminación de fallos. En concreto, aprovechan lo mejor que aporta la automatización para impulsar a los equipos a colaborar y reducir las situaciones de aislamiento organizativo -cuando la mano izquierda no sabe lo que está haciendo la derecha-. 

Sin embargo, existen puntos muy distintos en la forma en que las dos prácticas funcionan y en qué ofrecen. Eso implica que tu, gerente exigente, debes saber cuándo necesitas un ingeniero de Fiabilidad del Sitio, un especialista en DevOps, o ambos. 

En este artículo, profundizaremos sobre SRE vs. DevOps: sus propósitos, qué hacen mejor y en qué difieren, entre otros aspectos. Además, veremos si pueden funcionar de forma sinérgica o si constituyen mundos separados que nunca se cruzarán. 

Comencemos con DevOps y qué es capaz de aportar a tu organización. 

Conceptos básicos de DevOps

DevOps no sólo es un conjunto de prácticas, sino una cultura creada para acelerar un software fiable, estable y seguro. Con esta intención fue creado, combinando lo mejor del desarrollo ágil con la gestión de servicios empresariales o Enterprise Service Management (ESM). 

A su vez, DevOps intenta evitar el aislamiento organizativo o, en otras palabras, que los equipos trabajen en grupos separados, sin interactuar entre sí. 

En ese sentido, los desarrolladores y los equipos IT colaboran con los de DevOps a lo largo del ciclo de vida del producto, desde su concepción hasta su eliminación. El objetivo es mejorar la eficacia y la calidad del proceso de desarrollo y despliegue.

Así que, en esencia, DevOps aumenta la comunicación entre los equipos, acelerando las fases de desarrollo de software. 

Todo esto redunda en una prestación de servicios más fiable, índices de satisfacción del cliente mejorados y en un software más estable en la instancia de lanzamiento. 

Pasemos ahora a la SRE.

¿Qué es la Ingeniería de Fiabilidad del Sitio?

La Ingeniería de Fiabilidad del Sitio es un enfoque único del ciclo de vida de las aplicaciones y la gestión de servicios. Para ello, aprovecha una serie de aspectos tanto del desarrollo de software como de las operaciones IT. 

Nació en 2003 en Google de manos de Ben Treynor Sloss quien inventó el término y se lo considera el primer ingeniero de Fiabilidad del Sitio. La idea era crear una arquitectura de infraestructura IT adaptada a las crecientes exigencias de escalabilidad de los sistemas empresariales. 

¿Qué hace la SRE? Atomiza la infraestructura en componentes esenciales que hacen más manejable el despliegue de las mejores prácticas de desarrollo de software. A su vez, esto facilita el uso de herramientas de automatización por parte de los equipos para resolver la mayoría de los problemas cotidianos en la cadena de producción. 

En concreto, el ingeniero SRE es responsable de garantizar un flujo de colaboración sin fisuras entre las operaciones IT y los equipos de desarrollo de software, centrándose en mejorar y automatizar los procesos. 

¿Qué son las herramientas SRE? 

Los equipos SRE dependen en gran medida de la automatización de los procesos "cotidianos". Para ello, utilizan herramientas y técnicas del manual propio que estandarizan las operaciones a lo largo del ciclo de vida del software. 

A diferencia de las herramientas DevOps, los equipos SRE utilizan lo siguiente: 

  • Contenedores (aplicaciones de paquetes que operan en un entorno unificado a través de varias plataformas de despliegue que permiten el desarrollo solo en la nube). 
  • Kubernetes (un organizador de contenedores que puede gestionar aplicaciones que se ejecutan en varios entornos).
  • Plataformas en la nube (para suministrar aplicaciones flexibles, escalables y fiables en entornos distribuidos). 
  • Herramientas de planificación y gestión de proyectos (Jira y Pivotal Tracker permiten realizar un seguimiento de las operaciones IT en equipos distribuidos). 
  • Subversion y GitHub (herramientas de control de código fuente que permiten una colaboración fluida entre desarrolladores y operadores, salvando las distancias entre ambos y abriendo nuevas vías que aumentan la velocidad de desarrollo y despliegue de software). 

¿Cuáles son las diferencias entre SRE vs. DevOps?

DevOps y SRE garantizan que los equipos de desarrollo y operaciones se comuniquen para trabajar como parte de lo mismo. 

Sin embargo, DevOps es un enfoque orientado más a un cambio cultural para lograr una mayor comunicación, mientras que SRE constituye un conjunto de prácticas pragmáticas. 

Veamos las principales diferencias entre SRE vs. DevOps:

  • El enfoque SRE es más acotado que el de DevOps: el primero utiliza un conjunto de prácticas y métricas que aumentan la colaboración y la prestación de servicios. Mientras que el segundo representa una filosofía que impulsa una mentalidad de colaboración entre equipos que, de otro modo, estarían separados. 
  • Ambos tienen el mismo objetivo: SRE implica una forma más autoritaria y práctica de lograr el objetivo, mientras que DevOps es más una plantilla abierta para la colaboración. 
  • Tareas: la Ingeniería de Fiabilidad del Sitio se centra en mejorar la disponibilidad y fiabilidad del sistema. Por su parte, DevOps acelera el desarrollo y la entrega al tiempo que garantiza que el proceso de mejora/entrega constante permanezca activo. 
  • Estructura del equipo: SRE se compone principalmente de ingenieros de Fiabilidad del Sitio con una experiencia compartida en operaciones y desarrollo. Por el contrario, quienes trabajan en DevOps tienen funciones más variadas, aunque un ingeniero DevOps también posee experiencia en operaciones y desarrollo. 

¿Qué relación hay entre SRE y DevOps?

SRE y DevOps no son metodologías opuestas, sino sinérgicas que pueden beneficiarse mutuamente. Muchas prácticas de la primera aportan soluciones a inquietudes de DevOps. 

SRE y DevOps tampoco compiten por metodologías. Esto se debe a que la primera proporciona un enfoque práctico para resolver la mayoría de las preocupaciones de DevOps.

En síntesis, ambos enfoques te ayudarán a:  

  • Reducir el aislamiento organizativo
  • Crear el entorno adecuado para un cambio gradual
  • Aceptar el fracaso y las iteraciones constantes como una práctica habitual
  • Utilizar las herramientas de automatización en su beneficio
  • Disponer de mediciones más fiables y precisas
  • Recopilar métricas
  • Mejorar la respuesta ante crisis

Por lo tanto, hay una ganancia compartida entre los dos.

Conclusiones

Con el tiempo, alrededor del 50% de las empresas que utilizan DevOps adoptaron también un enfoque SRE para mejorar la fiabilidad. La razón principal es que esta última permite una mayor observabilidad y más cantidad de métricas de las aplicaciones dinámicas que dependen de la automatización. 

Ambos enfoques no están separados. Al contrario, comparten metodologías que pueden aumentar mutuamente su eficacia a la hora de mejorar el proceso integral IT. Como resultado, los ciclos de vida de las aplicaciones y las operaciones se llevan la mejor parte.