Fondé en 2008 · Édition numérique · 15 juin 2026

SMB IT Journal

La ressource informatique pour les petites entreprises

Français
Architecture

Le maillon le plus faible : comment les dépendances en chaîne influent sur le risque d’un système

Lorsqu’on évalue les scénarios de risque d’un système, il est très facile de négliger les dépendances « en chaîne ». Nous sommes formés à examiner le risque au niveau d’un « nœud » en demandant « quelle est la probabilité que cette seule chose tombe en panne ». Mais le risque d’un système est bien plus compliqué que cela.

Dans la plupart des systèmes, certains composants dépendent d’autres composants. L’endroit le plus courant où nous observons cela est la conception du stockage pour les serveurs, mais cela se produit dans la conception de tout système. Un autre bon exemple est la façon dont les applications web ont besoin à la fois d’hôtes applicatifs et d’hôtes de base de données pour fonctionner.

Le plus simple est d’expliquer les dépendances en chaîne à l’aide d’un exemple. Nous allons examiner une conception de virtualisation standard avec stockage SAN afin de comprendre où se situent les frontières des domaines de défaillance, où existent les dépendances en chaîne et quel rôle joue la redondance dans l’atténuation du risque au niveau du système.

Dans une conception SAN (réseau de stockage) standard pour la virtualisation, vous avez des hôtes de virtualisation (que nous appellerons les « serveurs » par souci de simplicité), des commutateurs SAN (des commutateurs dédiés au réseau de stockage) et les baies de disques elles-mêmes. Chacune de ces trois « couches » dépend des autres pour que le système, dans son ensemble, fonctionne. Si nous avions l’ensemble le plus simple possible, avec un serveur, un commutateur et une baie de disques, nous avons très clairement trois appareils représentant trois points de défaillance distincts. La défaillance de l’un quelconque des trois entraîne la défaillance de l’ensemble du système. Aucun élément n’est utile à lui seul. Il s’agit d’une dépendance en chaîne, et la chaîne n’est jamais plus solide que son maillon le plus faible.

Dans notre exemple simpliste, chaque appareil représente un domaine de défaillance. Nous pouvons atténuer le risque en améliorant la fiabilité de chaque domaine. Nous pouvons ajouter un second serveur et mettre en œuvre une stratégie de haute disponibilité ou de tolérance aux pannes au niveau de la couche de virtualisation afin de réduire le risque de défaillance du serveur. Cela améliore la fiabilité d’un domaine de défaillance, mais en laisse deux intacts et tout aussi risqués qu’auparavant. Nous pouvons ensuite traiter la couche de commutation en ajoutant un commutateur redondant et en configurant une stratégie de chemins multiples pour gérer la perte d’un seul chemin de commutation, réduisant le risque à cette couche. Désormais, deux domaines de défaillance ont été traités. Enfin, nous devons traiter le domaine de défaillance du stockage, ce qui se fait, de manière similaire, en ajoutant de la redondance au moyen d’une seconde baie de disques mise en miroir avec la première et capable de basculer de façon transparente en cas de défaillance.

Maintenant que nous avons renforcé notre système, nous avons toujours trois domaines de défaillance dans une chaîne de dépendances. Ce que nous avons fait, c’est rendre chaque « maillon » de la chaîne, chaque domaine de défaillance, particulièrement résilient à lui seul. Mais la chaîne existe toujours. Cela signifie que le système, dans son ensemble, est bien moins fiable que ne l’est à lui seul n’importe quel domaine de défaillance au sein de la chaîne. Nous avons réalisé quelque chose de bien meilleur que notre point de départ, mais nous avons toujours de nombreux domaines de défaillance. Ces risques s’additionnent.

Ce qui est difficile dans la détermination du risque global, c’est que nous devons évaluer le risque de chaque élément, puis déterminer le nouveau risque après atténuation (par l’ajout de redondance), puis trouver le risque cumulé de chacun des domaines de défaillance réunis en chaîne afin de déterminer le risque total de l’ensemble du système. Il est extrêmement difficile de déterminer le risque au sein de chaque domaine de défaillance, car la manière d’atténuer le risque joue un rôle significatif. Par exemple, une grappe de baies de disques de stockage qui bascule trop lentement peut entraîner une défaillance globale du système même lorsque la grappe de stockage elle-même semble avoir fonctionné correctement. Même définir clairement une défaillance peut donc se révéler ardu.

