Windmill - le moteur de workflow open source auto-hébergeable le plus rapide à déployer
(windmill.dev)- Des benchmarks montrent que Windmill est le moteur de workflow open source auto-hébergeable le plus rapide, comparé à d'autres moteurs comme Airflow, Prefect et Temporal
- Windmill prend en charge plusieurs langages de programmation et propose un environnement de développement intégré permettant de créer et tester des workflows en quelques minutes, sans SDK complexe ni processus de déploiement lourd
- Airflow/Prefect ne prennent en charge qu'un seul runtime (Python), tandis que Windmill prend en charge Python, Typescript, Go et Bash, ainsi que les requêtes SQL directes vers BigQuery, Snowflake, Mysql et Postgresql
- Par rapport à Temporal, spécialisé dans la gestion des files de tâches, Windmill fonctionne aussi comme un moteur d'exécution durable en incluant des fonctionnalités d'attente d'événements (réactivité)
Différence entre moteur de workflow et file de tâches
- La file de tâches est au cœur d'un moteur de workflow, et de nombreux développeurs construisent leur propre logique autour d'elle au lieu d'utiliser un moteur de workflow
- Il existe déjà diverses implémentations de files, comme SQS, Kafka, Redis with RMSQ et Orban
- Beaucoup de développeurs bâtissent leur logique autour des files de tâches et obtiennent une satisfaction comparable à celle d'un moteur de workflow (en créant en quelque sorte leur propre moteur de workflow)
Qu'est-ce qu'un moteur de workflow « tout-en-un » ?
- Un moteur de workflow orchestre des workflows dans un système distribué afin d'achever les tâches tout en respectant les contraintes de dépendance entre elles
- Les 5 principaux avantages d'un moteur de workflow :
- Allocation des ressources : il permet d'exploiter au maximum le cluster, d'affecter chaque tâche à des workers différents disposant de ressources différentes (CPU, mémoire, GPU), et de garantir que les ressources complètes du worker peuvent être utilisées par la tâche
- Traitement parallèle : lorsque les contraintes du workflow permettent d'exécuter certaines étapes en parallèle (branches, boucles
for), le moteur de workflow peut distribuer ces étapes non seulement à des threads, mais aussi à plusieurs workers physiquement séparés - Observabilité : chaque tâche possède un identifiant unique et peut être observée individuellement, avec inspection des entrées, logs, sorties et états
- Durabilité : si une machine s'arrête pour une raison imprévue ou si des effets de bord surviennent, il faut pouvoir redémarrer le workflow
- Le workflow doit pouvoir redémarrer le plus vite possible lorsqu'un événement imprévu se produit. Une façon d'y parvenir est l'idempotence, où l'exécution répétée d'une même tâche produit le même effet qu'une seule exécution.
- En cas d'incertitude, on peut rejouer l'ensemble du flux sans effet secondaire. Cela est généralement implémenté via des fichiers de log et des SDK qui ignorent les effets de bord lorsque l'identifiant unique attaché à la tâche fait partie des logs.
- Une autre méthode consiste à créer un snapshot transactionnel de l'état du flux afin de sauvegarder l'état après chaque tâche. Pour redémarrer, il suffit de recharger le dernier état et de reprendre à partir de là.
- Windmill utilise cette dernière approche et suppose que l'idempotence peut être implémentée côté utilisateur lorsque c'est nécessaire
- Réactivité : le flux peut être suspendu jusqu'à sa reprise en réponse à un événement tel qu'un webhook ou une approbation
Le secret de la vitesse de Windmill
- Windmill s'appuie sur Postgresql et Rust pour maximiser l'efficacité grâce à une conception simple et à diverses optimisations
Architecture système et file
- Windmill fournit un binaire unique compilé en Rust ; les workers et le serveur sont connectés à Postgresql, mais pas entre eux
- La file est implémentée directement dans Postgresql, et les tâches peuvent être déclenchées de l'extérieur via l'API
État
- Un moteur de workflow représente les tâches comme une machine à états finis (FSM), et Windmill traite l'ensemble du flux lui-même comme une FSM
Transmission des données
- Windmill propose plusieurs méthodes de transmission des données, comme les expressions JavaScript, le partage de dossiers temporaires et l'intégration S3
Efficacité des workers
- Les workers de Windmill traitent une seule tâche à la fois et exécutent les tâches sans conteneur afin d'améliorer les performances
Conclusion
- Windmill est un runtime et une plateforme serverless open source et auto-hébergeables, fondés sur Postgresql et Rust, offrant une très grande rapidité grâce à une conception simple et optimisée
Avis de GN⁺
Le point le plus important de cet article est que Windmill prend en charge plusieurs langages de programmation et fournit un environnement de développement intégré permettant de créer et tester rapidement des workflows sans SDK complexe ni processus de déploiement lourd. Ces caractéristiques sont très utiles pour les développeurs, et les performances ainsi que l'efficacité de Windmill les aideront à livrer de meilleurs produits plus rapidement. L'article contient des éléments intéressants pour les développeurs, en particulier pour ceux qui souhaitent construire leur propre moteur de workflow ou optimiser un moteur existant.
2 commentaires
Windmill - plateforme open source pour créer des applications internes d’entreprise et automatiser des workflows, basée sur Python
Le projet avait été brièvement dévoilé en mai dernier, mais le développeur disait alors qu’il n’était pas encore prêt à le rendre public et ajoutait qu’il passait un entretien YC dans 10 minutes ! Puis il a laissé un commentaire pour dire qu’il avait été accepté par YC.
Après avoir foncé pendant un an et demi après son admission chez YC, ils ont finalement lancé officiellement le produit.
Avis Hacker News