0002. ETL code-first in TypeScript (vs Talend)
- Stato: Accettata
- Data: 2026-06-03
- Decisori: Team BI/ETL
Contesto
Sviluppiamo applicazioni di Business Intelligence con forte componente ETL, storicamente gestita con strumenti come Talend. Gli strumenti ETL grafici hanno limiti: versionamento difficile, test automatici scomodi, review opache, riuso limitato, lock-in. Il nostro ecosistema (noeva) è già TypeScript/Node con pnpm, tsup, vitest.
Decisione
Realizziamo l'ETL code-first in TypeScript, con un framework interno che mappa i concetti Talend (componenti, job, schema, context, reject flow) su primitive tipate (Source, Sink, Transform, Pipeline, contratti Zod, RunContext, dead-letter).
Stack: TypeScript ESM strict, Node ≥20, pnpm, tsup, vitest, ESLint, Prettier. Validazione dati con Zod. Coerente con le convenzioni dell'ecosistema noeva.
Alternative considerate
- Talend / ETL grafico — versioning e testing deboli, review difficile, lock-in.
- Airflow/dbt (Python) — ottimi, ma introducono un secondo ecosistema (Python) fuori dal nostro stack TS.
- Framework TS esistenti — valutabili per casi specifici, ma volevamo primitive minime, controllate e senza dipendenze pesanti.
Conseguenze
- Positive: pipeline versionate, testabili, rivedibili come codice; riuso di connettori/trasformazioni; coerenza con noeva; nessun lock-in.
- Costi: manteniamo noi il framework core (mitigato dal fatto che è minimale e testato).
- Le pipeline complesse stateful (aggregazioni grandi) richiedono attenzione alla modalità streaming vs dead-letter (documentato).

