Reconstruisons un GenServer

Mieux comprendre comment l’utiliser pour bénéficier de la promesse de la distribution

Kevin Disneur
Fewlines

--

Elixir est un langage fonctionnel moderne conçu pour pour créer des applications distribuées, concurrentes et ayant une forte tolérance à la panne.

Cela est rendu possible notamment grâce à l’exploitation de la machine virtuelle Erlang et de la plateforme OTP dont les Process sont au coeur.

GenServer est une surcouche basique aux Process Elixir et permet de créer simplement des environnements d’exécution isolés les uns des autres (en ce qui concerne le stockage de la donnée) mais pouvant tous communiquer par l’envoi et la réception de Messages.

Elixir nous permet de distribuer très simplement ces Process sur des serveurs différents, et gère pour nous la couche réseau et la sécurisation de ces échanges.

Ces nombreux avantages ainsi que la simplicité d’utilisation d’OTP peuvent nous donner l’illusion que tout ce fonctionnement complexe est un peu magique.

Dans ce talk donné à Lille |> Elixir en Mars 2017, nous allons progressivement recréer manuellement le comportement GenServer afin de le démystifier — et surtout, de mieux comprendre comment l’utiliser pour pouvoir bénéficier de la promesse de la distribution pour vos applications.

Nous passerons en revue les points suivants pendant cette présentation :

  1. Définir ce qu’est un Process (au sens Elixir et non OS du terme)
  2. Créer manuellement un Process Elixir
  3. Envoyer et réceptionner manuellement des Messages, et utiliser la Mailbox
  4. Implémenter manuellement, et par étapes successives, un comportement similaire à GenServer.

Vous trouverez ici les slides de ce talk ainsi que le code présenté.

N’hésitez pas à nous poser vos questions, ou exprimer vos remarques en répondant à ce post !

--

--