Retour catalogue
Senior~12 horchestrationsoftware engineering dataopsingestion

Backfill de 3 mois sans casser le lundi

Backfill 90 jours pendant que daily tourne. Sans planter lundi matin.

Contexte

C'est lundi 9 h, ton boss te demande de re-traiter les 3 derniers mois parce qu'une règle métier a changé. Daily schedule continue de tourner. Tu lances backfill. Si tu ne sais pas gérer concurrence des partitions, tu casses prod.

Ce projet te fait câbler Dagster avec une `DailyPartitionsDefinition` sur 90 jours, un schedule quotidien parallèle, des concurrency limits, des retry policies sur les partitions « empoisonnées », et un sensor qui réagit à un asset upstream. Tu apprends à raisonner en partitions, pas en lignes.

CI vérifie statiquement que tu as déclaré les bonnes structures (definitions chargent, partitions daily, retry policy présente, concurrency limit > 0) et dynamiquement que ton backfill réussit sur une partition empoisonnée après retry, et qu'une re-exécution de la même partition ne duplique pas les lignes.

Architecture

Stack et flow du projet

Loading diagram…

Ce que tu vas livrer

  • Package `lumora_pipeline/` avec assets, jobs, schedules, sensors, definitions
  • Une `DailyPartitionsDefinition` de 90 jours configurée correctement
  • Une `RetryPolicy` sur les assets sensibles, un sensor wired, un schedule en RUNNING
  • Script `scripts/backfill_90d.py` qui lance le backfill complet en respectant la concurrence

Ce que CI vérifie

  • Les `Definitions` se chargent sans erreur
  • Partition definition est bien `daily`
  • Une `RetryPolicy` est déclarée sur au moins un asset
  • Un `max_concurrent_runs` est défini dans `dagster.yaml`
  • Sensor et schedule sont en statut RUNNING
  • Sur partition empoisonnée (2026-02-15), retry est observé puis succeed
  • Relancer la même partition deux fois ne duplique pas les rows en base

Prérequis

  • Python intermédiaire (décorateurs, type hints, context managers)
  • Notion d'orchestration (Airflow, cron, ou expérience de jobs schedulés)
  • SQL et Postgres basique

Comment ça marche

  1. 01

    Tu cliques « Commencer »

    On forke template sur ton compte GitHub. Aucune install locale, aucun Docker à débugger.

  2. 02

    Tu codes dans GitHub Codespaces

    VS Code dans ton navigateur, prêt à l'emploi : DBs locales, dépendances Python, tout dans devcontainer. 60h/mois gratuits chez GitHub.

  3. 03

    Tu pushes, CI te répond

    GitHub Actions exécute rubrique. Vert = validé. Rouge = chaque check échoué te dit ce qui manque, en français.

Information précontractuelle

  • Vendeur : Merta
  • Prix : 49 € TTC, franchise de TVA
  • Livraison : numérique, immédiate après paiement
  • Droit de rétractation : exclu après début d'exécution, voir case à cocher
  • Paiement sécurisé via Stripe

Achat soumis aux CGV.