SRE : un responsable aux multiples casquettes
Un ingénieur de fiabilité de sites a plusieurs casquettes. En plus des responsabilités de développement et de dépannage, ce rôle requiert des compétences de communication de haut niveau.
L’approche DevOps doit éliminer les silos traditionnels qui séparent les équipes de développement et d’exploitation des logiciels. Mais la rapidité induite par le développement agile laisse un vide de fiabilité ; et les équipes peuvent finir par déployer de nouveaux services, pourtant peu robustes, à un rythme rapide.
Un ingénieur logiciel responsable des opérations (Site reliability engineer ou SRE) construit et met en œuvre des logiciels de qualité qui améliorent la fiabilité, la répétabilité et la flexibilité des services et systèmes de production dans un environnement DevOps. Un SRE connaît sur le bout des doigts la pile logicielle de son organisation, sait coder et améliorer du code, tout en ayant les compétences pour dépanner les problèmes les plus complexes.
La notion de SRE serait apparue en 2003 chez Google. Elle faisait référence à un moyen pour fiabiliser, agrandir et optimiser les centres de données grandissants. Le rôle d’ingénieur logiciel en charge des opérations a évolué pour automatiser des tâches opérationnelles, de la planification des capacités à la réponse aux incidents. Il s’agit essentiellement de remplacer les tâches humaines par de l’automatisation.
Pour y parvenir, les SRE construisent des chaînes ou des catalogues d’outils en libre-service pour les développeurs, y compris les logiciels consacrés à l’approvisionnement automatique et la configuration de l’environnement de test. L’équipe SRE doit améliorer les performances, la disponibilité, la latence, l’efficacité, le suivi, le dépannage et le déploiement des logiciels et des services en production.
Les responsabilités les plus courantes du SRE
Les SRE sont à la fois des développeurs et des dépanneurs. Ils partagent souvent leur temps de manière égale entre le développement de middleware pour améliorer les performances et la disponibilité du site, et les opérations informatiques et les tâches de support.
Dans les tâches de développement, les SRE consultent activement les équipes responsables des projets pour s’assurer que les logiciels émergents sont conformes aux exigences de l’entreprise en matière de disponibilité, de sécurité, de maintenabilité et de performance.
Les SRE collaborent avec le service des opérations pour assurer le bon fonctionnement des pipelines CI/CD.
Les principales responsabilités du SRE sont les suivantes :
- Développer les logiciels et les processus nécessaires au maintien des services.
- Collecter et analyser les métriques essentielles, telles que la disponibilité, le temps moyen entre l’apparition d’une panne et sa réparation, ainsi que générer de nouveaux indicateurs clés si nécessaire. Ajouter ces éléments aux tableaux de bord de monitoring et ceux des systèmes de reporting.
- Effectuer un suivi détaillé pour améliorer la disponibilité et les performances des applications, services, systèmes et infrastructures. Créer de nouvelles alertes pour trouver des anomalies et comprendre la cause profonde des défaillances du système.
- Créer et déployer des architectures d’automatisation, d’alerte, d’autoréparation et d’autres technologies pour rendre l’environnement plus facile à entretenir.
- Surveiller, gérer et dépanner les processus courants afin d’améliorer les processus et les flux de travail.
- Créer et tenir à jour la documentation relative aux processus, à l’automatisation, à l’infrastructure, aux ressources et aux services.
- Agir en tant qu’expert en la matière et coach, pour encadrer les développeurs et les ingénieurs, ainsi qu’aider les développeurs débutants dans le dépannage et le débogage des logiciels.
Les compétences et l’expérience du SRE
Comme c’est le cas pour de nombreux rôles dans le cadre de l’approche DevOps, il existe rarement un parcours éducatif ou professionnel unique et bien défini pour devenir SRE. Cela signifie qu’une organisation peut prospecter auprès de nombreux types de candidats différents, mais les exigences du métier impliquent une expertise dans de nombreux domaines différents. En termes d’éducation, un candidat a idéalement une licence en informatique, mais une expérience équivalente ou un autre diplôme technique peut certainement convenir.
Ce qui pèse le plus dans la balance, c’est l’expérience et l’expertise. Un futur SRE devra probablement avoir plus de cinq ans d’expérience dans la prise en charge de divers environnements évolutifs et plus de trois ans d’expérience dans le développement de logiciels qui impliquent les langages de programmation les plus usités : Python, Java, C ou encore JavaScript.
De même, un SRE doit prouver une solide connaissance des principaux systèmes d’exploitation, tels que Linux, et de leur administration, ainsi que des réseaux, de l’équilibrage de charges, des protocoles tels que TCP/IP et des services type DNS. La connaissance d’autres technologies, telles que les serveurs, le stockage, la virtualisation et les outils de surveillance IT, comme Nagios, Splunk et Grafana, est également importante.
Ce responsable doit être un excellent développeur de logiciels capable de créer des outils pour la gestion et l’automatisation des infrastructures et connaître les pratiques DevOps et les méthodes de remédiation pour divers problèmes techniques. Cela exige une connaissance approfondie des principaux outils de pipeline CI/CD, dont Jenkins, GitLab et SonarQube.
Dans de nombreux cas, le SRE doit gérer plusieurs problèmes simultanément sous la pression extrême d’un environnement de production critique. La connaissance des techniques et des outils d’analyse des logs, tels que Loggly et Splunk, s’avère un sérieux coup de pouce.
Un vulgarisateur hors pair
Les compétences essentielles pour un Site Reliability Engineer ne sont pas seulement de nature technique.
Ce persona doit être bien organisé et à l’aise dans un environnement de production à grande échelle ou critique ; souvent dans des secteurs soumis à des exigences de conformité réglementaire et de sécurité.
Les entreprises ou les cabinets de recrutement peuvent chercher des profils capables de supporter des applications soumises à des SLA de disponibilité 24h/24 et 7j/7 et de l’assistance téléphonique en continu.
Enfin, une organisation fait souvent appel à son SRE pour faire des présentations et créer de la documentation à l’intention de divers publics. Cela signifie que le SRE doit être un expert en communication, doté de compétences en matière de collaboration écrite, verbale et virtuelle, en particulier lorsqu’il travaille avec des personnes moins douées techniquement.