(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
Expo · Tauri
Móvil, web y escritorio
Rust · Axum
API HTTP tipada, JWT
Rust · Tokio
Tareas programadas
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.
Código privado: demo a petición→Leer el caso de estudio→Versión
v1.3.0
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
Rust
ARPAE y Open-Meteo, idempotente
Parquet
Datos brutos particionados por año/mes
dbt · DuckDB · BigQuery
Staging, intermediate, marts
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.
Repositorio↗Leer el caso de estudio→Versión