Introduction
L'architecture dite « native cloud » de la dernière décennie repose sur une hypothèse vieille de 20 ans : l'état réside dans la base de données et le calcul est sans état. Les modèles de langage et les agents remettent en question cette hypothèse, rendant cette architecture de plus en plus difficile à utiliser.
Contexte Technique
Les modèles de langage et les agents violent cette hypothèse de trois manières subtiles : les tâches à longue durée, le calcul à état et l'interaction bidirectionnelle. Les solutions actuelles comme l'exécution durable (Temporal, Inngest, Restate) résolvent partiellement le problème, mais nous prétendons toujours que le calcul sous-jacent est sans état.
Cela fonctionne pour l'exécution, mais ne résout pas le problème d'interaction. Lorsqu'un client souhaite communiquer avec un processus en cours d'exécution dans un cadre d'exécution durable, nous sommes confrontés au même problème de routage. Tout le monde recourt alors à la polling, qui présente des inconvénients tels que la latence, la charge de la base de données et les requêtes gaspillées.
Analyse et Implications
Il existe un manque de primitive de routage fondamentale. Nous voulons pouvoir dire : « livrer ce message à qui produit la sortie pour le flux de travail X » sans avoir besoin de savoir quel boîtier, quelle réplique de serveur, quel processus c'est. Les WebSockets pourraient être une solution, mais elles présentent des problèmes car elles sont une connexion et non une adresse.
Les canaux pub/sub inversent la propriété. Ni le processus serveur ni le client n'est adressable. Le transport est adressable. Les canaux pub/sub offrent une communication bidirectionnelle et à état. Le canal est l'adresse et, contrairement aux WebSockets, il ne s'agit pas d'une connexion, mais d'un canal durable.
Perspective
Ce n'est pas vraiment à propos des modèles de langage, mais ceux-ci rendent le problème plus visible. Les réponses des modèles de langage ne sont pas déterministes et sont coûteuses. Nous avons besoin d'une nouvelle architecture qui inclut une primitive de routage capable d'adresser des processus, et non seulement des bases de données. L'exécution durable, les canaux pub/sub et le protocole HTTP sans état, chacun faisant son propre travail, pourraient être la solution.