(04) Systèmes
Systèmes & architecture
Des projets conçus comme des passerelles vers le Data Engineering.
Plateforme multi-utilisateur de finance personnelle : un workspace Rust en couches (domaine pur, couche de données SQLx, API Axum, worker en arrière-plan) sur PostgreSQL, au service d’une app Expo pour iOS, Android et web et d’un shell desktop Tauri.
Choix d’ingénierie
- —Crates hexagonales : domaine sans I/O vérifié en CI
- —Row-level security appliquée à chaque connexion du pool
- —Outbox transactionnelle pour les push, jobs avec SKIP LOCKED
- —Refresh tokens rotatifs, login limité en débit, codes d’erreur typés
- —Métriques Prometheus, traces OTLP, sondes de santé, arrêt propre
- —E2E Playwright sur la vraie stack, tests de charge k6, SQL vérifié à la compilation
Topologie
Expo · Tauri
Mobile, web et desktop
Rust · Axum
API HTTP typée, JWT
Rust · Tokio
Tâches planifiées
PostgreSQL 18
Triggers, RLS, analytique
Code privé — démo sur demande→Passerelle vers les données
Intégrité garantie par la base : soldes mis à jour uniquement par des triggers, row-level security par utilisateur, fonctions SQL analytiques pour tendances et budgets, imports idempotents d’exports tiers.
Plateforme de données de bout en bout sur la qualité de l’air en Émilie-Romagne, à partir des open data ARPAE enrichies par la météo Open-Meteo : ingestion en Rust vers du Parquet partitionné, modèles dbt sur DuckDB en local et BigQuery sur GCP, orchestration Dagster. En cours : l’exploration des données est terminée.
Choix d’ingénierie
- —Ingestion incrémentale et idempotente : retraitement sur fenêtre glissante et upserts sur la clé naturelle
- —Modèles dbt en couches (staging, intermediate, marts) avec historique SCD Type 2 des stations
- —Qualité des données en code : tests d’unicité, de complétude et de fraîcheur
- —Complétude mesurée sur une grille temporelle attendue, jamais comblée dans le raw
- —Seuils légaux dans un seed dbt, jamais codés en dur
- —Mêmes modèles sur DuckDB et BigQuery, infrastructure via Terraform
Topologie
Rust
ARPAE et Open-Meteo, idempotente
Parquet
Raw partitionné par année/mois
dbt · DuckDB · BigQuery
Staging, intermediate, marts
Dagster
Schedules, backfills, lineage
Dépôt↗Passerelle vers les données
Un projet de data engineering pur : mesures provisoires révisées après validation, trous et formats incohérents dans la source, transformés en un jeu de données historisé et testé qui répond sur les dépassements des seuils légaux, les tendances des polluants et la corrélation avec la météo.