Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Auf Deutsch lesen

Section 2.5 sur 2.8 · Intermédiaire · 22 min de lecture

Disponibilité et fiabilité : « neuf », MTBF, MTTR et tolérance aux pannes

Leçon vidéo

5 min · narré en anglais, avec sous-titres
Écouter seulement (audio)
Lire la transcription

Cette leçon porte sur le maintien d’un service en fonctionnement : comment décrire l’objectif avec précision, comment le chiffrer et où l’effort d’un architecte rapporte le plus.

Pensez à l’épicerie du coin. La disponibilité, c’est la fréquence à laquelle la porte est ouverte quand vous arrivez. La fiabilité, c’est le fait que, une fois à l’intérieur, la caisse fonctionne du début à la fin de votre achat. Les magasins restent ouverts grâce à une caisse de secours, à un deuxième membre du personnel et à un moyen rapide de repérer et de régler les problèmes. Les architectes logiciels prennent le même genre de décisions.

La disponibilité est la proportion du temps, ou des requêtes, pendant laquelle le système est prêt à servir. La fiabilité est la probabilité qu’il fonctionne correctement, sans défaillance, pendant une période donnée. Ce sont deux choses différentes. Imaginez un service qui plante une fois par heure et redémarre en une seconde. Sa disponibilité est de quatre-vingt-dix-neuf virgule quatre-vingt-dix-sept pour cent, ce qui semble excellent. Mais la probabilité qu’un traitement par lots de deux heures se déroule sans défaillance n’est que d’environ treize et demi pour cent. Un terminal de paiement se soucie de la disponibilité ; un robot chirurgical se soucie de la fiabilité.

Trois autres mots comptent. Une faute est la cause, par exemple un bogue dans du code de gestion des dates. Elle peut rester dormante pendant des années. Lorsqu’elle est activée, elle produit une erreur : un état interne incorrect. Si l’erreur atteint les utilisateurs, elle devient une défaillance. Chaque maillon de cette chaîne est un point d’action. Les tactiques de prévention empêchent les fautes d’apparaître. Les tactiques de détection, comme les heartbeats et les contrôles de santé, repèrent les erreurs tôt. Et les tactiques de rétablissement, comme le failover et les nouvelles tentatives, empêchent les erreurs de devenir des défaillances.

Les objectifs de disponibilité s’écrivent en nombre de « neuf ». Convertissez-les toujours en temps d’indisponibilité admis : un moins la disponibilité, multiplié par la période. Trois neuf, soit quatre-vingt-dix-neuf virgule neuf pour cent, autorisent environ huit virgule soixante-seize heures par an, ou quarante-trois virgule deux minutes par mois. Quatre neuf autorisent environ cinquante-deux virgule six minutes par an : à peine quatre virgule trente-deux minutes par mois. C’est moins que le temps qu’il faut pour alerter un ingénieur, le réveiller et comprendre ce qui ne va pas. Au-delà de trois ou quatre neuf, le rétablissement doit donc être automatique.

La disponibilité relie deux moyennes : le temps moyen entre défaillances, ou MTBF, et le temps moyen de réparation, ou MTTR. Le service des commandes d’une app de livraison de repas tombe en panne tous les trente jours, soit sept cent vingt heures, et il faut quatre heures pour le réparer à la main. Cela donne quatre-vingt-dix-neuf virgule quarante-cinq pour cent : environ quarante-huit virgule quatre heures d’arrêt par an. Option un : doubler le temps entre les défaillances. La disponibilité monte à quatre-vingt-dix-neuf virgule soixante-douze pour cent, soit environ vingt-quatre virgule trois heures par an. Option deux : automatiser la détection et le failover, ce qui ramène le temps de réparation à quinze minutes. La disponibilité atteint quatre-vingt-dix-neuf virgule quatre-vingt-dix-sept pour cent, soit environ trois heures par an. Seule l’option deux dépasse l’objectif de trois neuf. Rendre les défaillances plus rares, c’est lutter contre la physique. Se rétablir plus vite relève en grande partie de l’architecte.

