On peut caractériser un système par rapport à sa tolérance à la panne. En informatique, les choses sont binaires. C’est vrai ou faux. Le courant passe ou ne passe pas. Dans ces conditions, l’informatique ne serait pas tolérant aux pannes. Pourtant, des erreurs se produisent quotidiennement dans les services que vous utilisez et vous ne vous en apercevez pas.
Les pannes peuvent être de plusieurs natures. Il peut s’agir d’une défaillance physique du matériel (disques durs, câbles réseaux, défaut électrique, …). La défaillance peut aussi être logicielle (cas non prévus, erreurs du programmeur, …). Afin de pallier à ces pannes, des stratégies sont mises en place.
Commençons par les pannes matériels. Prenons le disque dur. Vous pensez que vos données y sont en sécurité. Pourtant, plus le temps passe, plus le disque dur peut avoir une panne et perdre vos données. La solution, la sauvegarde. Qu’elle soit sur un autre disque, sur un autre support, sur un serveur à proximité ou à l’autre bout du monde, la sauvegarde est la méthode pour se protéger de cette panne.
Maintenant, votre disque dur ne tombe pas en panne plusieurs fois par jours. Par contre, les pannes réseaux sont quotidiennes. Et pourtant, vous recevez vos mails, vous accédez à vos réseaux sociaux, vous visionnez des vidéos, … sans que le service semble interrompus. Une erreur classique, lorsque vous demandez un fichier, alors qu’il traverse le monde pour vous parvenir, des erreurs se glissent dedans et le rendent illisibles.
Comment un fichier peut-il arriver entier et correct dans ces conditions ? Suivant sa taille, avant de traverser Internet, le fichier va être découpé en petits morceaux (des paquets). Lorsque le paquet est transmis d’un nœud à l’autre, il se voit ajouter une donnée calculée. Si le nœud receveur ne trouve pas la même valeur, il demande au nœud émetteur de renvoyer le paquet.
Les équipements informatiques sont des êtres délicats. Ils ont besoin d’une tension électrique précise et ne supportent pas les variations brutales. C’est pour cela que les alimentations multiplient les condensateurs pour assurer un courant idéal. Si nécessaire, vous pouvez ajouter un onduleur pour protéger vos équipements informatiques.
La solution pour pallier les erreurs matérielles est souvent dans la redondance des équipements. Redondance de supports de stockage, de chemins d’accès à travers Internet ou toute autre caractéristique dont la perte serait critique. Bien sûr, cette stratégie a toujours un coût. Mais le prix de cette sécurité matérielle est inférieure à la perte engendrée par un incident.
Les défaillances logicielles sont toujours liées à l’humain. Lorsque le client définit son besoin auprès du concepteur, il pense au cas courant. Les cas à la marge sont systématiquement oubliés. Un bon concepteur saura faire prendre conscience de cela et aidera son client à définir un maximum de situations (Maïeutique mode d’emploi) pour éviter qu’un jour l’utilisateur ne se retrouve bloqué.
Imaginons une application de suivi des élèves dans l’enseignement supérieur. Chaque année, un élève passe un examen et suivant ses résultats, passe ou non dans l’année supérieure. Si on considère l’application terminée, il sera alors impossible de saisir les élèves qui se réorientent, ceux qui quittent la formation et même ceux qui arrivent. Il faudrait être un ‘terrible’ analyste pour oublier toutes ces situations.
Parlons maintenant de l’erreur de programmation. Avant d’être proposé aux utilisateurs finaux, un logiciel est testé, validé, … et pourtant chaque année, de mauvais copier/coller provoquent des catastrophes non anticipées par les développeurs. Chers confrères développeurs, mettons en place les gestes barrières et testons correctement les programmes que nous créons.
Souvenons-nous de ce type qui à reçu 1531 mail de l’Hadopi et inculpé 7 fois pour contrefaçon, parce qu’un développeur de Numéricable avait mis en dur son adresse IP lorsqu’il ne connaissez pas la vrai adresse de la crapule.
La qualité des programmes dépend du travail des analystes et développeurs qui sont intervenus. Ce n’est pas par hasard que les géants des technologies de l’information emploie par centaines des ingénieurs très bien payés pour s’occuper, par exemple, d’une simple application de photographie. L’image d’un logiciel raté est catastrophique pour l’entreprise à l’origine du ‘bug’.
Ainsi, malgré sa nature, l’informatique est devenu plus tolérant aux pannes et offre un service continu qu’importe la situation. Ces stratégies sont nommés protocoles. Et j’en détaillerai certains.