Dagu - L'orchestrateur de workflows qui va faire oublier vos crontabs pourries | Open source | Le site de Korben
Image illustrant l'article : Dagu - L'orchestrateur de workflows qui va faire oublier vos crontabs pourries

Dagu - L'orchestrateur de workflows qui va faire oublier vos crontabs pourries

par Korben ✨ -

Vous voulez dire adieu à vos scripts cron chaotiques et gérer vos workflows comme un chef ? Alors laissez-moi vous présenter Dagu, l’orchestrateur de workflows écrit en Go, qui je pense va bien aider tous ceux qui en ont marre de se battre avec des dépendances de tâches impossibles à débuguer.

Plus besoin de SSH sur vos serveurs pour relancer manuellement des scripts foireux un par un, et surtout une visualisation de vos pipelines de données avec des jolies flèches qui montrent qui dépend de quoi. C’est du bonbon !

Contrairement aux monstres comme Airflow qui demandent trois doctorats en informatique pour être installés, Dagu c’est l’efficacité à l’état pur. Un seul binaire, aucune base de données externe, et hop ! Vous avez un orchestrateur professionnel qui tourne en quelques minutes. La documentation officielle confirme que leur philosophie c’est “minimal external dependencies”, et ils tiennent parole !

L’idée derrière Dagu, c’est donc de résoudre un problème qu’on a tous vécu à savoir quand vous avez des centaines de jobs cron sur un serveur, et qu’il est impossible de comprendre les dépendances implicites entre tous ces scripts. Si un job plante, lequel relancer en premier ? Et dans quel ordre ? Mystère et boule de gomme ! Et bien avec Dagu, fini le casse-tête ! Vous définissez vos workflows sous forme de DAG (Directed Acyclic Graph) dans un simple fichier YAML, et tout devient clair comme de l’eau de roche.

La magie opère avec des configs ultra-simples. Genre, vous voulez programmer une tâche à 7h30 et 20h00 ? Vous écrivez juste ça :

schedule:
- "30 7 * * *"
- "0 20 * * *"
steps:
- name: mon_super_job
command: ./mon_script.sh

Et c’est tout ! Pas besoin de réécrire vos scripts existants en Python comme avec Airflow. Vous copiez-collez vos commandes de crontab dans le YAML et ça roule.

Mais le vrai kiff, c’est l’interface web. Fini de fouiller dans /var/log pour comprendre pourquoi votre pipeline de machine learning a planté à 3h du mat’. Avec Dagu, vous ouvrez votre navigateur sur http://127.0.0.1:8080 et vous avez tout sous les yeux : le statut en temps réel, les logs détaillés, et même la possibilité d’éditer vos configs directement dans le browser.

Et l’architecture de Dagu, c’est du génie pur. Le truc est pensé “local-first”, ce qui veut dire que tout tourne sur votre machine ou serveur sans avoir besoin d’une infrastructure complexe. Par défaut, toutes les tâches, logs et planifications sont locaux, donc vous pouvez bosser offline ou dans des environnements air-gapped. Parfait pour les projets sensibles où vous ne voulez pas que vos données se baladent partout !

Et niveau versatilité, Dagu peut exécuter n’importe quoi. Scripts shell, commandes Python, containers Docker, requêtes HTTP, ou même des commandes SSH à distance. Vous voulez orchestrer un pipeline qui récupère des données avec une requête HTTP, les traite avec un script Python, les stocke dans un container Docker, puis envoie un rapport par email ? Dagu fait ça les doigts dans le nez !

Ce qui m’impressionne aussi, c’est la robustesse du système de retry. Avec la version 1.17.0, vous pouvez maintenant spécifier exactement sur quels codes de sortie relancer une tâche. Plus de retries aveugles qui font n’importe quoi ! Et ils ont même ajouté un zoom sur les diagrammes, parce qu’apparemment gérer des DAGs gigantesques, c’est devenu mainstream.

Pour les cas d’usage, y’a de quoi faire : automatisation de pipelines ETL, monitoring d’infrastructure, génération de rapports périodiques, batch processing pour le nettoyage de données, orchestration de microservices… Bref, si vous avez des tâches qui dépendent les unes des autres, Dagu va vous sauver la vie.

Le projet GitHub officiel montre qu’il y a une vraie communauté derrière, avec des releases fréquentes et une roadmap claire, donc pas de risque de se retrouver avec un projet abandonné dans six mois !

La comparaison avec les autres outils est sans appel. Airflow ? Un gros bazooka pour la plupart des cas. Cron classique ? Impossible à maintenir dès que ça devient complexe. Dagu trouve le juste milieu avec la simplicité de cron avec la puissance d’un vrai orchestrateur et le fait que ce soit écrit en Go garantit des performances de fou et une facilité de déploiement qui fait plaisir.

Concernant l’installation, c’est trois secondes chrono avec Homebrew ou en téléchargeant le binaire. Et pour le lancer, vous faites dagu start-all et c’est parti.

Voilà, donc Alors si vous en avez marre de vos scripts cron qui ressemblent à un champ de bataille et que vous voulez enfin avoir une vision claire de vos workflows automatisés, foncez tester sur Dagu. Vos futurs vous remercieront de ne plus avoir à débuguer des dépendances pourries à 4h du matin !

Source