Les systèmes réels sont des chaînes. Si une requête a besoin du niveau web, du serveur d’application et de la base de données, les trois doivent fonctionner. Ils sont en série, donc leurs disponibilités se multiplient. Ici, la chaîne donne quatre-vingt-dix-neuf virgule quatre-vingt-quatre pour cent, soit environ quatorze heures d’arrêt par an : moins que n’importe lequel de ses éléments. Ajoutez maintenant un second serveur d’application en parallèle. La paire ne tombe en panne que si les deux tombent en panne en même temps, donc on multiplie leurs indisponibilités. La chaîne entière monte à quatre-vingt-dix-neuf virgule quatre-vingt-quatorze pour cent, soit environ cinq virgule trois heures par an. Mais seulement si les copies tombent en panne indépendamment, et si le failover fonctionne vraiment. Un secours qui n’a jamais été testé est un espoir, pas un composant.

La redondance dans un seul centre de données ne vous sauvera pas si vous perdez tout le centre de données. La reprise après sinistre s’appuie sur deux chiffres fixés par le métier. L’objectif de temps de reprise, ou RTO, est la durée maximale acceptable pour restaurer le service. L’objectif de point de reprise, ou RPO, est la quantité maximale de données que vous pouvez perdre, mesurée en temps. Un RPO de quinze minutes signifie perdre au plus les quinze dernières minutes de modifications. Testez vos restaurations et chronométrez-les. Une sauvegarde que vous n’avez jamais restaurée n’est pas une sauvegarde. Enfin, un objectif de niveau de service, ou SLO, transforme la disponibilité en budget. Un objectif mensuel de quatre-vingt-dix-neuf virgule neuf pour cent autorise environ quarante-trois minutes de panne, que les équipes peuvent dépenser en mises en production et en expériences.

La section complète contient le tableau complet des « neuf », les tactiques de disponibilité et les deux formes de redondance. Ensuite, dans la section deux point six, nous verrons comment concevoir pour le changement. À très vite.

Ce qu’il faut savoir

Quatre mots souvent confondus

Pour les utilisateurs, un système fonctionne ou ne fonctionne pas. Les architectes ont besoin de mots plus fins, car chaque mot appelle une réponse de conception différente. La disponibilité est la proportion du temps (ou des requêtes) pendant laquelle le système est prêt à fournir son service quand on le lui demande. La fiabilité est la probabilité que le système fonctionne correctement, sans défaillance, pendant une période donnée et dans des conditions données. La tolérance aux pannes est la capacité à continuer de fournir le service même lorsqu’une partie est défaillante. La résilience est la capacité plus large à absorber une perturbation, à maintenir le service essentiel (éventuellement dégradé) puis à revenir à la normale.

L’ISO/IEC 25010:2023 range la disponibilité, la tolérance aux pannes et la capacité de récupération, ainsi que l’absence de défauts (qui a remplacé le terme maturité de 2011), parmi les sous-caractéristiques de la fiabilité. Bass, Clements et Kazman, dans Software Architecture in Practice, traitent la disponibilité comme un attribut de qualité à part entière, parce qu’elle oriente un très grand nombre de décisions architecturales. Aucune de ces deux visions n’est fausse ; utilisez celle qui facilite la discussion, mais précisez bien de quel mot vous parlez.

La différence entre disponibilité et fiabilité compte en pratique. Imaginez un service qui plante une fois par heure et redémarre en une seconde. Sa disponibilité est de 3599 / 3600 = 99,97 %, ce qui semble excellent. Sa fiabilité sur un traitement par lots de deux heures est médiocre : si les défaillances surviennent au hasard au rythme d’une par heure, la probabilité de tourner deux heures sans aucune est de e-2, soit environ 13,5 %. Un terminal de paiement se soucie de la disponibilité ; un long calcul scientifique, un robot chirurgical ou un avion se soucient de la fiabilité sur toute la durée de la mission.

Faute, erreur et défaillance

