Le principe d’Anna Karenine

Le principe d’Anna Karenine est tiré de cette fameuse phrase du roman de Tolstoï : « Toutes les familles heureuses se ressemblent. Les familles malheureuses sont malheureuses chacune à leur manière. » En d’autres termes, le succès demande que plusieurs conditions soient réunies. Une seule condition manquée est suffisante pour conduire à l’échec.

Et on peut appliquer ce principe à de nombreux systèmes, y compris en informatique.

Des systèmes de type « Karenine » ne fonctionnent que si TOUS les éléments marchent comme prévu. Si un seul élément manque, le système va échouer.

Mais tous les systèmes ne suivent pas ce principe, en particulier ceux centrés sur les êtres humains. Prenons l’exemple suivant : quelqu’un veut noter quelque chose sur un bout de papier. Pour qu’il y arrive, il faut que TOUTES les méthodes essayées échouent : pas de stylo, ni immédiatement disponible, ni chez le voisin. L’être humain va même tenter beaucoup de choses « non scriptées », comme demander à un inconnu dans la rue (même s’il n’a jamais fait une telle chose) ou s’appeler avec son portable pour laisser la note sur sa propre messagerie vocale.

Les systèmes informatiques, par contre, sont dans leur très grande majorité de type « Karenine ». Un programme fonctionnant comme un script, il faut que TOUS les éléments du script fonctionnent sans accroc. Si un seul pépin survient, le programme échoue. Dans le meilleur des cas il affiche une erreur, dans le pire des cas il plante. On pourrait rétorquer qu’un script peut prendre en compte plusieurs scénarios, mais coder les diverses possibilités en dur ne gère pas l’imprévu.

En fait, n’importe quel système est un peu « Karenine » et un peu « non-Karenine » et est une conjonction de « et » et de « ou ». Par exemple :

Pour pourvoir écrire une note il faut qu’on ait :
(un stylo OU un crayon OU que le voisin ait un stylo) ET
(que l’on ait du papier OU que le voisin ait du papier)

Un système est donc plus ou moins de type « Karenine ». Mais cela dépend également du point de vue où l’on se place. Un virus en attachement d’un email qui tente de se propager sur une machine ne réussira que si plusieurs conditions sont remplies (système « Karenine ») : que le serveur d’email ne le détecte pas, que l’utilisateur exécute l’attachement, que la plate-forme soit compatible avec le virus, que l’anti-virus local ne le détecte pas, etc. Si l’on se place du point de vue de l’utilisateur par contre, sa machine n’est corrompue que si toutes les conditions précédemment citées sont réunies (non-Karenine). Mais si l’on se place du point de vue de l’utilisateur sur le long terme, on retombe sur un système « Karenine » : pour que la machine ne soit pas corrompue il faut que TOUTES les attaques soient déjouées.

L’informatique a cependant quelques cas de systèmes « non-Karenine ». Les systèmes haute disponibilité sont un exemple. Les disques durs de type RAID 5, par exemple, stockent les données sur une séries de disques, mais ont un disque dur supplémentaire utilisé comme disque redondant. Si n’importe quel des disques tombe en panne, le RAID peut recréer les données du disque perdu avec les disques restants. L’idée étant que les probabilités que deux disques lâchent en même temps sont quasi-nulles.

Autre exemple : Internet. TCP et IP, deux des principaux protocoles utilisés par Internet, gèrent les pannes. IP gère le routage des paquets sur le réseau. Si une node du réseau est hors service (même pendant une communication), le paquet est rerouté et prend un chemin différent. De la même manière, TCP s’assure que tous les paquets d’un même message sont bien arrivés, les remet dans l’ordre si besoin est, et redemande à l’expériteur de renvoyer un paquet s’il est perdu.

Quel type de système est le plus stable ?

Un système « non-Karenine » est en théorie bien plus stable qu’un système « Karenine ». En pratique cependant, il est difficile de trancher.

La raison est dûe à la nature humaine : un système « non-Karenine » donne en effet un faux semblant de sécurité. Prenons l’exemple de l’accident de la centrale nucléaire de Three-Mile Island de 1979 (dans l’Est des Etats-Unis). L’accident a été causé parce qu’une série de pannes se sont superposées. Un des réacteurs tournait à pleine capacité car l’autre réacteur était éteint pour refaire le plein ; Un défaut mécanique a fait qu’une des pompes n’a pas fonctionné ; Il y avait d’autres pompes, mais parce que les valves ont été fermées pour maintenance elles n’ont pas pu fonctionner, et ainsi de suite.

