Ir al contenido
Samuele Cieri

(04) Sistemas

Sistemas y arquitectura

Proyectos pensados como puentes hacia la ingeniería de datos.

  • Plataforma de finanzas personales multiusuario: un workspace de Rust por capas (dominio puro, capa de datos con SQLx, API con Axum, worker en segundo plano) sobre PostgreSQL, que sirve una app Expo para iOS, Android y web y una aplicación de escritorio con Tauri.

    Decisiones de ingeniería

    • Crates separados al estilo hexagonal: un dominio sin E/S, comprobado en la CI
    • Seguridad a nivel de fila aplicada en cada conexión del pool
    • Outbox transaccional para las notificaciones push, trabajos tomados con SKIP LOCKED
    • Refresh tokens rotativos, login con límite de intentos, códigos de error tipados
    • Métricas Prometheus, trazas OTLP, health checks, apagado ordenado
    • E2E con Playwright sobre el stack real, pruebas de carga con k6, SQL comprobado al compilar

    Topología

    1. Expo · Tauri

      Móvil, web y escritorio

    2. Rust · Axum

      API HTTP tipada, JWT

    3. Rust · Tokio

      Tareas programadas

    4. PostgreSQL 18

      Triggers, RLS, análisis

    Puente hacia los datos

    La integridad la garantiza la base de datos: saldos mantenidos solo por triggers, seguridad a nivel de fila por usuario, funciones SQL de análisis para tendencias y presupuestos, importaciones idempotentes de exportaciones de terceros.

    Versión

    v1.3.0

    Código privado: demo a peticiónLeer el caso de estudio
  • Plataforma de datos completa sobre la calidad del aire en Emilia-Romaña, con los datos abiertos de ARPAE y el tiempo de Open-Meteo: ingesta en Rust a Parquet particionado, modelos dbt sobre DuckDB en local y BigQuery en GCP, orquestación con Dagster. Funciona en local con Docker, con dashboard y CI, y los mismos modelos se ejecutaron en BigQuery en un proyecto real de Google Cloud con resultados idénticos a DuckDB.

    Decisiones de ingeniería

    • Ingesta incremental idempotente: reprocesado de una ventana móvil y upsert sobre la clave natural
    • Modelos dbt por capas (staging, intermediate, marts) con historial de estaciones SCD Type 2
    • Calidad de los datos como código: tests de unicidad, completitud y frescura
    • Completitud medida frente a una rejilla temporal esperada, nunca rellenando los datos brutos
    • Límites legales en un seed de dbt, nunca escritos en el código
    • Los mismos modelos sobre DuckDB y BigQuery, infraestructura con Terraform

    Topología

    1. Rust

      ARPAE y Open-Meteo, idempotente

    2. Parquet

      Datos brutos particionados por año/mes

    3. dbt · DuckDB · BigQuery

      Staging, intermediate, marts

    4. Dagster

      Programación, backfill, linaje

    Puente hacia los datos

    Un proyecto de ingeniería de datos puro: medidas provisionales que se corrigen tras la validación, huecos y formatos incoherentes en la fuente, convertidos en un conjunto de datos histórico y con tests que responde sobre superaciones de los límites legales, tendencias de los contaminantes y relación con el tiempo.

    Versión

    v1.2.0

    RepositorioLeer el caso de estudio