La communauté de la sûreté de fonctionnement (Avižienis, Laprie, Randell et Landwehr, 2004) distingue trois idées que le langage courant confond. Une faute (fault) est la cause : un bogue, un disque en panne, une erreur de configuration, un certificat expiré. Une faute peut rester dormante pendant des années. Lorsqu’elle est activée, elle produit une erreur : une partie de l’état interne du système qui est incorrecte, comme un enregistrement corrompu ou une valeur erronée en mémoire. Si l’erreur atteint la frontière du service, il en résulte une défaillance (failure) : le service fourni aux utilisateurs s’écarte de ce qu’il devrait être.

Bass, Clements et Kazman reprennent la même idée plus simplement : une défaillance est un écart par rapport à la spécification que les utilisateurs du système peuvent observer, et la cause d’une défaillance est une faute. Pour l’architecte, l’essentiel est que chaque maillon de la chaîne est un point d’intervention. Vous pouvez empêcher les fautes d’apparaître (revue de code, retrait d’un composant du service avant son usure), détecter les erreurs avant qu’elles ne se propagent (validation, contrôles de santé) et contenir ou masquer les erreurs pour qu’elles ne deviennent jamais des défaillances (redondance, nouvelles tentatives, transactions).

La chaîne et les points d’action des tactiques

Une faute activée provoque une erreur, qui peut devenir une défaillance ; prévenir, détecter et rétablir agissent à des points différentsFauteex. bogue du code de datesErreurvaleur d’état erronéeDéfaill.résultat faux visibleactivéese propagePrévenirretrait du service,transactions,modèles prédictifsDétecterheartbeat, health check,supervision, vote,vérif. cohérenceRétablirredondance, failover,réessai, rollback,dégradation gracieuseempêcher lesfautesrepérer tôt leserreursmasquer, répareravant d’être vuesFamilles de tactiques de Bass, Clements et Kazman, Software Architecture in Practice (4e édition, 2021)
Les tactiques de prévention empêchent les fautes d’apparaître, les tactiques de détection repèrent les erreurs et les tactiques de rétablissement empêchent les erreurs de devenir des défaillances visibles.

Compter les « neuf »

Les objectifs de disponibilité s’écrivent généralement sous forme de pourcentage avec un certain nombre de « neuf » : 99,9 %, ce sont « trois neuf ». Il est utile de convertir chaque objectif en temps d’indisponibilité admis, car un pourcentage masque le peu de temps dont vous disposez réellement. Le calcul est simple : indisponibilité = (1 - disponibilité) x période. Une année de 365 jours compte 525 600 minutes, donc 99,9 % autorise 0,001 x 525 600 = 525,6 minutes, soit environ 8,76 heures. Pour un mois de 30 jours (43 200 minutes), cela autorise 43,2 minutes.

Chaque « neuf » supplémentaire divise la marge par dix, alors que le coût d’ingénierie augmente généralement bien plus vite. À 99,99 %, vous disposez d’environ 4,3 minutes par mois : moins que le temps nécessaire pour qu’une personne d’astreinte soit alertée, se réveille, se connecte et comprenne ce qui ne va pas. Au-delà de trois ou quatre « neuf », le rétablissement doit donc être automatique ; les humains sont trop lents pour être dans la boucle.

Indisponibilité admise pour les objectifs de disponibilité courants (année de 365 jours, mois de 30 jours)

DisponibilitéPar anPar moisPar semainePar jour
99 % (deux neuf)3,65 jours (87,6 h)7,2 heures1,68 heure (100,8 min)14,4 minutes
99,9 % (trois neuf)8,76 heures43,2 minutes10,1 minutes1,44 minute
99.95%4,38 heures21,6 minutes5,04 minutes43,2 secondes
99,99 % (quatre neuf)52,6 minutes4,32 minutes1,01 minute8,64 secondes
99,999 % (cinq neuf)5,26 minutes25,9 secondes6,05 secondes0,86 seconde

MTBF, MTTF et MTTR

Trois moyennes relient les défaillances et les réparations. Le temps moyen jusqu’à la défaillance (MTTF) est la durée moyenne de fonctionnement d’un composant avant qu’il ne tombe en panne. Le temps moyen de réparation (MTTR) est la durée moyenne entre la défaillance et le rétablissement du service (certaines organisations lisent le R comme recover ou restore ; l’idée est la même, mais précisez quel chronomètre vous utilisez : à partir de la défaillance, de la détection ou de la première alerte). Le temps moyen entre défaillances (MTBF) est la durée moyenne entre une défaillance et la suivante.

