Connexion / Inscription Account

DevOps

L'ingénierie de la fiabilité des sites, qu'est-ce que c'est ?

L'ingénierie de la fiabilité des sites (SRE, Site Reliability Engineering) est une approche d'ingénierie logicielle pour l'exploitation informatique. Les équipes de SRE utilisent des logiciels pour gérer des systèmes, résoudre des problèmes et automatiser des tâches liées à l'exploitation.

La SRE consiste à transférer certaines tâches effectuées par les équipes d'exploitation, souvent manuellement, aux ingénieurs ou aux équipes d'exploitation qui utilisent des logiciels et des outils d'automatisation pour résoudre les problèmes et gérer des systèmes de production. 

La SRE est une pratique utile pour créer des systèmes logiciels évolutifs et extrêmement fiables. Elle vous permet d'utiliser du code pour gérer des systèmes volumineux, une méthode plus évolutive et durable pour les administrateurs système qui gèrent des milliers, voire des centaines de milliers de machines. 

Le concept d'ingénierie de la fiabilité des sites provient des ingénieurs de Google, et de Ben Treynor Sloss en particulier. 

La SRE permet de trouver un équilibre entre le fait de lancer de nouvelles fonctions et d'assurer leur fiabilité pour les utilisateurs.

La normalisation et l'automatisation sont deux composantes importantes du modèle de SRE. Les ingénieurs en fiabilité de site doivent toujours chercher à améliorer et automatiser les tâches liées à l'exploitation.

La SRE permet ainsi d'améliorer la fiabilité d'un système à l'instant T, et au fur et à mesure de sa croissance. 

L'ingénierie de la fiabilité des sites aide les équipes qui effectuent la transition entre l'approche traditionnelle et l'approche cloud-native de l'exploitation informatique.

Quel est le rôle d'un ingénieur en fiabilité de site ?

L'ingénieur en fiabilité de site remplit un rôle unique et son profil est celui d'un développeur de logiciels avec des connaissances en exploitation, ou d'un administrateur système (ou autre poste en exploitation informatique) avec des compétences en développement de logiciels. 

