Erlang, un langage pour start-up à succès

Yanis Lagsir
ELP-2018
Published in
4 min readJun 25, 2018

Les start-up issues du milieu du développement logiciel sont perpétuellement mises au défi de produire de nouvelles applications innovantes, mais aussi et surtout, de les produire dans un court laps de temps, que ce soit pour combler rapidement un besoin sur le marché ou pour effectuer une mise à l’échelle afin de répondre à l’ensemble des demandes utilisateur. Pour répondre à ces enjeux, on observe la constante apparition de nouveaux outils de programmation et langages toujours plus performants. Cependant il arrive que des start-up fassent le choix d’utiliser certains langages plus matures, de par leurs spécificités. C’est par exemple le cas de Whatsapp qui a fait le choix de développer, dès le départ, la totalité de son application, côté serveur, en Erlang, un langage de programmation peu connu initialement créé par Ericsson en 1986.

Au travers de cet article nous chercherons donc à comprendre quels ont été les atouts de Erlang ayant poussé Whatsapp à choisir ce langage de programmation plutôt qu’un autre.

Gestion des erreurs

Si il y a bien un domaine dans lequel Erlang se démarque des langages dits plus “traditionnels” c’est celui de la gestion des erreurs. En effet, Erlang a été conçu de sorte à ce que un programme puisse surmonter chaque erreur afin d’assurer un fonctionnement continu, plutôt que de s’arrêter tout simplement. Cela est du au fait qu’Erlang était initialement conçu pour fonctionner sur des équipements télécoms nécessitants une haute disponibilité. Cette propriété rend ainsi Erlang résistant au panne et simplifie grandement la gestion des erreurs. En effet, on ne se demande plus si les choses vont marcher, on se demande uniquement ce qu’on va faire quand ça marche.

“Hot Swap”

Par ce terme on désigne en fait la possibilité de mettre à jour un programme écrit en Erlang sans l’arrêter. Cette possibilité est due au fait que le code Erlang est chargé et géré comme un ensemble de modules compilables, le système peut maintenir deux versions d’un module en mémoire en même temps et les processus peuvent simultanément exécuter du code de chacune de ces versions. Ce qui est d’autant plus remarquable c’est qu’il est possible de modifier un programme Erlang en direct, pendant son fonctionnement, sans que les utilisateurs observent de discontinuité. Ce qui s’avère extrêmement intéressant dans le cas d’une application mobile telle que Whatsapp nécessitant de régulières mises à jour.

Concurrence

L’une des principales forces d’Erlang est la notion de concurrence. En effet, il faut savoir qu’avec Erlang une application est subdivisée en une multitude de processus “légers” dont le coût en ressource machine est moindre en comparaison des processus types C ou Java. On peut donc en créer un très grand nombre sans que les performances ne se voient dégradés. Ce qui est également intéressant c’est qu’ici les processus ne partagent pas de la mémoire virtuelle mais communiquent plutôt via l’envoi de messages où le destinataire réceptionne le message et le stocke dans une sorte de boite au lettre qu’il consulte périodiquement ce qui permet d’éviter les problèmes typiques de synchronisation.

La syntaxe d’envoi d’un message est la suivante :

Pid ! Message

Pid est l'identité du processus destinataire et Message une expression quelconque.

De l’autre coté, voici ce à quoi ressemble l’allure d’un code attendant un message en Erlang :

receive
foo -> %% Si on reçoit foo...
instruction 1,
instruction 2;
after %% Si rien n'est reçu après X millisecondes...
X ->
instruction 1,
instruction 2
end

Conclusion

Au final, “Let it crash”, “ Compile once run forever”, “ Failure is very much an option”, sont autant de slogans trouvés par les développeurs Erlang et qui définissent relativement bien ce à quoi correspond ce langage, c’est à dire un langage performant, robuste et idéal pour une application serveur requérant une haute disponibilité. C’est pourquoi, bien qu’il ne soit pas le langage de programmation le plus utilisé au monde tel que Java (cf. TIOBE index), il répond parfaitement aux besoins d’une application de messagerie instantanée à haute performance telle que peut l’être Whatsapp.

Sources :

--

--