La formule classique en régime permanent est A = MTBF / (MTBF + MTTR). En toute rigueur, pour un système réparable, MTBF = MTTF + MTTR, et l’expression exacte est MTTF / (MTTF + MTTR) : le temps de fonctionnement divisé par le temps de fonctionnement plus le temps d’arrêt. Les manuels écrivent souvent MTBF là où ils veulent dire temps de fonctionnement moyen ; lorsque les réparations sont courtes par rapport au temps entre défaillances, ce qui est généralement le cas, la différence est négligeable. La formule suppose une moyenne sur le long terme et ne dit rien de la répartition des pannes : c’est pourquoi elle se combine bien avec une mesure de fiabilité et avec des percentiles du temps de réparation.

Exemple commenté

Exemple commenté : vaut-il mieux tomber en panne moins souvent ou se rétablir plus vite ?

Le service des commandes d’une app de livraison de repas tombe en panne en moyenne une fois tous les 30 jours (MTBF = 720 heures). Chaque défaillance demande 4 heures de réparation, car il faut alerter un ingénieur, qui doit diagnostiquer le problème et restaurer une base de données à la main. Le métier veut faire mieux que 99,9 %.

Disponibilité actuelle720 / (720 + 4) = 720 / 724 = 0,99448, soit 99,45 %
Indisponibilité actuelle par an(1 - 0,99448) x 8760 h = environ 48,4 heures
Option 1 : doubler le MTBFMeilleur matériel et meilleurs tests ; une défaillance tous les 60 jours. A = 1440 / 1444 = 0,99723 (99,72 %), soit environ 24,3 heures par an
Option 2 : ramener le MTTR à 15 minutesDétection automatisée, secours chaud (hot standby) et failover scripté. A = 720 / 720,25 = 0,99965 (99,97 %), soit environ 3,0 heures par an
Vérification de l’objectifSeule l’option 2 dépasse 99,9 % (8,76 heures par an)

Diviser par deux la fréquence des défaillances a divisé par deux l’indisponibilité. Diviser le temps de réparation par 16 a divisé l’indisponibilité à peu près d’autant, et a permis d’atteindre l’objectif.

Augmenter le MTBF, c’est lutter contre la physique et la complexité : vous ne pouvez pas rendre parfaits les disques, les réseaux ou les personnes. Réduire le MTTR relève en grande partie de l’architecte : détection, automatisation, redondance, petits déploiements réversibles. C’est pourquoi les pratiques d’exploitation modernes se concentrent sur le rétablissement.

Le MTTR est une moyenne et masque les longues traînes. Une seule panne de huit heures parmi de nombreuses pannes de cinq minutes pèse plus que tout le reste de l’année : suivez donc la distribution des durées d’incident, pas seulement la moyenne.

Composants en série et en parallèle

Les systèmes réels sont des chaînes de composants. Si une requête a besoin du niveau web, du serveur d’application et de la base de données, les trois doivent fonctionner : les composants sont en série, et leurs disponibilités se multiplient. Comme chaque facteur est inférieur à un, le produit est toujours plus faible que le maillon le plus faible. Dix composants à 99,9 % chacun donnent 0,99910 = 0,990, soit seulement 99,0 %.

Si, au contraire, une seule de plusieurs copies identiques suffit, les copies sont en parallèle (redondance). L’ensemble ne tombe en panne que lorsque toutes les copies tombent en panne en même temps, si bien qu’on multiplie les indisponibilités : Aparallèle = 1 - (1 - A)n pour n copies identiques. Deux serveurs à 99 % chacun donnent 1 - 0,01 x 0,01 = 99,99 %.

Série et parallèle, chiffres à l’appui

