Projet personnel · 2026

Plein Data : plateforme de prix de carburants sur Scaleway

Secteur
Cloud souverain et architecture data
Rôle
Data Architect et Cloud Engineer
Année
2026

Contexte

Migration d'une plateforme de données de prix de carburants de BigQuery vers une architecture serverless souveraine sur Scaleway.

Architecture

Architecture de Plein Data sur Scaleway1. Données de prix de carburants ; 2. Scaleway Data Orchestrator (exécution quotidienne des Jobs) ; 3. Jobs serverless dbt-duckdb (DuckDB éphémère, jeté à chaque run) ; 4. Export Parquet (Object Storage Scaleway (S3) : état durable) ; 5. File SQS (revue des correspondances de marques)Données de prix de carburantsScaleway Data Orchestratorexécution quotidienne des JobsJobs serverless dbt-duckdbDuckDB éphémère, jeté à chaque runExport ParquetObject Storage Scaleway (S3) : état durableFile SQSrevue des correspondances de marques
Architecture de Plein Data sur Scaleway
DAG daily et DAG monthly de Plein Data dans Scaleway Data OrchestratorDans la branche parallèle ingest-branch (Fork) : brand-mapping puis brand-mapping-gcs-push ; ingest-prices puis insee-fetch ; ingest-shortages. Quand toute la branche est terminée : dbt-fuel-daily. Ensuite : reclassify-onezone. DAG monthly, en chaîne : compact-shortages-monthly, compact-prices-monthly, dbt-fuel-reconcile, puis reclassify-onezone.ingest-branchForkDAG dailybrand-mappingServerless Jobbrand-mapping-gcs-pushServerless Jobingest-pricesServerless Jobinsee-fetchServerless Jobingest-shortagesServerless Jobdbt-fuel-dailyServerless Jobreclassify-onezoneServerless JobDAG monthlycompact-shortages-monthlyServerless Jobcompact-prices-monthlyServerless Jobdbt-fuel-reconcileServerless Jobreclassify-onezoneServerless Job
Deux DAG dans Scaleway Data Orchestrator : le daily (7 Jobs : ingestions en parallèle, dbt, reclassement) et le monthly (4 Jobs : compactage, dbt, reclassement).
Version texte du schéma
  1. Dans la branche parallèle ingest-branch (Fork) : brand-mapping puis brand-mapping-gcs-push ; ingest-prices puis insee-fetch ; ingest-shortages.
  2. Quand toute la branche est terminée : dbt-fuel-daily.
  3. Ensuite : reclassify-onezone.
  4. DAG monthly, en chaîne : compact-shortages-monthly, compact-prices-monthly, dbt-fuel-reconcile, puis reclassify-onezone.

Décisions

  1. ADR 1 · Persister l’état en Parquet État de la plateforme persisté en Parquet sur l'Object Storage Scaleway (S3), avec un modèle consolidé de 55 M de lignes.
  2. ADR 2 · Transformer sans état Transformations dbt-duckdb en Jobs serverless sans état : le DuckDB est éphémère et jeté à chaque run, l'état durable est l'export Parquet. Un daily (fenêtre de 2 jours) et un reconcile mensuel fusionnent les données.
  3. ADR 3 · Orchestrer par Jobs Orchestration de 11 Jobs serverless par Scaleway Data Orchestrator, répartis en deux DAG : un daily de 7 Jobs et un monthly de 4 Jobs ; une file SQS déclenche la revue des correspondances de marques.
  4. ADR 4 · Décrire l’infrastructure en code Infrastructure as Code avec Terraform sur deux modules racine : Jobs serverless, conteneur, file SQS, secrets et identités de service ; décompte détaillé plus bas.
  5. ADR 5 · Décision Site web de la plateforme : DuckDB WASM exécuté dans le navigateur.

Décompte des ressources Terraform (2 modules racine : 50 et 41 ressources)

RessourcesDétail
36pour 18 secrets (un secret et sa version initiale chacun)
30pour 10 identités de service (application, policy et clé d'API chacune)
11définitions de Jobs serverless
14autres : registries, file SQS, domaine d'envoi d'e-mails (TEM), conteneur, bucket, trigger
91ressources Terraform au total

Stack

ScalewayTerraformdbtdbt-duckdbDuckDBDuckDB WASMParquetPython

Code et démo

← Tous les projets