Connecter des backends Elixir et Go avec un wrapper Crystal

2025-06-19
Connecter des backends Elixir et Go avec un wrapper Crystal

L'équipe Mozi avait besoin de connecter une nouvelle application Elixir Phoenix LiveView à un backend Go existant. Ils ont exploré les NIF et les Ports, mais ont finalement choisi l'approche du nœud C d'Erlang, en utilisant Crystal pour écrire un wrapper C afin d'améliorer la maintenabilité. Cela découple les bases de code à la compilation et à l'exécution, utilisant `Node.list` dans Elixir pour détecter la connectivité du nœud C et S6 pour les redémarrages dans le conteneur. Bien qu'il y ait une pénalité de performance lors du franchissement de la limite C/Go, cela est acceptable pour leur cas d'utilisation. Le résultat est une combinaison élégante de trois langages (Elixir, Crystal, Go) qui améliore la maintenabilité.

Lire plus
Développement