En série, les disponibilités se multiplient ; une paire redondante en parallèle augmente la disponibilité de cet étageA. Trois composants en série : chacun doit fonctionnerNiveau web99,99 %Serveur app99,9 %BD99,95 %0,9999 x 0,999 x 0,9995 = 0,9984 (99,84 %, environ 14 h d’arrêt par an)B. Même chaîne avec deux serveurs app en parallèle : un seul suffitNiveau web99,99 %Serveur app 199,9 %Serveur app 299,9 %BD99,95 %paire : 1 - (0,001 x 0,001) = 0,999999 ; chaîne : 0,9994 (99,94 %, environ 5,3 h par an)
Dupliquer l’étage le plus faible fait passer toute la chaîne d’environ 14 heures d’indisponibilité par an à environ 5,3.

Exemple commenté

Exemple commenté : où dépenser la prochaine livre ?

Suite du schéma. La chaîne de la partie A atteint 99,84 %. Quel changement la rapproche le plus de 99,99 % ?

Ajouter un second serveur d’application0,9999 x 0,999999 x 0,9995 = 0,99940 (99,94 %) : environ 5,3 heures par an
Puis ajouter une réplique de la base de données avec failoverPaire de bases de données : 1 - 0,00052 = 0,99999975. Chaîne : 0,9999 x 0,999999 x 0,99999975 = 0,99990 (99,99 %) : environ 53 minutes par an
Ce qui limite désormais le systèmeLe niveau web unique (99,99 %) représente presque toute l’indisponibilité restante

Le calcul suppose que les copies tombent en panne indépendamment. Deux serveurs dans la même baie, sur la même alimentation électrique, exécutant la même version boguée ou dépendant tous deux d’un même fournisseur DNS partagent des fautes de mode commun et peuvent tomber en panne ensemble. Les gains réels sont toujours inférieurs à ce que suggère la formule.

Il suppose aussi que le failover est instantané et fonctionne toujours. Un secours qui n’a jamais été testé lors d’un vrai failover est un espoir, pas un composant.

Une règle utile des auteurs SRE de Google (Treynor, Dahlin, Rau et Beyer, 2017) : chaque dépendance critique devrait offrir à peu près un « neuf » de plus que le service qui s’appuie sur elle, sinon le service doit pouvoir s’en passer.

Tactiques de disponibilité : détecter, rétablir, prévenir

Bass, Clements et Kazman regroupent les tactiques de disponibilité en trois familles. Ce sont des options de conception, pas une liste de contrôle à appliquer intégralement ; chacune a un coût.

Les trois familles de tactiques de disponibilité

  1. Détecter les fautesHeartbeat (battement de cœur) : un composant envoie périodiquement un message « je suis vivant », et le silence déclenche une action. Ping/écho : un moniteur interroge et attend une réponse. Contrôles de santé (health checks) : un endpoint comme /health qu’un équilibreur de charge ou un orchestrateur interroge régulièrement (un contrôle de vivacité, liveness, demande « le processus tourne-t-il ? » ; un contrôle de disponibilité, readiness, demande « peut-il servir du trafic maintenant ? »). La supervision des taux d’erreur et de la latence, les contrôles de vraisemblance des valeurs et le vote entre répliques qui calculent le même résultat.
  2. Rétablir : préparation et réparationDes secours redondants à trois températures : actif-actif (toutes les copies servent le trafic réel), secours chaud ou tiède (une copie tenue à jour et prête) et réserve froide (démarrée seulement en cas de besoin). Le failover (basculement) fait passer le trafic vers une copie saine. Les nouvelles tentatives traitent les fautes transitoires (avec des limites et un backoff, sinon elles deviennent une surcharge auto-infligée). Le retour arrière (rollback) ramène à un état ou à une version connus comme bons. La dégradation gracieuse maintient le service essentiel sans une fonctionnalité défaillante : la boutique continue de prendre des commandes même si les recommandations sont hors service.
  3. Rétablir : réintroductionRemettre en service un composant réparé en toute sécurité : le faire tourner en mode fantôme (shadow), resynchroniser son état, redémarrer par paliers croissants (un thread, puis un processus, puis une machine).
  4. Prévenir les fautesRetrait du service (sortir un nœud de la rotation pour maintenance, ou planifier un redémarrage avant qu’une fuite mémoire connue ne frappe), transactions (mises à jour en tout ou rien pour qu’un plantage ne puisse pas laisser un état à moitié écrit), modèles prédictifs (remplacer un disque quand ses compteurs d’erreurs grimpent) et prévention des exceptions (typage plus strict, validation des entrées).