Quelles sont les chances pour que cela arrive ? Sur le papier, très peu. Mais étant donné que l’on avait affaire à un système de type « non-Karenine » avec plusieurs systèmes de secours, le personnel n’a pas hésité à effectuer en même temps la maintenance de deux des éléments critiques (un des réacteurs et les valves)

Même cas pour un disque RAID 5. Les probabilités pour que deux disques lâchent en même temps sont infimes, non ? Infimes mais pas pas nulles. Quand on prend le nombre de disques RAID 5 déployés dans le monde, il y a statistiquement bien plus de chances qu’une unité RAID quelque part perde deux disques à peu d’intervalle (auquel cas toutes les données du RAID sont perdues). Et si l’administrateur prend son temps pour remplacer le disque défectueux (pourquoi se presser, ce n’est pas tous les jours qu’un disque tombe en panne) le risque augmente sensiblement. Le risque total n’est pas énorme, mais l’utilisateur qui perd ses données ne sera pas réconforté pour autant – d’autant plus que le RAID 5 était sensé éviter ce genre d’erreur ! Une sauvegarde ? Pourquoi une sauvegarde ? Les données sur le RAID étaient sensées être sécurisées.

C’est la raison pour laquelle les gens perdent tant de données chaque année. Tant que ça fonctionne on ne se soucie pas de faire une sauvegarde.

Pour prendre un exemple personnel, je ne me suis décidé à être sérieux avec la sauvegarde de mes données le jour où j’ai acheté un ordinateur équipé de deux disques en RAID 0. Si cette configuration est très rapide, si l’un seul des deux disques lâche je perds toutes mes données, doublant le risque de panne (système « Karenine »). C’est ce risque supplémentaire qui m’a fait me remuer pour mettre en place un système de sauvegarde. Pendant des années, si mon disque avait lâché j’aurais perdu des données relativement critiques.

Les systèmes Karenine sont beaucoup moins stables, mais de ce fait nous mettent la pression pour prendre les risques plus au sérieux. Les systèmes informatiques qui doivent avoir un temps d’arrêt minime sont efficaces uniquement car/quand les équipes d’administration sont paranoïaques. Pour une haute disponibilité de haut niveau, il faut non seulement plusieurs systèmes redondants mais également des procédures strictes. Au delà d’un certain temps minimum d’arrêt par an, il faut prendre en compte les catastrophes naturelles, les cas de malveillance (piratage, ex-employé revanchard), les erreurs humaines, etc. Certains poussent le vice jusqu’à utiliser différentes versions du système d’exploitation et leur application sur les différentes machines de secours (au cas où il s’agisse d’un bug au niveau du système d’exploitation, une machine de secours avec le même OS risque de reproduire les mêmes résultats).

Mais on n’applique que rarement de telles procédures, car elles sont souvent trop contraignantes face au risque qui semble lointain… Dans les années 80, un satellite soviétique avait eu pour ordre d’effectuer une rotation. Cette rotation avait mis à l’ombre ses panneaux solaires, privant le satellite de toute source de courant et le condamnant pour toujours. L’ordre avait pourtant été signé par une douzaine de « responsable », chacun faisant confiance aux autres responsables.

Des théories expliquent que l’on ne peut pas arriver à un risque zéro, car dés que les risques diminuent, la nature humaine contrebalance en prenant plus de risques. Inventez une voiture qui évite certains accidents, et les gens seront moins prudents sur les routes…

Explore posts in the same categories: Inertie

5 commentaires sur “Le principe d’Anna Karenine”

  1. Alex Says:

    J’ai découvert votre blog par un pure hasard (merci Google) et je me dois de vous dire que je trouve vos articles excellents, de par la richesse de l’écriture comme de la construction plus qu’ingénieuse de vos articles. Je pense m’offrir votre ouvrage sous peu, en ésperant qu’il soit de la même trempe que votre blog. Continuez🙂 svp.


  2. […] Des succès planétaires tels que Google, Microsoft ou Facebook suivent le principe d’Anna Karenine: ils ne s’expliquent que par une combinaison de plusieurs facteurs, l’un d’entre […]


  3. […] un précédent article, j’expliquais pourquoi on ne peut pas avoir de risque zéro, car dés que l’on diminue […]


  4. […] de certains éléments du réseau. En d’autres termes, ce sont des mécanismes de type non-Karenine, c’est-à-dire que pour qu’une panne survienne il faut que plusieurs problèmes se […]


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s


%d blogueurs aiment cette page :