🌆 Dimanche, vers 19h :

— Bon eh ben le serveur tourne à nouveau.
— En tout on a été HS… 2 heures 24 minutes.
— Ce qu’il faudrait, c’est revoir ce programme. C’est la troisième fois en 6 mois !
— Ecoute, repose toi bien, et on en reparle plus tard. Demain il fera jour.

🏙 Lundi matin :

— Encore un grand merci à Sophia et Daniel pour hier. Comment avez-vous résolu le problème cette fois-ci ?
— Tu as lu mon rapport d’incident ?
— Oui, mais je pense que ça vaut le coup que tu partages à l’équipe.
— Simple : le dispatch est tombé hier en fin d’après midi, pour cause de plus de mémoire. La raison on s’en doute : des fonctions qui oublient de rendre la mémoire allouée.
— C’est tout bête…
— En effet. J’ai mentionné ce problème en revue il y a 3 mois. La décision ça été : on verra.
— Daniel, j’ai jamais dit “on verra”, j’ai dit : on ne sait pas si c’est ce qui impacte le fonctionnement du serveur, est-ce qu’on peut attendre d’y voir un peu plus clair ?
— En tout cas, j’ai corrigé la fonction ce matin, le patch est prêt pour aller en prod.
— On peut savoir ce que tu as fait ?
— Tu vas me détester Sophia : je fais un sysctl et je log une notification si le serveur manque de mémoire.
— 🤦‍♀️
— Tu sais comme moi qu’on ne peut pas revoir ce code en profondeur pour l’instant.
— Alors qu’on pourrait instrumenter le code sous MemScan Pro Ultra en quelques jours…
— Je sais…
— Et si on écrivait quelques tests également dans cette maison ça nuirait pas.🤬
— Bon ne nous énervons pas.
— De toutes façons y a pas de débat : on va refondre ce truc archaïque avec un vrai langage, moderne et tout, qui gère la mémoire pour nous.
— Quand ?
— That is the question, quand.

Russell Ackoff distingue 4 façons de traiter un problème :

  • absolve : ignorer le problème en espérant le voir disparaître avec le temps
  • resolve : trouver une solution “suffisante”, ou bien essayer d’identifier la cause, et supprimer cette cause afin de revenir à un état précédent
  • solve : faire ce qui produit le meilleur résultat possible, en s’appuyant sur la recherche et l’expérimentation
  • dissolve : éliminer le problème par reconception entière du système ayant le problème

À l’échelle du système pour lequel Sophia et Daniel font des heures sup’ le dimanche, les traitements absolve et resolve sont les plus couramment utilisés, car adaptés à l’approche court-termiste qui caractérise le management de ce système. Du fait de cette approche, les traitements solve et dissolve sont remis aux Calendes Grecques, ou restent dans le domaine de l’Impensé.

Court Terme

  • on attend 🤸‍♀️🕳
  • ficelle et sparadrap 🧶🩹

Moyen Terme

  • on met en œuvre la meilleure solution 💡📐

Long Terme

  • on refond 🌌🔭

Un système legacy, ce n’est pas seulement des technos obsolètes, ou une base de code comme une forêt de ronces. C’est aussi un état de déconnection de l’équipe Métier/Technique/Management, qui fait que le système est coupé de son avenir.

publié sur Linked In le 28/04/2023