L'ingénierie de la fiabilité des sites (SRE) est une discipline qui permet de créer des systèmes logiciels ultra-évolutifs et fiables en appliquant des pratiques d'ingénierie logicielle aux problèmes d'infrastructure et d'exploitation. Les ingénieurs experts en fiabilité des sites peuvent développer des solutions qui permettent de trouver le juste équilibre entre le développement et les opérations. Google a été pionnier dans ce domaine. Pour en savoir plus, consultez leur eBook Site Reliability Engineering.
Les ingénieurs de la fiabilité des sites (SRE) travaillent à la fois pour le développement et les opérations, mais pas toujours dans le cadre d'un modèle DevOps. Le concept de SRE, qui existe depuis 2003, est antérieur à l'apparition du DevOps. Le terme est devenu populaire grâce à Ben Treynor, fondateur de l'équipe de la fiabilité des sites de Google. Pour reprendre ses termes, l'ingénierie de la fiabilité des sites correspond à « ce qu'il se passe lorsqu'un ingénieur logiciel se charge de ce que l'on appelait autrefois les opérations ».
Les deux disciplines, le DevOps et la SRE, ont pour objectif d'améliorer le cycle de lancement de nouveaux produits en fournissant aux équipes de développement et d'exploitation la visibilité nécessaire sur ces deux étapes tout au long du cycle de vie des applications. Elles ont également recours à l'automatisation et à la surveillance, ce qui réduit le délai entre le moment où un développeur effectue un changement et le moment où celui-ci est déployé en production. L'objectif de ces deux méthodes consiste à obtenir ce résultat sans compromettre la qualité du code ou du produit.
Les questions posées par la SRE et le DevOps diffèrent, mais elles sont aussi importantes l'une que l'autre :
Le DevOps s'interroge sur l'objectif à atteindre.
La SRE se demande comment atteindre cet objectif.
Les ingénieurs de la fiabilité des sites mesurent des indicateurs de niveau de service (SLI) et les objectifs de niveau de service (SLO), tandis que les équipes DevOps mesurent le taux d'échec et de réussite au fil du temps. Les ingénieurs SRE partagent certaines responsabilités clés des ingénieurs DevOps visant à améliorer l'infrastructure :
Les ingénieurs SRE ne remettent pas directement en cause le nombre de silos, mais ils encouragent les autres acteurs de l'entreprise à en discuter. Pour engager ce débat, les outils et les techniques de l'ensemble de l'entreprise sont sollicités afin de répartir la propriété entre les différents collaborateurs.
Les ingénieurs SRE doivent limiter le nombre d'erreurs ou de défaillances. Pour cela, ils utilisent une formule composée de scores SLI et SLO. Les SLI calculent le nombre de défaillances par demande, sur la base de la latence d'une demande, du débit des demandes par seconde ou des défaillances par demande. Les SLO sont définis à partir du seuil et du pourcentage et reflètent le taux de réussite des SLI sur une certaine période.
Les ingénieurs SRE travaillent pour la mise en place de nouveaux processus, mais d'une manière lente et méthodique. Or, les entreprises ont besoin d'évoluer rapidement et demandent des mises à jour fréquentes et en continu des produits. Les équipes DevOps et SRE doivent donc fournir une réponse rapide, à un rythme soutenu, mais contrôlé.
L'objectif est d'automatiser et de supprimer les tâches manuelles afin d'apporter de la valeur aux développeurs et aux équipes chargées des opérations.
Les ingénieurs SRE doivent contrôler le déroulement des opérations en configurant des alertes pour différents scénarios, en demandant à des pairs de réviser le code ou en utilisant des tests unitaires.
L'ingénierie de la fiabilité des sites (SRE) et le DevOps sont deux disciplines appréciées par les entreprises et dont les objectifs clés se recoupent : définition d'un système permettant de mesurer les taux de réussite ou d'échec et l'obtention d'une fiabilité continue pour chaque application. La fiabilité ne se limite pas à l'infrastructure, elle est importante à chaque étape : de la qualité des applications à la performance, en passant par la sécurité. Les ingénieurs SRE se soucient de chaque processus, du code source au déploiement. Ils constituent véritablement une passerelle entre le développement et les opérations.