Bien que le Site Reliability Engineering existe depuis un certain temps, ce n'est que récemment qu'elle a acquis une certaine notoriété dans le milieu des logiciels en général. Mais il y a encore beaucoup de questions sur ce qu'est et ce que fait un Site Reliability Engineer (SRE).
Les SRE ont été comparés aux groupes d'exploitation, aux administrateurs système, etc. Mais cette comparaison n'est pas à la hauteur de leur rôle dans l'environnement logiciel moderne d'aujourd'hui. Les SRE couvrent plus de responsabilités que les opérations et l'infrastructure. Et même s'ils ont une formation en administration système, ils apportent également des compétences en développement logiciel.
Les SRE combinent toutes ces compétences et veillent au bon fonctionnement des systèmes distribués complexes.
Qu'est-ce que le Site Reliability Engineering ?
L'ingénierie de la fiabilité des sites (en français) consiste à appliquer les principes du génie logiciel aux processus d'exploitation et d'infrastructure afin d'aider les organisations à créer des systèmes logiciels hautement fiables et évolutifs. En tant que discipline, le SRE se concentre sur l'amélioration de la fiabilité des systèmes logiciels dans des catégories clés telles que la disponibilité, les performances, la latence, l'efficacité, la capacité et la réponse aux incidents.
Alors que de plus en plus d'organisations étendent leurs services via le cloud et que la demande de services numériques augmente, les pratiques SRE sont essentielles pour respecter les accords de niveau de service en temps réel et pour répondre aux exigences d'intégration continue/de livraison continue (CI/CD) des équipes DevOps et DevSecOps.
Bien que chaque organisation et chaque système logiciel soit unique, il est utile de comprendre certains principes fondamentaux du SRE pour réfléchir à la manière de l'appliquer à sa propre situation.
En quoi le SRE est-il différent de DevOps ?
Tout d'abord, il ne faut pas considérer DevOps comme un rôle. Il s'agit plutôt d'un aspect culturel. Il ne peut et ne doit pas être attribué à une personne, mais plutôt réalisé en équipe.
Ensuite, DevOps automatise et simplifie le processus qui consiste à faire passer le code de l'ordinateur portable d'un développeur à la production aussi facilement que possible. Mais que se passe-t-il une fois que le code est déployé en production ?
C'est là que le Site Reliability Engineer fait toute la différence. Le SRE améliore les opérations une fois que le code est déployé en production, en se concentrant sur les opérations et le maintien de services hautement disponibles. Et encore une fois, il ne s'agit pas d'un rôle typique d'exploitation ou de maintenance des applications, qui consiste à répondre manuellement aux problèmes. Le professionnel qui assume ce rôle doit être un ingénieur logiciel et utiliser ces compétences pour automatiser son chemin vers la haute disponibilité.
En bref, DevOps amène le code en production, tandis que SRE veille à ce qu'il fonctionne correctement une fois en production.
Quel est le rôle d’un SRE et comment évolue t-il ?
Les SRE aident à résoudre les principaux problèmes des responsables informatiques
La hâte de fournir de nouveaux services et fonctionnalités aux clients met une pression constante sur les développeurs, les DevOps et les rôles connexes. Ils doivent maintenir la cadence des mises à jour sans casser les produits et leurs services de soutien. Dans ce bras de fer entre les rôles, la tâche principale du SRE est de s'assurer que les sites et les services de l'entreprise :
- Offrent des performances, un temps de fonctionnement et une disponibilité constants.
- Assurent la sécurité et la redondance du site.
- Développent des moyens de détection précoce des problèmes.
- Utiliser un cadre de mesure pour suivre la fiabilité.
- Utiliser l'automatisation pour réduire la gestion manuelle.
- Compréhension globale des besoins actuels et futurs.
L'objectif clé d'un SRE est de :
Les SRE contribuent à fixer les objectifs de temps de fonctionnement et de disponibilité par le biais d'accords ou d'indicateurs de niveau de service. Pour les SRE, le facteur clé réside dans les "budgets d'erreur" afin de trouver le bon équilibre entre le besoin de développement de fonctionnalités et la disponibilité.
L'effort d'automatisation est commun à de nombreux secteurs d'activité, le SRE étant chargé de réduire les tâches informatiques banales dans la maintenance et l'exploitation. L'automatisation de ces tâches et la fourniture d'une vue d'ensemble des tableaux de bord permettent aux ingénieurs et aux autres rôles de se concentrer sur les tâches critiques et la planification au niveau stratégique.
Ces stratégies basées sur la technologie et les services actuellement utilisés, et ceux provenant des fournisseurs ou du développement interne à travers les cycles de produits futurs. L'utilisation de l'IA et du machine learning pour détecter et prévoir les erreurs permet d'identifier rapidement les problèmes et de prendre des mesures préventives.
Le SRE : La voix de la raison
Lorsqu'ils occupent une position intermédiaire entre les développeurs et les opérations, les SRE utilisent la logique et les preuves pour construire leurs arguments. Ils aident à résoudre les problèmes en mettant en œuvre une formule mathématique pour éliminer la subjectivité autour des versions.
Un objectif de niveau de service fixe la référence pour la fiabilité d'un système pour les utilisateurs finaux. Le budget d'erreur est établi sur la base de l'objectif de niveau de service.
Les développeurs peuvent construire et mettre à jour leurs produits et les déployer en respectant ce budget d'erreurs. Tant que le produit fonctionne avec peu d'erreurs négligeables, ils sont libres d'ajouter de nouvelles fonctionnalités à un rythme qui convient à l'entreprise.
À l'inverse, lorsque le budget d'erreurs est dépassé, les autres mises à jour ou lancements sont gelés jusqu'à ce que le nombre d'erreurs soit réduit, et tous les efforts des développeurs sont concentrés sur les corrections nécessaires. Les développeurs sont ainsi incités à réduire les erreurs et à améliorer la fiabilité à toutes les étapes du cycle de vie d'un produit.
Quels sont les outils d'un SRE ?
Comme pour toute fonction technologique, le SRE dispose d'une panoplie d'outils pour contribuer à la réussite de la stratégie et garantir la réalisation des objectifs.
Innovation
De nombreuses fonctions informatiques et DevOps se concentrent sur les problèmes quotidiens de gestion des projets jusqu'au lancement et à la réussite des opérations. Cela peut laisser peu de temps pour se pencher sur l'innovation commerciale ou de service, où le SRE peut apporter de nouvelles idées et solutions, en regardant au-delà de la focalisation sur le produit. En se concentrant sur les objectifs de l'entreprise numérique, ils augmentent les chances de mettre sur le marché des produits perturbateurs.
Automatisation
Alors que les SRE de la première génération écrivaient et maintenaient le code qui soutenait les systèmes de production, la dernière génération de digital natives cherche à automatiser les processus dans la mesure du possible pour maintenir et améliorer la fiabilité. Ils comprennent mieux l'environnement de l'entreprise et peuvent se concentrer sur les mesures qui comptent pour l'entreprise, et pas seulement pour les équipes informatiques.
Un large éventail de compétences
À la fois administrateur de systèmes et développeur, le SRE doit comprendre les deux côtés de l'équation et les conflits qui surviennent pendant le développement et l'exploitation. La capacité à dépanner les processus dus à des méthodologies différentes fait partie intégrante du travail du SRE, qui utilise son point de vue pour créer un système opérationnel équilibré.
Les SRE consacrent du temps à des responsabilités tant techniques que liées aux processus.
Ils font plus qu'une équipe d'exploitation ou d'administration de système. Les ingénieurs de fiabilité des sites utilisent leurs compétences en ingénierie pour automatiser et réduire l'intervention manuelle nécessaire aux tâches d'administration.
En outre, ils travaillent avec d'autres équipes d'ingénieurs pour assurer une surveillance, une réponse aux incidents et une gestion appropriée. Au fil du temps, ces fonctions améliorent la fiabilité et les coûts de maintenance des systèmes distribués.