Loading...
Cas d’usage · Data & Analytique

Un warehouse en Europe, au prix fixe d’une machine.

Faire tourner dbt, Airflow, ClickHouse, DuckDB ou Spark sur des VPS européens facturés au mois — pas de frais à la requête, pas de coût au To scanné, pas de crédits. Garder les events bruts sur un stockage objet compatible S3, facturé au Go stocké par mois, et entraîner les modèles la nuit sur un GPU réservé. Les données restent en UE, sur une stack qui t’appartient.

§ 01·Le stack · concept

Anatomie d’un pipeline data moderne

Pour toi si…

Ta facture DWH croît plus vite que ta donnée.

Tu ingères des événements, fais tourner des ETL la nuit, entraînes des modèles chaque semaine et livres des dashboards. Chaque DWH cloud facture séparément le scan, le stockage, l’egress — chaque ligne anodine, le total surprenant. Sur VPS + stockage objet, le warehouse est une machine facturée au mois quel que soit le nombre de requêtes ; le lake se paie au Go stocké, plus les requêtes et le trafic selon sa grille.

Les 5 couches
Object store · raw
Bucket compatible S3, fichiers Parquet / Iceberg — facturé au Go stocké par mois, requêtes et trafic selon la grille.
Ingestion · stream / batch
Kafka, Vector, Fluentbit sur VPS — écrire les events directement dans des partitions Parquet.
Transformation · dbt + Spark
dbt pour les modèles SQL, Spark / DuckDB pour les gros joins — sur un VPS de milieu de gamme, dimensionné selon tes joins.
Warehouse · ClickHouse / Postgres
Moteur columnar pour les requêtes analytiques — sub-seconde sur 100 M lignes sur un VPS à grande mémoire.
BI · Metabase / Superset
Dashboards self-hosted sur petit VPS — l’équipe possède SQL, dashboards et data.
Ce qui compte
Formats columnar
Parquet + Snappy sur disque = 5 à 10× plus petit que CSV, 50× plus rapide sur scans filtrés.
Partitioning · date / tenant
Partitionner par jour ou par client — la requête ne touche que la slice utile, scan divisé par 100.
ETL idempotent
Les reruns doivent produire le même output — requis pour backfill, retry, audit.
EU residency
Events bruts, modèles, dashboards en régions UE — DPA couvre les obligations RGPD.
Flux data · brut → insight
tous les hops sur VMCloud
eventsapp · sourcesstreamKafka / Vectorrawobject · ParquetcolumnarClickHouseconsumeMetabase / ML

Chaque hop tourne sur VMCloud — Kafka écrit le Parquet dans le bucket, ClickHouse charge les partitions utiles sur son VPS, Metabase requête ClickHouse. Les requêtes tapent les disques du warehouse : pas de frais à la requête ; les lectures du bucket comptent en requêtes et en trafic selon la grille du stockage objet.

§ 02·Pipeline · concept

Orchestrer l’ETL comme une équipe data senior

Pour toi si…

Tu lis tes DAGs tous les matins.

Une équipe data a besoin de trois primitives : un scheduler, un framework de transformation, un runner de tests. Airflow / Dagster + dbt + dbt-tests couvrent tout. Tout tourne sur un seul VPS de milieu de gamme pour les petites équipes ; on passe à 3 nœuds quand on dépasse quelques centaines de modèles dbt. Même outillage à chaque étape.

5 étapes ETL
1 · Extract
Extraire depuis Postgres, Stripe, Salesforce — connecteurs Airbyte sur worker VPS.
2 · Load
Charger les lignes brutes en Parquet partitionné sur S3 — sans transformation.
3 · Transform · dbt
Modèles SQL : staging → marts → couche métriques — versionnés dans Git.
4 · Test · dbt-tests
unique, not_null, accepted_values, assertions custom — fail le DAG, pas le dashboard.
5 · Observe
Graph de lineage, freshness, détection d’anomalies sur row counts et drift de métriques.
Garde-fous pipeline
Freshness · par source
Chaque table upstream a un max-age — alerte quand un connecteur meurt en silence.
Delta row count
+/- 10 % vs même jour la semaine dernière déclenche une review — détecte tôt les partitions manquantes.
Lineage drift
Changement de schéma source = modèles downstream notifiés avant le prochain run.
Anomalies de métrique
Drift KPI > 3σ sur baseline 7 j ping le lead data — pas une courbe perdue dans le bruit des dashboards.
DAG · run ETL quotidien
orchestré par Airflow
postgresstripesalesforceparquet · rawstg_*dbt testmart_revenuemetabase

Sources → lake brut → modèles staging + tests → mart → BI. Airflow lance le DAG chaque nuit, retry les tâches en échec, post sur Slack au rouge.

