← L'édition
DevNouveau2 min de lecture

Workflow SDK : Vercel repense l'exécution durable sans infrastructure dédiée

Vercel présente la conception de Workflow SDK, un framework qui transforme le code TypeScript en workflows durables. En s'éloignant des architectures lourdes à la Temporal, cette approche s'appuie directement sur votre infrastructure existante et simplifie le suivi d'état.

Fil « Analyse des moteurs de workflow basés sur l'exécution de code »

Illustration de l'article — vercel.com
Image : vercel.com

L'orchestration de traitements longs ou étatistes (qui conservent leur état d'exécution) repose traditionnellement sur des moteurs dédiés. Vercel prend le parti inverse avec son outil Workflow SDK : considérer le code TypeScript lui-même comme un graphe orienté acyclique (DAG, pour Directed Acyclic Graph : une structure où les dépendances s'enchaînent sans boucle). L'objectif est d'offrir une exécution durable sans imposer le déploiement d'une infrastructure dédiée.

L'expérience tirée des moteurs comme Temporal

L'auteur de l'outil, Kevin Sundstrom, est parti des limites constatées sur Temporal. Déployer un tel moteur exige de gérer des grappes de serveurs Kubernetes (plateforme d'orchestration de conteneurs), de configurer le chiffrement mTLS (authentification réciproque par certificats) et d'administrer des processus applicatifs dédiés. De plus, faire évoluer le code en cours d'exécution impose l'usage d'une API (interface de programmation) de gestion de versions complexe pour éviter les erreurs de rejeu non déterministe.

Une simplification portée par la syntaxe

Dans Workflow SDK, les concepts complexes de signaux et de requêtes sont remplacés par une notion unique : les crochets d'interception (hooks) et adresses d'appel Web (webhooks). L'orchestration s'écrit de manière séquentielle à l'aide de deux directives au sommet des fonctions :

export async function processOrderWorkflow(orderId: string) {
  "use workflow";
  const order = await fetchOrder(orderId);
  await chargePayment(order);
  return { orderId, status: "completed" };
}

async function chargePayment(order: Order) {
  "use step";
  const charge = await stripe.charges.create({ /* ... */ });
  return { chargeId: charge.id };
}

Un modèle fondé sur vos briques existantes

S'inspirant de projets comme DBOS (exécuteur durable basé sur PostgreSQL), Workflow SDK ne requiert pas d'orchestrateur dédié. Son architecture s'appuie sur une interface nommée World, qui communique avec votre base de données (PostgreSQL), vos files de messages (Kafka, SQS) et votre application. Côté Vercel, le serveur se résume à une API de type CRUD (création, lecture, mise à jour, suppression) sans état, la logique d'exécution résidant dans la bibliothèque client sous licence open source Apache.

Versionnement et performances

Pour éviter la rupture des traitements en cours lors d'un déploiement, chaque exécution reste verrouillée sur l'environnement exact où elle a démarré. Enfin, l'équipe travaille à réduire le coût réseau de chaque étape (step), avec des gains de vitesse annoncés allant jusqu'à 5x sur la version v5 en bêta.