Aller au contenu
Samuele Cieri

(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

    1. Expo · Tauri

      Mobile, web et desktop

    2. Rust · Axum

      API HTTP typée, JWT

    3. Rust · Tokio

      Tâches planifiées

    4. PostgreSQL 18

      Triggers, RLS, analytique

    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.

    Code privé — démo sur demande
  • 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

    1. Rust

      ARPAE et Open-Meteo, idempotente

    2. Parquet

      Raw partitionné par année/mois

    3. dbt · DuckDB · BigQuery

      Staging, intermediate, marts

    4. Dagster

      Schedules, backfills, lineage

    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.

    Dépôt