Fastodata / Onboarding

Module d'onboarding — Kestra

Contenu pédagogique produit par Bill (QA). Destiné à onboarding.fastodata.com.
Public : ingénieur data. Format : théorie d'abord → exercices → quiz corrigé.
Contexte équipe : orchestrateur utilisé sur la plateforme data (déclaratif YAML). Complémentaire au module Airflow.
Durée estimée : ~2-3 h.


Objectifs pédagogiques

À la fin, l'apprenant sait :

  1. Expliquer le modèle Kestra (flows déclaratifs en YAML) et le situer vs Airflow.
  2. Écrire un flow : id, namespace, tasks, triggers.
  3. Enchaîner des tâches, passer des variables (Pebble), gérer les erreurs.
  4. Utiliser les plugins (BigQuery, GCS, Soda…) et les triggers (schedule, flow).
  5. Lire l'UI, débugger une exécution.

Module 1 — Modèle mental Kestra

Kestra orchestre des workflows déclaratifs : un flow = un fichier YAML (pas du code Python comme Airflow). Même rôle qu'Airflow (quoi/quand/ordre/erreurs) mais l'approche est config-first, versionnable et lisible par des non-développeurs.

Briques :

Différence clé avec Airflow : Airflow = DAG en Python (impératif) ; Kestra = flow en YAML (déclaratif). Mêmes concepts d'orchestration, ergonomie différente.


Module 2 — Un flow minimal

id: pipeline_ventes
namespace: data.ventes

tasks:
  - id: extract
    type: io.kestra.plugin.core.log.Log
    message: "Extraction des ventes"

  - id: transform
    type: io.kestra.plugin.core.log.Log
    message: "Transformation"

triggers:
  - id: daily
    type: io.kestra.plugin.core.trigger.Schedule
    cron: "0 6 * * *"

Module 3 — Variables, templating (Pebble), erreurs

Migration / pièges : éviter les types dépréciés, Handlebars remplacé par Pebble, valider les paramètres de tâche. (cf. skill kestra-migration.)


Module 4 — Plugins & triggers


Module 5 — UI & debug


Exercices

  1. Écris un flow id: charge_orders, namespace data.ventes, avec une tâche de log et un trigger cron quotidien à 7h.
  2. Ajoute un retry (3 tentatives, 5 min d'intervalle) sur une tâche fragile.
  3. Tu veux qu'une tâche de notification s'exécute si le flow échoue. Quelle section utilises-tu ?
  4. Comment passes-tu l'URI de sortie d'une tâche extract à une tâche load ? (syntaxe Pebble)
  5. Cite l'enchaînement de plugins d'un pipeline data typique (ingestion → qualité → notif).

Quiz final corrigé

Q1. Différence fondamentale Kestra vs Airflow ?
→ Kestra = flows déclaratifs en YAML (config-first). Airflow = DAGs en Python (impératif). Même rôle d'orchestration.

Q2. Quels sont les 3 grands blocs d'un flow ?
tasks (étapes), triggers (déclencheurs), + l'identité id/namespace (et inputs/variables/outputs).

Q3. Quel moteur de templating, et exemple ?
Pebble, ex. {{ outputs.extract.uri }} ou {{ trigger.date }}.

Q4. Comment gérer un échec de tâche ?
retry (tentatives/intervalle) par tâche, section errors: pour des tâches de récupération, allowFailure si l'échec est tolérable.

Q5. À quoi sert un trigger Flow ?
→ Déclencher un flow depuis un autre flow (chaînage d'orchestrations).


Pour aller plus loin

→ BigQuery → Git & CI → dbt (data build tool) → Airflow