§ 02·Pipeline · code

Un vrai modèle dbt + DAG Airflow

mart_revenue.sql · incrémental + tests
sql
-- models/marts/mart_revenue.sql
{{ config(materialized='incremental', unique_key='order_id') }}
select
o.order_id,
o.customer_id,
date_trunc('day', o.created_at) as order_date,
o.amount_eur,
c.country
from {{ ref('stg_orders') }} o
join {{ ref('stg_customers') }} c using (customer_id)
where o.status = 'paid'
{% if is_incremental() %}
and o.created_at > (select max(order_date) from {{ this }})
{% endif %}
-- schema.yml
version: 2
models:
- name: mart_revenue
columns:
- name: order_id
tests: [unique, not_null]
- name: amount_eur
tests:
- not_null
- dbt_utils.expression_is_true:
expression: ">= 0"
Stack d’orchestration
sur VPS VMCloud
  • ✓Airflow / Dagster sur un VPS de milieu de gamme
  • ✓Workers Celery / Kubernetes pour les étapes lourdes
  • ✓dbt 1.8+ avec manifest stocké sur S3
  • ✓Événements OpenLineage postés à un service de métadonnées
  • ✓Métriques de durée et d’échec remontées par chaque worker
  • ✓Slack + email sur fail DAG ou freshness manquée
§ 03·Stockage · concept

Un stockage qui scale comme S3, requête comme une DB

Pour toi si…

Tu scannes plus de data que tu n’en stockes.

Un warehouse 10 To sur Snowflake coûte ~230 $ par mois juste pour exister, puis BigQuery / Snowflake facturent le compute ou le To scanné à chaque requête. Sur VMCloud, un volume bloc STORAGE-NVME de 10 To coûte 1 500,00 € HT/mois et l’engine (ClickHouse, DuckDB) le scanne autant que tu veux — pas de frais au To scanné. L’historique brut reste sur le stockage objet, payé au Go stocké.

Formats ouverts
Parquet · file
Columnar, compressé, splittable — format universel lu par tous les moteurs.
Iceberg · table
Ajoute transactions ACID, évolution de schéma, time travel sur des fichiers Parquet.
Delta Lake
Alternative à Iceberg, native Databricks — tourne aussi sur S3 standard.
ClickHouse · MergeTree
Moteur columnar natif — sub-seconde sur 100 M lignes sur un seul VPS à grande mémoire.
Leviers de vitesse
Partitioning
Partitionner par date / tenant — la requête ne touche que 1 % du lake au lieu de 100 %.
Compression · Zstd / Snappy
Zstd-3 = 60 % plus petit que Snappy sans coût lecture sur les scans analytiques.
Vues matérialisées
Pré-agréger les KPIs chauds — le dashboard tape une table de 10 k lignes, pas un scan de 10 G.
Scratch NVMe local
Engine sur le disque NVMe du VPS ou un volume bloc NVMe — les partitions chaudes restent en local au lieu d’être relues dans le bucket.
12 mois · stockage cumulé (To)
200 Go/jour · +5 % MoM
m1m3m5m7m9m11100 TB0

Cumul fin d’année : ~96 To. Sur OBJ-STANDARD à 0,02 € HT/Go·mois, le stockage du dernier mois revient à 1 910,06 € HT — requêtes et trafic selon la grille. Des règles de cycle de vie déplacent les partitions froides vers une classe moins chère.

§ 03·Stockage · repères

Latence requête par taille de warehouse

Requête d’agrégation · group by + sum sur slice filtrée
p50 / p95 · indicatifs
lignesmoteurVPSp50p95note
10 MDuckDB4 vCPU · 8 GB0.18 s0.6 sidéal analyste seul
100 MDuckDB6 vCPU · 16 GB0.9 s2.4 spetit warehouse
1 BClickHouse32 vCPU · 128 GB1.4 s4.1 sDWH intermédiaire
10 BClickHouse · 3 nodes3 × 32 vCPU · 128 GB3.2 s9.5 sgrosse équipe

Ordres de grandeur pour un jeu de données bien partitionné — ton schéma et tes requêtes décident. Un seul VPS à grande mémoire avec ClickHouse tient un milliard de lignes confortablement en analytique ; au-delà, on shard sur plusieurs nœuds. La grille tarifaire VPS donne l’offre de chaque taille.

§ 04·Entraînement ML · concept

L’entraînement ML de nuit, sur un GPU réservé

Pour toi si…

Tu réentraînes par semaine, pas en continu.