Il est souvent tentant d’adopter une évaluation du risque « par le haut », ce qui est très dangereux, mais très courant chez les personnes qui ne pratiquent pas régulièrement l’évaluation des risques. La tendance ici est de considérer le risque en ne regardant que le domaine de défaillance « le plus haut » — généralement les serveurs dans un cas comme celui-ci, et en ignorant tous les risques situés sous ce point, les considérant comme « sous le capot » plutôt que comme faisant partie de l’évaluation du risque. Il est facile d’ignorer les composants plus techniques, moins exposés et moins bien compris comme le réseau et le stockage, et de se concentrer sur les aspects de fiabilité relativement faciles à comprendre et fortement mis en avant par le marketing de la couche supérieure. Cette « vue par le haut » signifie que les risques sous le niveau supérieur sont occultés et généralement ignorés, conduisant à un risque élevé sans une bonne compréhension du pourquoi.

Comprendre le concept des dépendances en chaîne explique pourquoi des systèmes complexes, même dotés de stratégies d’atténuation du risque complexes, se révèlent souvent bien plus fragiles que des systèmes plus simples. Dans notre exemple ci-dessus, nous pourrions faire plusieurs choses pour « réduire » la chaîne, aboutissant à un système plus fiable dans son ensemble.

Le composant le plus évident qui peut être réduit est le domaine de défaillance du réseau. Si nous devions retirer entièrement les commutateurs et connecter le stockage directement aux serveurs (ce qui n’est pas toujours possible, bien sûr), nous éliminerions de fait un domaine de défaillance entier et retirerions un maillon de notre chaîne. Désormais, au lieu de trois chaînes, dont chacune présente un certain potentiel de défaillance, nous n’en avons que deux. Plus simple est préférable, toutes choses égales par ailleurs.

Nous pourrions, en théorie, également réduire le domaine de défaillance du stockage en passant d’un stockage externe à l’utilisation d’un stockage local aux serveurs eux-mêmes, nous faisant essentiellement passer de deux domaines de défaillance à un seul domaine de défaillance — le seul domaine restant, bien sûr, portant davantage de complexité qu’il ne le faisait avant la réduction, mais la complexité globale du système étant grandement réduite. Là encore, ceci avec tous les autres facteurs restant égaux.

Une autre approche à envisager consiste à rendre les nœuds individuels plus fiables à eux seuls. Il est à la mode aujourd’hui d’examiner les systèmes de plus grande taille et d’aborder l’atténuation du risque de cette manière, en ajoutant des nœuds redondants et peu coûteux pour ajouter de la fiabilité aux domaines de défaillance. Mais, traditionnellement, ce n’était pas la voie par défaut empruntée vers la fiabilité. Il était bien plus courant par le passé, comme le montre l’ancienne prévalence des ordinateurs centraux et des systèmes de classe similaire, d’intégrer un haut degré de fiabilité au sein d’un nœud unique. Les ordinateurs centraux et les systèmes de stockage haut de gamme, par exemple, le font encore aujourd’hui. Cela peut en fait être une approche extrêmement efficace, mais elle ne répond pas à de nombreux scénarios et est généralement extrêmement coûteuse, souvent amplifiée par la nécessité de faire maintenir les systèmes partiellement, voire entièrement, par l’éditeur. Cela ne se révèle payant que dans des circonstances de niche particulières et n’est pas pratique à une échelle plus générale.

Ainsi, dans tout système de cette nature, nous avons trois stratégies clés d’atténuation du risque à envisager : améliorer la fiabilité d’un nœud unique, améliorer la fiabilité d’un domaine unique ou réduire le nombre de domaines de défaillance (maillons) dans la chaîne de dépendances. Combiner ces stratégies comme il convient peut nous aider à atteindre le niveau d’atténuation du risque approprié à notre scénario d’affaires.

