Lakehouse auto-hébergé sur Scaleway

Résumé

Scaleway fournit l’object storage, des bases PostgreSQL managées, Kubernetes et plusieurs moteurs, mais aucun catalogue Iceberg managé (d’après la documentation consultée le 22 octobre 2026) : il faut l’auto-héberger. Trois montages sont possibles : un moteur avec un catalogue JDBC sur PostgreSQL (A), plusieurs moteurs avec un catalogue REST (B), ou un lakehouse qui alimente un moteur BI dédié (C). Un déploiement réel (Kubernetes, Nessie, Trino) fonctionne, mais un seul nœud permanent coûte 57,53 €/mois.

Prérequis

Data lake vs lakehouse (format de table, catalogue) et Choisir entre lake, lakehouse et warehouse pour savoir si le lakehouse est justifié.

Pourquoi le catalogue n’est pas un détail

Sur de l’object storage, un catalogue basé sur de simples fichiers n’offre pas toujours un commit atomique fiable : l’atomicité du changement de pointeur dépend des garanties du stockage. Dès qu’il y a plusieurs writers, un catalogue dédié est le choix prudent pour Iceberg. Les écritures conditionnelles de certains stockages compatibles S3 peuvent changer cette conclusion ; leur disponibilité chez Scaleway est à vérifier. C’est le point où Scaleway coûte le plus d’exploitation par rapport à une offre managée.

Les briques

Brique ScalewayRôle dans un lakehouse
Object Storage (compatible S3)Fichiers Parquet et métadonnées Iceberg
Managed PostgreSQLBase du catalogue (JDBC, Lakekeeper, Polaris)
Serverless Jobs / Containers / FunctionsExécuter dbt ou des scripts, héberger un service de catalogue
Kubernetes KapsuleHéberger Trino, un catalogue REST ou Spark
Clusters for Apache SparkSpark managé avec notebook JupyterLab
Data Warehouse for ClickHouseMoteur analytique managé
Data OrchestratorOrchestration de workflows en YAML

Options de catalogue auto-hébergeables

OptionPrincipeExploitationMulti-moteurs et sécurité
Catalogue JDBC sur PostgreSQL managéPointeur de table stocké dans une base SQLLa plus légère : une base managée, aucun serviceMulti-moteurs si chacun parle JDBC ; pas de permissions fines, pas d’API REST
LakekeeperService REST Iceberg en Rust, licence Apache, sur PostgreSQLUn conteneur sans état plus PostgreSQL ; sur Kapsule ou Serverless ContainersTout moteur compatible REST ; OIDC, autorisation fine via OpenFGA
Apache PolarisService REST Iceberg open sourceUn service plus PostgreSQL ; plus lourdRôles, OAuth2, distribution de crédentiels de stockage
Project NessieCatalogue REST avec branches façon GitUn service plus stockage ; offre managée non vérifiéeUtile pour isoler des environnements ou des backfills
Hive MetastoreHistorique, hérité de HadoopLourdPlus lent et moins riche que les catalogues modernes

Moteurs déployables et compatibilité dbt

MoteurOùCatalogue REST IcebergAdapter dbtEffort
TrinoKapsuleOui, connecteur Icebergdbt-trinoÉlevé : déploiement et réglage du cluster
SparkClusters for Apache Spark ou KapsuleOui, avec les bibliothèques Iceberg ; à tester sur le service managédbt-sparkMoyen en managé
DuckDBServerless Jobs, un nœudOui, écriture récentedbt-duckdbFaible ; adapté à des volumes modestes (ordre de grandeur à valider)
ClickHouseData Warehouse managéLecture solide, écriture plus récente et partielle ; à vérifier selon la versiondbt-clickhouseFaible côté exploitation

La matrice exacte entre la version de chaque moteur et le catalogue doit être testée avant de s’engager : c’est le principal risque de compatibilité. Voir dbt et le lakehouse.

Trois architectures cibles

flowchart LR
    subgraph A["A : un moteur, catalogue JDBC"]
      A1[Un moteur] --> A2[("PostgreSQL<br/>catalogue")]
      A1 --> A3[("Object Storage")]
    end
    subgraph B["B : plusieurs moteurs, catalogue REST"]
      B1[Trino] --> B3["Lakekeeper ou Polaris"]
      B2[Spark] --> B3
      B3 --> B4[("PostgreSQL")]
      B1 --> B5[("Object Storage")]
      B2 --> B5
    end
    subgraph C["C : mixte"]
      C1[("Lakehouse<br/>brut et historique")] --> C2["Moteur de serving BI<br/>ex. ClickHouse"]
    end
MontageAvantagesContrepartiesConvient quand
APeu de pièces à exploiterPas de permissions fines, pas d’API RESTUne équipe, un moteur, peu de gouvernance
BCatalogue standard interchangeable, droits par table, plusieurs moteursUn service à déployer, sécuriser, sauvegarder, mettre à jourPlusieurs moteurs ou profils, gouvernance exigée
CBrut et historique ouverts, BI sur un moteur adaptéDeux couches à synchroniser, un moteur de plusHistorique long et BI exigeante en temps de réponse

Retour d’expérience : Kapsule, Nessie et Trino

Un projet personnel documenté par Marcel-Jan Krijgsman : partie 1, le plan (5 janvier 2026) et partie 2, Scaleway (7 janvier 2026, mise à jour du 30 mars 2026).

Ce que l’auteur a monté. Un cluster Kubernetes (control plane gratuit), un bucket privé, Nessie et Trino installés avec Helm. Validation : création d’un schéma et d’une table Iceberg en Parquet, INSERT et SELECT fonctionnent sur le catalogue iceberg. Le billet conclut que le lakehouse est faisable chez Scaleway, avec un prix proche de celui des clouds américains.

Points relevés. Le compte doit être vérifié (pièce d’identité) pour obtenir des quotas suffisants ; l’application a besoin du permission set KubernetesFullAccess, sinon kubectl refuse les identifiants. L’installation de Trino a pris le plus de temps : des paramètres de configuration inexistants dans la version générée par un assistant IA, et des workers qui ne trouvaient pas le coordinateur. Leçon retenue : confronter toute configuration générée à la documentation officielle.

Limites de ce montage de démonstration.

  • Coût. Un nœud permanent à 57,53 €/mois pèse lourd pour un usage d’essai. À comparer à une exécution sans cluster dédié (DuckDB sur Serverless Jobs, catalogue JDBC sur PostgreSQL managé).
  • Pas de production. Un nœud de développement porte catalogue, coordinateur et workers : ni haute disponibilité, ni isolation.
  • Sécurité. L’accès à Trino passe par kubectl port-forward, sans authentification décrite, et les clés S3 sont dans des fichiers values.yaml. Une mise en production prévoirait des Secrets Kubernetes et une authentification.
  • Maintenance et dbt. Ni compaction, ni expiration des snapshots (Maintenance d’un lakehouse), ni dbt, ni orchestrateur dans le montage décrit.
  • Catalogue. Nessie est défendable ; le choix se tranche selon la gouvernance voulue (tableau plus haut). Le statut actuel du projet est à vérifier.

Sources

Statuts relevés dans la documentation en ligne le 22 octobre 2026 ; ceux qui touchent aux bêtas et aux adapters dbt v2 sont à revérifier avant décision.

Notes liées