La plupart des équipes data ont besoin de 4 à 8 heures de GPU par semaine — un modèle de churn, un recommender, un détecteur d’anomalies. Les plateformes SaaS ML (Vertex AI, SageMaker) facturent à la seconde de GPU et ajoutent stockage, egress et frais de notebook. Une instance GPU au mois fait tourner le job nocturne et reste à toi le reste de la semaine pour l’ad-hoc et l’inférence ; pour quelques runs ponctuels, une plateforme à la seconde — ou la facturation à l’heure sur devis — peut revenir moins cher.

Run d’entraînement nocturne
1 · Pull features
Lire le dernier mart_features Parquet depuis S3 — sub-minute sur 100 M lignes.
2 · Train
PyTorch / RAPIDS / XGBoost sur une instance GPU à une carte — 4 à 6 h pour un modèle tabulaire sur millions de lignes.
3 · Eval + register
Comparer au modèle de la semaine dernière sur un holdout, register seulement si la métrique progresse.
4 · Ship · MLflow
Nouvelle version push sur registry MLflow ; l’endpoint de serving recharge au prochain deploy.
Leviers de coût
Facturation · au mois
Un GPU au mois fait tourner le job de nuit, puis sert notebooks et inférence le reste de la journée — un prix fixe quel que soit le nombre de runs. La facturation à l’heure se fait sur devis, avec caution.
RAPIDS · dataframe GPU
cuDF + cuML — 10 à 50× plus rapide que pandas + sklearn sur la même data.
Mixed precision · bf16
Entraîner transformers et modèles DL en bf16 — 2× plus rapide, même précision.
Reprises sur interruption
Checkpoint à chaque epoch sur le stockage objet — reprendre l’entraînement depuis le dernier checkpoint sans perdre de temps.
Run ML nocturne · ~5 heures total
sur GPU-PRO · 830,64 € HT/mois
90 s
4 min
4 h 30
12 min
step 1
start job
step 2
pull features
step 3
train · 5 epochs
step 4
eval · register

La carte reste réservée à ton instance le reste de la journée : notebooks, inférence, relances.

§ 05·Coût · concept

Pas de scan par To, pas de surcoût notebook

Trois profils data

Même stack, taille d’équipe différente.

Analyste seul avec un lake de 1 To : un VPS de milieu de gamme. Équipe data qui passe à 10 To avec ETL quotidien : un VPS à grande mémoire. Équipe ML : on ajoute un GPU pour l’entraînement nocturne. Les tableaux ci-dessous chiffrent chaque profil depuis la grille tarifaire et le comparent au SaaS managé le plus proche — le prix mensuel fixe se rentabilise quand le volume de requêtes grandit.

Formule TCO

cost = vps_month + gpu_month + lake_gb × price_gb_month

Trois composants prévisibles. Pas de "credit", pas de "DBU", pas de "slot", pas de frais à la requête sur le warehouse. La formule correspond aux box que l’équipe utilise vraiment : un VPS warehouse qui tourne 24/7 et un GPU gardé pour l’entraînement, tous deux facturés au mois (à l’heure sur devis), et un lake qui grandit chaque mois, payé au Go stocké — requêtes et trafic selon la grille du stockage objet.

Ce que les DWH SaaS cachent
Frais par To scanné
BigQuery : 6,25 $ par Tio scanné. La typo d’un junior sur `select * from huge_table` (8 Tio) = 50 $.
Les credits compute expirent
Les credits Snowflake expirent — pré-payer plafonne le risque mais gaspille quand même.
Multiplicateur DBU
Databricks facture compute + un surcoût DBU à la seconde de runtime.
Egress à l’export
Récupérer ta propre data : 0,09–0,12 $/Go. Une migration 10 To = 900 à 1 200 $.
Bundles VMCloud · par profil data
tarif public HT · UE
profilcapacitécompositionpar mois
Analyste seul~1 To de lake · DuckDB + MetabaseVPS-BUSINESS · 1 To OBJ-STANDARD169,19 €
Équipe data~10 To de lake · ClickHouse + AirflowVPS-TITANIUM · 10 To OBJ-STANDARD1 691,93 €
Entraînement ML~5 To de lake · batch GPU + warehouseVPS-BUSINESS · GPU-PRO · 5 To OBJ-STANDARD1 079,83 €

Lake : Go stockés par mois uniquement — requêtes et trafic selon la grille du stockage objet. VPS et GPU facturés au mois, la facturation à l’heure se fait sur devis.

SaaS analytique managé · tarifs publics
$ / mo · Apr 2026
Snowflake · X-Small warehouse40 h/mois de compute+ stockage 23 $/To/mois$ 240
BigQuery · on-demand40 To/mois scannés+ stockage 20 $/To$ 227
Databricks · Standard SQLsmall warehouse+ DBU + stockage$ 350
AWS Athena50 To/mois scannés+ S3 + Glue catalog$ 250
Redshift · ra3.xlpluscluster 24/7+ S3 spectrum$ 1 100

