https://a.storyblok.com/f/270183/1368x665/fab21622a7/25jul_dev-blog_erlang-history.jpg

Une (très) brève histoire d'Erlang

Temps de lecture : 5 minutes

The Erlang LogoBien qu'elle ait été lancée en 1986 (à peine deux ans après la naissance de l'auteur), la ), je n'ai connu que Erlang que vers 2017. En tant que développeur d'applications Web, je l'ai rencontré dans ce que beaucoup de scénarios probables seraient pour tout le monde : RabbitMQ. À ce moment-là, nous utilisions RabbitMQ dans le cadre d'un projet qui comportait un processus ETL. Nous avions besoin de vitesse, de concurrence et d'un verrouillage sécurisé des enregistrements. Plus tard, j'ai découvert que la raison pour laquelle RabbitMQ pouvait atteindre ces objectifs était qu'il avait été écrit spécifiquement en Erlang pour répondre à ces exigences.

Étant donné qu'il a été le deuxième salaire moyen le plus élevé en 2025, qu'est-ce que c'est exactement ?qu'est-ce que c'est exactement, et quels sont les cas d'utilisation spécifiques ?

Le paysage

Le point de départ de toute histoire consiste à déterminer où se situe le fossé. PHP est apparu comme un outil de script pour créer dynamiquement des pages HTML, JavaScript a vu le jour sous le nom de LiveScript pour permettre l'exécution dans le navigateur. Depuis 1995, ces deux langages ont totalement évolué jusqu'à devenir méconnaissables en raison de la nature de leurs exigences. De la même manière, Erlang a été créé spécifiquement pour les communications. À l'époque, les télécommunications avaient besoin d'un code capable de gérer une mise à l'échelle massive, une concurrence ultra-élevée et une exécution en temps réel. Erlang est né du développement du commutateur ATM commutateur ATM AXD301créé par Ericssonqui a besoin de ce que l'on appelle une disponibilité "à neuf neuf". En termes simples, il s'agit d'un commutateur matériel dont le logiciel exige un taux de disponibilité de 99,9999999%. Un tel langage de programmation n'existait pas.

L'évolution

Erlang a vraiment commencé à prendre de l'ampleur lorsque Ericsson a décidé de rendre le langage open source en décembre 1998. Le langage est sorti, et avec lui des projets externes. À partir de là, des documents ont progressivement vu le jour pour donner les grandes lignes de l'utilisation de ce langage et des cas d'utilisation les plus importants.

"Let It Crash"

Photograph of something on fireLet it burn!Voici un nouveau concept pour vous : vous êtes encouragé à laisser les processus échouer. Je viens d'un pays où la programmation défensive est absolument essentielle à la création d'applications. C'est à ce moment que "je comprends", parce qu'Erlang n'est pas conçu comme un langage classique de backend basé sur un serveur. La raison pour laquelle il est acceptable pour les crashs est que les développeurs sont encouragés à écrire du code en petits morceaux qui peuvent tous être exécutés de manière isolée. L'application doit être exécutée par des systèmes de supervision qui recherchent les threads ou les processus bloqués, qui sont ensuite redémarrés. C'est cette philosophie qui est à l'origine de la haute disponibilité : il importe peu qu'une charge utile ne soit pas achevée, Il suffit que les données nécessaires soient transmises à un moment ou à un autre. C'est ainsi qu'Erlang s'est imposé sur les marchés verticaux des communications : la résilience qu'il crée est la raison pour laquelle RabbitMQ, un client de messagerie, est écrit en Erlang. Cela explique aussi pourquoi WhatsApp de Meta est écrit en Erlang. aussi pourquoi WhatsApp de Meta est écrit en Erlang.ou pourquoi l'application de messagerie populaire Discord est écrite en Elixir. (un Erlang légèrement modifié qui fonctionne toujours dans la VM BEAM), et pourquoi j'avais déjà une certaine connaissance des cas d'utilisation d'Erlang, étant donné que Vonage est une plate-forme de communication en tant que service (CPaaS).

Concurrence

Comment est-il capable de gérer ce niveau de concurrence ? Les développeurs d'applications Web traditionnelles ont peut-être rencontré des systèmes Async/Promesse, comme en C# ou le système à un seul fil Node.js. Ce n'est pas ainsi que fonctionne Erlang : au lieu des threads du système d'exploitation, il dispose de sa propre VM appelée BEAM, qui gère des processus individuels légers. Comme BEAM peut passer de l'un à l'autre (de la même manière que PHP Fibers apporte la concurrence) à la vitesse de l'éclair, il peut gérer des millions de ces processus à la fois.

Regardez-le se briser

La tolérance aux pannes que j'ai mentionnée précédemment est gérée par des arbres de supervision. Ce modèle de conception interne fait partie du noyau de la plate-forme Open Telecom d'Erlang - considérez-le comme l'équivalent de la bibliothèque standard. Il existe un réseau de superviseurs qui surveillent les processus, ce qui souligne l'importance pour les développeurs d'envisager le redémarrage des processus au lieu d'essayer le traditionnel traitement des erreurs de type try-catch.

A l'épreuve des balles : L'échange à chaud

Parfois, des fonctionnalités que je n'avais jamais rencontrées auparavant dans les langages de programmation me laissent pantois ; je me souviens d'avoir découvert qu'il était possible de monkeypatch le langage de base de Ruby au moment de l'exécutionJe me souviens avoir découvert qu'il était possible de monkeypater le langage de base de Ruby au moment de l'exécution, ce que je n'arrivais pas à comprendre. Une découverte similaire : vous vous souvenez que la tolérance aux fautes est au cœur d'Erlang ? Eh bien, lorsque vous avez Erlang en cours d'exécution, vous pouvez échanger du code en direct sans arrêter la VM. Si vous vous êtes déjà demandé comment WhatsApp parvenait à envoyer une tonne de mises à jour avec un temps d'arrêt apparemment nul, voici votre réponse.

Conclusion

Nous avons essentiellement couvert la philosophie de base de ce qui a fait d'Erlang ce qu'il est. Ce contexte fait de ce langage un choix idéal non seulement pour la messagerie et les communications, mais aussi pour tout ce qui nécessite le même niveau de disponibilité et de tolérance aux pannes. Il est également très utile pour les bases de données, ce qui explique pourquoi les deux logiciels CouchDB et Riak sont écrits en Erlang. Alors, pour les développeurs ambitieux qui envisagent d'écrire leur propre backend IoT, ou qui cherchent peut-être à intégrer des API de réseau dans leur pile, nous aimerions savoir sur quoi vous travaillez.

Vous avez une question ou souhaitez partager ce que vous construisez ?

Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.

Pour en savoir plus

Documentation à l'intention des développeurs pour les API de réseau

Documentation Erlang

Partager:

https://a.storyblok.com/f/270183/400x385/12b3020c69/james-seconde.png
James SecondeDéveloppeur PHP senior Advocate

Acteur de formation avec une thèse sur la comédie, je suis venu au développement PHP par le biais de la scène des rencontres. Vous pouvez me trouver en train de parler et d'écrire sur la technologie, ou de jouer/acheter des disques bizarres de ma collection de vinyles.