Les équipes de SRE sont responsables du déploiement, de la configuration et de la surveillance du code, ainsi que des services en production (disponibilité, latence, gestion des modifications, intervention en cas d'urgence et gestion de la capacité).

L'ingénierie de la fiabilité des sites permet de décider quelles nouvelles fonctions lancer et selon quel calendrier, sur la base de contrats de niveau de service qui définissent la fiabilité requise du système en fonction d'indicateurs de niveau de service (SLI) et d'objectifs de niveau de service (SLO). 

Un SLI mesure des aspects spécifiques des niveaux de service fournis. Les SLI clés comprennent la latence des requêtes, la disponibilité, le taux d'erreur et le débit du système. Un SLO est basé sur la valeur ou la plage de valeurs visée pour un niveau de service déterminé par le SLI.

Un SLO pour la fiabilité requise du système est alors fixé en fonction d'une période d'indisponibilité jugée acceptable. Cette période d'indisponibilité est appelée budget d'erreur. Il s'agit du seuil maximal admissible d'erreurs et d'interruptions. 

La SRE n'implique pas une fiabilité parfaite. En effet, les défaillances sont prévues et acceptées. 

Le budget d'erreur est à disposition des développeurs qui peuvent l'utiliser lors du lancement d'une nouvelle fonction. En se basant sur l'objectif de niveau de service et sur le budget d'erreur, l'équipe de développement peut déterminer si le lancement d'un produit ou d'un service est possible avec le budget d'erreur alloué.

Si un service s'exécute sans dépasser le budget d'erreur, les développeurs peuvent le lancer à tout moment. En revanche, si le système rencontre trop d'erreurs ou génère des temps d'arrêt plus longs que le maximum autorisé par le budget d'erreur, ils doivent s'assurer que ces erreurs ne dépassent plus le budget avant de procéder au lancement.   

L'équipe de développement effectue des tests d'exploitation automatisés pour démontrer la fiabilité du système. 

Les ingénieurs en fiabilité de site partagent leur temps entre les tâches liées à l'exploitation et d'autres projets. D'après les meilleures pratiques de SRE de Google, un ingénieur en fiabilité de site ne doit pas consacrer plus de 50 % de son temps à l'exploitation (un système de surveillance doit être en place pour éviter tout dépassement). 

Le reste du temps doit être alloué aux tâches de développement comme la création de fonctions, la mise à l'échelle du système et la mise en œuvre de l'automatisation.

Si les tâches d'exploitation sont trop nombreuses ou si les performances de certains services sont insuffisantes, leur exécution peut être réaffectée aux développeurs afin d'éviter qu'un ingénieur en fiabilité de site ne passe trop de temps sur l'exploitation d'une application ou d'un service. 

L'automatisation représente une part importante du rôle de l'ingénieur en fiabilité de site. S'il rencontre plusieurs fois le même problème, il crée une solution automatisée. Cela lui permet également de ne pas consacrer plus de la moitié de sa charge de travail aux tâches d'exploitation. 

Le maintien de l'équilibre entre les tâches d'exploitation et de développement est une composante essentielle de la SRE. 

Différences entre le DevOps et la SRE

Le modèle DevOps est une approche de la culture informatique, de l'automatisation et de la conception de plateformes conçue pour accroître la valeur ajoutée et optimiser la réactivité des entreprises grâce à une distribution plus rapide et efficace des services. La SRE peut être considérée comme une pratique de DevOps.

Comme le DevOps, l'ingénierie de la fiabilité des sites est liée à la culture d'entreprise et aux relations entre les services. Les pratiques de SRE et de DevOps créent toutes deux un lien entre les équipes de développement et d'exploitation, ce qui leur permet de distribuer des services plus rapidement. 

La SRE et le modèle DevOps offrent des avantages similaires : accélération des cycles de développement d'applications, amélioration de la fiabilité et de la qualité des services, et gain de temps par application développée pour les équipes informatiques.

La particularité de la SRE est qu'elle s'appuie sur des ingénieurs en fiabilité de site, au sein de l'équipe de développement, qui disposent également d'une expérience en exploitation leur permettant de résoudre les problèmes de communication et de workflow.

Un ingénieur chargé de la fiabilité du site doit ainsi posséder à la fois des compétences en développement et en exploitation, car ses responsabilités touchent les deux domaines. 

La SRE aide les équipes DevOps dont les développeurs sont surchargés de tâches d'exploitation et pourraient profiter de talents disposant de compétences plus spécialisées dans ce domaine. 

En ce qui concerne le code et les nouvelles fonctions, le DevOps est axé sur le déroulement efficace du pipeline de développement, tandis que la SRE est davantage axée sur l'équilibre entre la fiabilité du site et la création de fonctions. 

Les plateformes d'applications modernes basées sur les conteneurs, Kubernetes et les microservices sont au cœur des pratiques DevOps, car elles permettent la distribution de services logiciels sécurisés et novateurs.

 

Les technologies à la base de la SRE

La SRE s'appuie sur l'automatisation des tâches d'exploitation courantes et la standardisation du cycle de vie d'une application. Les conteneurs Linux® apportent à votre équipe la technologie sous-jacente nécessaire pour adopter une approche de développement d'applications cloud-native. Les conteneurs prennent en charge un environnement unifié pour le développement, la distribution, l'intégration et l'automatisation.

Kubernetes est un outil moderne pour automatiser l'exploitation des conteneurs Linux. Il vous permet de gérer simplement et efficacement les clusters qui exécutent des conteneurs Linux dans les clouds publics, privés ou hybrides.

De plus, avec la plateforme adaptée, vous pouvez tirer le meilleur parti des changements que vous avez apportés en matière de culture et de processus. Red Hat® OpenShift® est une plateforme Kubernetes d'entreprise idéale pour soutenir les projets de SRE.

Les outils d'ingénierie de fiabilité des sites dont vous avez besoin

Red Hat Ansible Automation

Une technologie d'automatisation informatique simple, sans agent, capable d'améliorer vos processus existants, d'assurer la migration des applications pour une optimisation plus efficace et de créer un langage commun à toutes les pratiques DevOps de l'entreprise.

Red Hat OpenShift

Une plateforme de conteneurs Kubernetes pour les entreprises qui automatise l'exploitation de toute la pile pour la gestion des déploiements multicloud et de clouds hybrides. 

Vous ne savez pas encore tout sur le DevOps…