Prix pour une charge "petite équipe data" (warehouse 10 To, 40 h compute/mois, dashboards quotidiens). Les vraies factures ajoutent stockage, compute, scan, DBU, egress. Compter +30–50 %.

Bundle VMCloud vs DWH SaaS · par taille d’équipe
mensuel · change ignoré
profilVMCloudpar mois HTSaaS le plus prochepar moislecture
Analyste · 1 To · dashboards ad-hocAnalyste seul169,19 €BigQuery · light usage · 5 To scannés + stockage80 $SaaS moins cher
Équipe · 10 To · ETL quotidienÉquipe data1 691,93 €Snowflake · X-Small + storage · 40 h compute + 10 To420 $SaaS moins cher
Scaleup · 100 To scannés/moisÉquipe data1 691,93 €Databricks · medium SQL · compute + DBU + stockage1 800 $équivalent
Équipe ML · 5 To + train GPU nuitEntraînement ML1 079,83 €BigQuery + Vertex AI · scan data + heures GPU950 $équivalent

Lecture : à faible usage, un DWH managé facturé à la requête ou au crédit coûte souvent moins cher — le tableau le montre. Le prix d’un bundle VMCloud ne bouge pas avec le nombre de requêtes : plus tu scannes, plus la facture fixe se rentabilise, et la donnée reste en UE sur une stack qui t’appartient. Les requêtes et le trafic du lake s’ajoutent, selon la grille du stockage objet.

§ 06·Questions

De vraies questions d’équipes data

D’analysts, data engineers et ML leads qui hésitent entre DWH SaaS et self-hosted.

ClickHouse, DuckDB ou Postgres — quel moteur ?›

DuckDB pour analyste seul et notebook — tourne in-process, requête Parquet S3 directement. Postgres pour les workloads OLTP-leaning avec peu de lignes. ClickHouse pour OLAP à l’échelle du milliard : columnar, distribué, sub-seconde sur agrégations. Les trois tournent sur un VPS : choisis la taille dans la grille tarifaire selon ton volume de données et ta mémoire.

Iceberg, Delta ou Parquet pur ?›

Parquet pur sur S3 si ton pipeline est append-only et versionné dans Git. Iceberg si tu veux ACID, évolution de schéma, time travel — et requête multi-moteur. Delta Lake si tu es Databricks-heavy. Les trois sont open-source et tournent sur les mêmes buckets de stockage objet compatible S3.

Puis-je utiliser dbt-cloud ou je self-host ?›

dbt-core est open-source, tu self-host le compilateur et le lances sur VPS — c’est ce qu’on décrit ici. dbt-cloud est la couche SaaS (UI, scheduler, lineage UI) facturée par dev. Tu peux faire l’un ou l’autre ; dbt-cloud sur un warehouse VMCloud marche très bien. La plupart self-hostent à partir de 10+ devs.

Comment migrer depuis Snowflake ?›

Trois étapes : dump tes tables en Parquet sur S3 (Snowflake a un COPY INTO), monter un VPS ClickHouse qui lit le Parquet directement, pointer dbt sur le nouveau warehouse. La plupart prennent 2 à 4 semaines ; le SQL dbt demande quelques ajustements (macros Snowflake → ClickHouse). Les frais d’egress Snowflake sont la mauvaise surprise — compter environ 0,09 $/Go sortant. Notre équipe peut t’accompagner dans la migration sur devis (CGV §10.5).

RGPD + auditabilité ?›

Stockage et compute sont hébergés dans des centres de données OVHcloud en UE, et le DPA couvre les obligations RGPD du sous-traitant. Les buckets offrent règles de cycle de vie, versioning, object lock (rétention et conservation légale) et journaux d’accès — les briques de ta propre piste d’audit. Les colonnes PII peuvent être masquées au niveau warehouse (RBAC ClickHouse) et la suppression sur demande est un simple DELETE si tu partitionnes par user_id.

Requête multi-moteur sans copies ?›

Oui — stocker Parquet/Iceberg une seule fois sur S3, le requêter depuis DuckDB (notebook analyste), ClickHouse (warehouse), Spark (ETL lourd) et dataloaders PyTorch (entraînement ML) en même temps. Le lake est la source de vérité ; les moteurs sont des readers stateless. Pas de duplication, pas de logique de sync — chaque lecture compte en requêtes et en trafic selon la grille du stockage objet : garde les partitions chaudes sur les disques du warehouse.

Prêt à posséder ta data ?

Stockage objet + VPS warehouse + GPU réservé — le même Parquet lu par chaque moteur, un warehouse facturé au mois plutôt qu’à la requête, données en UE.