Deux formes de redondance

La redondance actif-passif garde un secours qui prend le relais si les heartbeats cessent ; l’actif-actif répartit le trafic réel sur les deux copiesActif-passif (failover)Actif-actifLoad balancerPrimairesert le traficSecoursinactif/tièdeen cas defailover1 heartbeat/secondele secours prend le relais après3 signaux perdusLoad balancerNœud A50 % du traficNœud B50 % du traficles health checks retirent unnœud en panne ; chacun doittenir seul 100 % du trafic
L’actif-passif paie une capacité inactive et un délai de failover ; l’actif-actif utilise toute la capacité, mais chaque nœud doit survivre à la perte de l’autre.

Choisir entre actif-passif et actif-actif

L’actif-passif est plus simple à raisonner, en particulier pour les composants avec état comme une base de données relationnelle avec un seul primaire accessible en écriture. Ses coûts sont le secours inactif, un délai de failover (détection plus promotion, souvent plusieurs dizaines de secondes) et le risque que le secours se soit discrètement désynchronisé. Un piège classique est le split brain (cerveau divisé) : le réseau entre les deux est coupé, chacun croit l’autre mort, et tous deux acceptent des écritures. Pour s’en prémunir, il faut un quorum ou un arbitre externe.

L’actif-actif utilise toute la capacité et n’a pas d’étape de promotion, mais chaque nœud doit être dimensionné pour supporter toute la charge si son partenaire tombe en panne. Deux nœuds fonctionnant chacun à 70 % d’utilisation seront sollicités à 140 % quand l’un d’eux tombe, et le survivant s’effondre : une conception redondante qui échoue quand même. L’actif-actif vous oblige aussi à résoudre la cohérence des données entre les copies, un vaste sujet en soi (voir cohérence, CAP et PACELC).

Reprise après sinistre : RTO et RPO

La redondance au sein d’un seul centre de données ne vous protège pas contre la perte du centre de données entier, d’une région, d’un compte cloud ou de vos données à cause d’un rançongiciel. La planification de la reprise après sinistre s’appuie sur deux chiffres qui devraient venir du métier, pas des ingénieurs. L’objectif de temps de reprise (RTO) est la durée maximale acceptable pour restaurer le service après un sinistre. L’objectif de point de reprise (RPO) est la perte de données maximale acceptable, mesurée en temps : un RPO de 15 minutes signifie que vous pouvez perdre au plus les 15 dernières minutes de modifications.

Ces deux chiffres conduisent à des conceptions et à des coûts très différents. Des sauvegardes nocturnes copiées dans une autre région donnent un RPO pouvant aller jusqu’à 24 heures et un RTO de nombreuses heures (restaurer des téraoctets prend du temps). Une réplication asynchrone continue vers un secours tiède dans une autre région peut donner un RPO de quelques secondes et un RTO de quelques minutes, pour un coût d’infrastructure peut-être doublé. La réplication synchrone peut ramener le RPO près de zéro, mais ajoute à chaque écriture le temps d’aller-retour entre les sites. Les fournisseurs cloud décrivent une échelle de stratégies : sauvegarde et restauration, pilot light (veilleuse), warm standby (secours tiède) et actif-actif multisite, chacune plus rapide et plus coûteuse que la précédente. Les détails relèvent de multirégion et reprise après sinistre.

Quelle que soit la stratégie, une sauvegarde que vous n’avez jamais restaurée n’est pas une sauvegarde. Testez les restaurations à intervalles réguliers et chronométrez-les ; le temps de restauration mesuré est votre RTO réel.

Des objectifs aux SLI, SLO et SLA