Là où réside la véritable difficulté, et où elle demeurera, c’est dans la comparaison des différentes stratégies d’atténuation du risque. Le risque d’un nœud unique peut généralement être estimé avec un certain niveau de confiance. Une stratégie de redondance au sein d’un domaine unique se prête bien moins à l’estimation — certaines stratégies de redondance sont hautement efficaces, créant des domaines de défaillance extrêmement fiables, tandis que d’autres peuvent en réalité se retourner contre soi et réduire la fiabilité d’un domaine ! La complexité qui accompagne souvent les stratégies de redondance n’est jamais sans réserve et, si elle finit généralement par être payante, elle apporte rarement le degré de bénéfice de fiabilité initialement escompté. Estimer le risque d’une chaîne de dépendances est par conséquent d’autant plus difficile qu’il requiert une compréhension claire des risques associés à chacun des domaines de défaillance individuellement, ainsi qu’une compréhension de la possibilité de défaillance existant aux frontières des domaines (comme la défaillance liée au délai de basculement du stockage évoquée précédemment).

Explorons les enjeux entourant la détermination du risque dans deux approches très courantes d’un même scénario, en nous appuyant sur ce que nous avons abordé ci-dessus.

Deux exemples extrêmes de la même situation que nous évoquons sont un serveur unique avec stockage interne utilisé pour héberger des machines virtuelles, par opposition à une « chaîne » de six appareils comportant deux serveurs et utilisant une solution de haute disponibilité au niveau de la couche serveur, deux commutateurs avec redondance au niveau de la couche de commutation et deux baies de disques offrant une haute disponibilité au niveau de la couche de stockage. Si nous modifions ici un facteur d’importance quelconque, nous pouvons généralement fournir une estimation assez claire du risque relatif — si l’un des domaines de défaillance est dépourvu de redondance fiable, par exemple — nous pouvons assez clairement déterminer que le serveur unique est le système globalement le plus fiable, sauf dans les cas où un degré extrême de fiabilité de nœud unique est attribué à un nœud unique, ce qui est généralement une stratégie financièrement impraticable. Mais avec chaque domaine de défaillance maintenant sa redondance, nous sommes contraints de comparer les risques relatifs de la fiabilité intra-domaine (la chaîne redondante) et de la fiabilité inter-domaines (la chaîne réduite, le serveur unique).

Avec les deux approches entièrement différentes, il n’existe aucun moyen raisonnable d’évaluer les risques comparatifs des deux moyens d’atténuation du risque. Il est généralement admis que l’approche à six nœuds (ou plus) avec une atténuation du risque intra-domaine poussée est la plus fiable des deux approches, et c’est presque certainement vrai, de manière générale. Mais ce n’est pas toujours vrai, et il est rare que cette approche surpasse la stratégie du nœud unique avec une marge véritablement significative, tout en coûtant couramment quatre à dix fois plus cher que la stratégie du serveur unique. C’est potentiellement un coût très élevé pour ce qui est probablement un faible gain de fiabilité et un faible risque potentiel d’une perte de fiabilité. Chaque pièce de redondance supplémentaire ajoute une complexité qu’un humain doit mettre en œuvre, surveiller et maintenir, et avec la complexité et l’interaction humaine vient de plus en plus de risque. Éviter l’erreur humaine peut souvent être plus important qu’éviter la défaillance mécanique.

Nous devons aussi considérer le coût de la reprise. Si une défaillance doit survenir, il est généralement trivial de se remettre de la défaillance d’un système simple. Un système extrêmement complexe, une fois tombé en panne, peut exiger un degré d’efforts considérable pour être restauré dans un état de fonctionnement. Les systèmes complexes requièrent aussi des degrés d’expérience et de confiance bien plus larges et plus profonds pour être maintenus.

Il n’existe pas de réponse simple pour déterminer la fiabilité des systèmes. Les systèmes modernes de diffusion de l’information sont tout simplement trop vastes et trop complexes, comportant trop de facteurs indéterminables pour pouvoir être évalués dans tous les cas. Avec une bonne compréhension des dépendances en chaîne, toutefois, et une compréhension des stratégies d’atténuation du risque, nous pouvons prendre des mesures concrètes pour déterminer des niveaux de risque relatifs approximatifs, voir comment des scénarios de risque similaires se comparent en termes de coût, identifier les points de fragilité, reconnaître les domaines de défaillance et les chaînes de dépendances, et apprécier comment des changements dans la conception du système nous rapprocheront ou nous éloigneront clairement de la fiabilité.

Mots-clésdependency chain

Publicité

SMB IT Journal — the IT resource for small business