En portant claw-code vers Elixir, j’ai essayé de tirer parti des atouts d’OTP et du multi-nœud.
(github.com/jidohyun)Bonjour.
Récemment, je mène une expérimentation consistant à porter vers Elixir claw-code de instructkr / ultraworkers (https://github.com/ultraworkers/claw-code).
Plutôt que de simplement le transposer à l’identique,
je voulais voir à quoi ressemblerait ce type de projet, à mi-chemin entre agent et control plane, s’il était conçu de manière vraiment idiomatique en Elixir.
En particulier, j’ai essayé d’exploiter activement les points forts suivants d’Elixir / BEAM :
- supervision OTP
- processus de longue durée
- runtime pensé d’abord pour les démons
- routage multi-nœud / BEAM distribué
- control plane orienté reprise
Ainsi, plutôt que de me limiter à un simple portage des commandes,
j’ai davantage mis l’accent sur les aspects suivants :
- processus de session / workflow supervisés
- routage tenant compte des démons
- suivi de l’appartenance dans le cluster
- persistance / reprise légère basée sur DETS
- tests de bascule et de reprise en fonction des nœuds connectés
Le résultat est actuellement regroupé sous le nom de Beamwarden :
https://github.com/jidohyun/beamwarden
Plutôt qu’un produit finalisé,
il s’agit davantage d’un projet d’expérimentation autour de l’idée suivante :
« Et si l’on reconstruisait ce type d’architecture agent runtime / control plane sur une base OTP et multi-nœud ? »
Si cela intéresse certaines personnes, j’aimerais particulièrement avoir des retours sur les points suivants :
- si la structure des frontières OTP / de supervision paraît idiomatique en Elixir
- si l’orientation prise pour le routage multi-nœud / le failover est pertinente
- s’il y a des parties inutilement complexes
- comment vous aborderiez la création native Elixir de ce type de système
Les retours comme les critiques sont les bienvenus.
3 commentaires
En tant qu’étudiant, on dirait qu’il mène une « expérience consistant à porter cela en Elixir ». Plus on essaie de choses, mieux c’est.
À une époque où seuls JavaScript/Node ou Python abondent, le fait de tenter cela en Elixir est rafraîchissant. Je me souviens encore de la profonde impression que m’avait laissée ma première découverte d’Erlang, il y a longtemps.
La curiosité intellectuelle, c’est bien, mais faire comme si on ne connaissait rien aux droits de propriété intellectuelle, c’est honteux. Comme le dit Kian84 : toi, je te donne tout juste 2 ans. Je ne voulais pas voir ça, mais c’est de ma faute si je suis entré sans savoir et que je l’ai vu. Pff.
C’est vraiment embarrassant, je ne sais pas quoi dire... enfin, si c’est un talent, c’en est un...