Les pratiques d’exploitation modernes expriment la disponibilité avec trois termes liés, traités en détail dans SLI, SLO et budgets d’erreur. Un indicateur de niveau de service (SLI) est la mesure, par exemple la proportion de requêtes de paiement qui aboutissent en moins de 800 ms. Un objectif de niveau de service (SLO) est la cible interne pour cette mesure sur une fenêtre donnée, par exemple 99,9 % sur 30 jours. Un accord de niveau de service (SLA) est un contrat avec les clients qui prévoit des conséquences, comme des avoirs de service, si un niveau n’est pas atteint ; il est normalement fixé moins strictement que le SLO, pour que l’équipe soit avertie avant que le contrat ne soit violé.

Le SLO transforme la disponibilité en budget. Un SLO mensuel de 99,9 % autorise l’échec de 0,1 % des requêtes ; avec 2 millions de requêtes par mois, cela fait 2000 requêtes en échec, soit environ 43 minutes de panne totale. Les équipes dépensent ce budget d’erreur en prises de risque : mises en production, expériences, migrations. Quand il est épuisé, elles ralentissent et investissent dans la fiabilité. Cela relie les « neuf » abstraits de cette section aux décisions du quotidien.

Erreurs courantes

Promettre des « neuf » sans tenir compte des dépendances : un service à 99,99 % bâti sur une seule base de données à 99,9 % ne peut pas atteindre son objectif. Ajouter de la redondance sans supprimer les causes communes (la même version, le même déploiement de configuration, le même certificat qui expire sur tous les nœuds à minuit). Mesurer la disponibilité depuis l’intérieur du système, où tout semble au vert, alors que les utilisateurs ne peuvent pas l’atteindre à cause du DNS ou d’un réseau de diffusion de contenu. Prévoir un failover sans jamais le répéter ; l’ingénierie du chaos existe précisément pour exercer ces chemins délibérément (ingénierie du chaos). Enfin, courir après un chiffre pour lui-même : un système de planning du personnel utilisé aux heures de bureau n’a pas besoin de cinq neuf, et l’argent sera mieux dépensé ailleurs.

Pour rendre la disponibilité testable, écrivez-la sous forme de scénario (section 2.3) : Lorsque le serveur de base de données primaire tombe en panne aux heures de pointe, le système le détecte en moins de 10 secondes et recommence à accepter des commandes en moins de 60 secondes, sans perdre aucune commande confirmée. Chaque élément de cette phrase devient un choix de conception et un test.

Vérifiez votre compréhension

Combien de minutes d’indisponibilité un objectif de 99,95 % autorise-t-il sur un mois de 30 jours ?

0,0005 x 43 200 = 21,6 minutes.

Deux équilibreurs de charge indépendants ont chacun une disponibilité de 99,5 %, et chacun peut supporter tout le trafic. Quelle est la disponibilité de la paire ?

1 - (0.005 x 0.005) = 1 - 0.000025 = 99.9975%.

Pourquoi l’ajout d’un second serveur identique peut-il apporter bien moins que ce que prédit la formule du parallèle ?

Parce que les copies peuvent partager des causes communes de défaillance, comme la même version, la même configuration, la même alimentation, le même réseau ou la même dépendance, et ne tombent donc pas en panne indépendamment ; le failover lui-même peut aussi être lent ou défectueux.

Les sauvegardes d’une équipe ont lieu toutes les 6 heures et une restauration complète prend 3 heures. Quels sont, dans le pire des cas, leurs RPO et RTO effectifs ?

Un RPO pouvant aller jusqu’à 6 heures de données perdues, et un RTO d’au moins 3 heures, auquel s’ajoute le temps de détecter le sinistre et de décider de restaurer.

Suivant · 2.6Modifiabilité et déployabilitéComment spécifier le changement et concevoir pour lui : ce qui change, qui le change et quand, les tactiques qui limitent les effets en cascade, la testabilité par la contrôlabilité et l’observabilité, la déployabilité et les métriques de livraison DORA.Continuer →

Sources et lectures complémentaires

Une question sur cette section ? ArchitectBot, l’assistant d’étude IA du cours, répond d’abord à partir du cours.

Demander : « Notre étape de paiement dépend d’un prestataire de paiement dont le SLA est de 99,9 %. Comment offrir à nos propres clients une disponibilité de 99,95 % ? »