Orchestration : planifier, surveiller, alerter
Orchestrer, c'est coordonner les étapes d'un pipeline : ordre, planning, reprises et alertes. On s'en sert dès que plusieurs tâches dépendent les unes des autres et doivent finir à l'heure.
- orchestrateur
- airflow
- dagster
- prefect
- cron
- sla
- alerte
- fraîcheur
- astreinte
Syntaxe
Un orchestrateur répond à cinq questions : quand planning cron ("0 5 * * *") ou déclenchement par l'arrivée d'une donnée quoi les tâches et leurs dépendances (un graphe sans cycle) si échec nouvelles tentatives, puis reprise à la tâche en échec qui alerte envoyée à la bonne personne, avec le lien vers les journaux à temps engagement de fraîcheur (SLA) surveillé, alerte avant l'échéanceOutils courants : Airflow (DAG de tâches), Dagster (actifs de données),Prefect (flux Python) — tous trois couvrent ces cinq besoins.Exemple
Pipeline « tableau de bord des ventes », engagement : prêt à 7 h 0005:00 déclenchement planifié (cron 0 5 * * *)05:00 extraire_commandes ─┐05:00 extraire_stocks ─┤ en parallèle05:12 dbt build (staging → marts), attend les deux extractions05:40 test de fraîcheur : dernière commande vieille de moins de 6 h → OK05:41 rafraîchissement du tableau de bordIncident : l'API des stocks est indisponible05:00 extraire_stocks échoue05:10 nouvelle tentative → échec05:20 seconde tentative → échec, alerte envoyée à l'astreinte data dbt build ne démarre pas : aucun chiffre partiel n'est publié06:30 toujours rien : alerte d'échéance « le tableau de bord ne sera pas prêt à 7 h »Résultat attendu : à 9 h, personne ne lit sans le savoir les chiffres de la veille.À retenir
- L'orchestrateur coordonne mais ne calcule pas : le travail lourd se fait dans l'entrepôt, Spark ou dbt, et l'orchestrateur se contente de lancer et de surveiller.
- Le déclenchement par la donnée (actifs ou datasets selon l'outil) lance un traitement quand sa table d'entrée est mise à jour, plutôt qu'à une heure fixe en espérant qu'elle soit prête.
- Mesurez le SLA sur la fraîcheur des données publiées, pas sur le succès des tâches : un pipeline vert qui a chargé zéro ligne viole quand même l'engagement.
- Une alerte utile dit quoi, quand et où regarder. Une alerte qui sonne chaque nuit pour rien finit ignorée ; supprimez ou corrigez celles qui ne demandent aucune action.
- Piège : relancer tout le pipeline à la main après un échec au lieu de reprendre à la tâche en échec. Les étapes déjà réussies s'exécutent deux fois et, si elles ne sont pas idempotentes, dupliquent les données.
Voir aussi
- Airflow : DAG, tâches et backfillUn DAG Airflow décrit en Python des tâches et leurs dépendances, sans cycle, avec un planning. On l'utilise pour lancer un pipeline chaque jour, relancer les échecs et rattraper le passé.
- Qualité des données et contratsLes tests de qualité vérifient automatiquement qu'une table respecte ce qu'on attend d'elle : clés uniques, valeurs présentes, données fraîches, volume normal. On les lance à chaque chargement.
- dbt : modèles, ref, sources et testsdbt transforme des requêtes SELECT versionnées en tables ou vues, dans le bon ordre et avec des tests. On l'emploie pour organiser la couche de transformation d'un entrepôt en ELT.