L'ingénierie de la fiabilité des sites (SRE) représente une discipline spécialisée qui se consacre à la conception et à la mise en œuvre de systèmes logiciels hautement évolutifs et robustes, en adoptant des principes d'ingénierie logicielle pour résoudre les défis liés à l'infrastructure et à l'exploitation.
Les ingénieurs SRE, experts en leur domaine, conçoivent des stratégies innovantes qui garantissent un équilibre harmonieux entre les processus de développement et d'exploitation. Google, en tant que précurseur en SRE, a largement contribué à sa popularité.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. La gestion de ces débats se fait principalement en interne avec un seul objectif, augmenter les performances.
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é. La disponibilité des équipes est donc primordiale, puisqu’elle va déterminer l’évolution de la méthode de travail et du rôle de chaque acteur.
La valorisation des outils et de l'automatisation est un aspect crucial de l'ingénierie de la fiabilité des sites (SRE). L'automatisation n'est pas simplement une question de commodité ou d'efficacité, mais aussi une stratégie clé pour réduire les erreurs, améliorer la cohérence, augmenter la vitesse et la répétabilité des processus.
L'un des principes fondamentaux de la SRE est de minimiser le travail manuel autant que possible. Le travail manuel est souvent considéré comme une source d'erreurs, d'incohérences et de ralentissement. En automatisant des tâches répétitives et susceptibles d'erreurs, les ingénieurs SRE peuvent consacrer plus de temps à des travaux de valeur ajoutée, tels que l'innovation, l'amélioration continue ou la résolution de problèmes plus complexes.
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.
Foire aux questions sur la RSE
Qu'est-ce qui distingue un ingénieur de la fiabilité des sites (SRE) d'un ingénieur DevOps ?
Bien que les ingénieurs SRE et DevOps partagent de nombreux objectifs et responsabilités communes, ils diffèrent par leur approche et leur orientation. Un ingénieur SRE se concentre sur la fiabilité du système, l'efficacité de l'infrastructure et l'équilibre entre le développement rapide et la fiabilité du système.
Par contre, un ingénieur DevOps se concentre plus sur l'amélioration de la collaboration entre les équipes de développement et d'opérations, ainsi que sur l'automatisation du processus de livraison de logiciels.
Quels sont quelques exemples d'outils utilisés par les ingénieurs de la fiabilité des sites ?
Les ingénieurs SRE utilisent une variété d'outils pour surveiller les systèmes, automatiser les tâches, gérer les incidents, et analyser les performances. Cela peut inclure des outils de surveillance comme Prometheus, des outils d'automatisation comme Ansible, des outils de gestion des incidents comme PagerDuty, et des outils d'analyse des performances comme Grafana.
Comment devenir ingénieur SRE ?
Pour devenir ingénieur SRE, un certain nombre de compétences et d'expériences sont nécessaires. Les candidats doivent généralement avoir une bonne connaissance des systèmes d'exploitation, des réseaux cloud et de la programmation.
En outre, une compréhension approfondie des principes de DevOps et de l'automatisation est également utile. Des diplômes en informatique, en génie logiciel ou dans des domaines connexes sont souvent requis. Cependant, l'expérience pratique, acquise par exemple par des stages ou des projets personnels, est tout aussi importante. Enfin, les certifications professionnelles dans les domaines pertinents peuvent également être bénéfiques.