Les équipements de télécommunications doivent fonctionner pendant des années sans s'arrêter, même pendant les mises à niveau. En 1986, Joe Armstrong et ses collègues chez Ericsson ont commencé à construire un langage pour ce monde : Erlang, avec des processus légers, le passage de messages et le remplacement de code à chaud au lieu de la mémoire partagée et des threads.

La preuve phare était le commutateur ATM AXD301, annoncé en 1998. Il exécute Erlang distribué sur du matériel dupliqué, s'étend de 10 à 160 Gbit/s, et est conçu pour que le matériel et le logiciel puissent être modifiés sans interrompre le trafic. En 2001, il comptait 1,13 million de lignes d'Erlang dans 2 248 modules, et il a atteint une fiabilité observée de 99,9999999 %.

La philosophie « laisser planter » d'Erlang, avec des arbres de superviseurs qui redémarrent les processus défaillants, a également été un gain de productivité : l'histoire HOPL rapporte une multiplication par quatre de la productivité des développeurs sur le projet. L'année même du lancement de l'AXD301, Erlang a été interdit pour les nouveaux produits Ericsson ; en décembre 1998, il a plutôt été publié en open source.

Laisser les petits processus planter ; les superviseurs les redémarrent

L'isolation des processus empêche une seule défaillance de faire tomber le système

Les superviseurs redémarrent automatiquement les défaillances, sans intervention humaine

La mise à niveau du code à chaud élimine l'indisponibilité comme contrainte de déploiement

Le modèle à petits processus gère à moindre coût des milliers d'appels simultanés

Pour les systèmes qui ne doivent jamais s'arrêter, inversez la stratégie d'erreur : attendez-vous à des défaillances, isolez-les dans de petits processus et rendez la récupération automatique, afin que le système soit conçu pour survivre plutôt que pour être parfait.

La publication d'Erlang en open source en 1998 l'a diffusé bien au-delà d'Ericsson : le même modèle fait aujourd'hui tourner RabbitMQ, WhatsApp de Meta, et les systèmes Elixir/Discord. Au sein d'Ericsson, l'AXD301 est devenu l'un des nouveaux produits les plus réussis de l'entreprise, et la thèse l'a documenté comme l'un des produits les plus fiables qu'Ericsson ait jamais fabriqués.

VÉRIFIEZ LES SOURCES

Les sources

  1. Making Reliable Distributed Systems in the Presence of Software Errors (PhD thesis) Royal Institute of Technology, via erlang.org · erlang.org
  2. A History of Erlang (HOPL III) ACM SIGPLAN, mirror at labouseur.com · labouseur.com
  3. A (Very) Brief History of Erlang Vonage Developer Blog · developer.vonage.com ·