dbt Core vs dbt Cloud: Differenze, Casi d'Uso e Come Scegliere la Soluzione Giusta
dbt Core è open-source e gratuito ma richiede infrastruttura propria; dbt Cloud aggiunge IDE web, scheduler, lineage avanzato e Semantic Layer. Confronto onesto su features, costi e quando il self-hosting ha senso rispetto al managed service.
La Distinzione Fondamentale
È importante capire subito una cosa: dbt Core e dbt Cloud usano lo stesso motore. I modelli SQL, le macro Jinja, i test YAML, i file di configurazione - sono identici. dbt Cloud non è un prodotto diverso: è un managed service che wrappa dbt Core aggiungendo infrastruttura e strumenti di produttività.
La scelta tra i due non è tecnica ma organizzativa: dipende dalla dimensione del team, dalla maturità della piattaforma dati, e da quanto tempo e infrastruttura sei disposto a gestire internamente.
dbt Core: Il Motore Open-Source
dbt Core è il progetto open-source mantenuto da dbt Labs. È un CLI Python installabile con pip, completamente gratuito, senza limiti su modelli o utenti.
-- Installazione dbt Core (esempio con adapter Snowflake)
pip install dbt-snowflake==1.8.0
-- Verificare la versione
dbt --version
-- Cosa ottieni con dbt Core:
-- * dbt run, dbt test, dbt docs, dbt source freshness
-- * Tutti i tipi di materializzazione
-- * Macro e package (packages.yml + dbt deps)
-- * Jinja2 templating completo
-- * Schema.yml per documentazione e test
-- * Adapter per 40+ warehouse (Snowflake, BigQuery, Redshift, Databricks, DuckDB...)
-- * Integrazione con qualsiasi orchestratore (Airflow, Prefect, Dagster)
Cosa dbt Core NON Include
Per usare dbt Core in produzione devi costruire e gestire tu stesso:
- Scheduler e orchestrazione: Airflow, Prefect, Dagster, o cron job
- IDE/editor: VS Code + estensione dbt Power User, o qualsiasi editor
- CI/CD: GitHub Actions, GitLab CI, Jenkins - configurazione manuale
- Hosting del catalogo dbt docs: GitHub Pages, S3 static website, Netlify
- Gestione degli artifact (manifest.json): S3, GCS, o altro storage per Slim CI
- Monitoraggio delle esecuzioni: logging custom, alerting Slack/email
- Gestione multi-ambiente: profiles.yml con variabili d'ambiente
dbt Cloud: Il Managed Service
dbt Cloud è la piattaforma SaaS di dbt Labs. Fornisce un'interfaccia web completa per sviluppare, schedulare, monitorare e documentare i progetti dbt senza gestire infrastruttura. Il pricing è per developer seat (2024):
dbt Cloud Developer (gratuito)
- 1 developer seat
- 1 ambiente di produzione
- IDE web (cloud IDE)
- Scheduler base (1 job)
- Documentazione e lineage base
- Limite: 1 progetto, 1 utente
dbt Cloud Team (~50 USD/mese per seat)
- Multiple developer seat
- Ambienti illimitati (dev/staging/prod)
- CI/CD integrato (pull request check)
- Job scheduling avanzato
- Notifiche Slack/email
- SSO (Google, GitHub)
dbt Cloud Enterprise (pricing custom)
- dbt Explorer (lineage avanzato)
- Column-level lineage automatico
- dbt Semantic Layer (MetricFlow)
- Controllo accessi granulare (RBAC)
- Audit log
- SLA garantito + supporto dedicato
- Integrazione con Tableau, Looker, PowerBI
dbt Cloud Developer Free
- Piano gratuito ottimo per:
- Apprendimento e prototipazione
- Progetti personali
- Valutare la piattaforma
- Freelancer/consulenti su singoli progetti
Confronto Feature-by-Feature
1. Sviluppo (IDE e Ambiente)
# dbt Core: sviluppo in locale
# Setup:
# 1. Clona il repository
# 2. Configura profiles.yml con credenziali warehouse
# 3. Apri VS Code (estensione consigliata: dbt Power User)
# 4. dbt run / dbt test dalla CLI
# Vantaggi: workflow git-native, qualsiasi editor, nessuna dipendenza da internet
# Svantaggi: ogni developer configura il proprio ambiente, onboarding più lento
# dbt Cloud IDE: sviluppo nel browser
# Setup:
# 1. Accedi a cloud.getdbt.com
# 2. Configura il progetto (git repo + warehouse connection)
# 3. Ogni developer ha il proprio schema di sviluppo isolato automaticamente
# 4. Commit, preview, run direttamente nel browser
# Vantaggi: zero setup locale, schema isolati per sviluppatore, preview dei risultati inline
# Svantaggi: dipende dalla connessione internet, meno flessibile per workflows complessi
2. Scheduling e Orchestrazione
# dbt Core: orchestrazione con Airflow (esempio tipico)
# Richiede setup di Airflow + dbt Airflow provider
from airflow.decorators import dag, task
from airflow.operators.bash import BashOperator
from datetime import datetime
@dag(schedule_interval='0 6 * * *', start_date=datetime(2024, 1, 1))
def dbt_daily_pipeline():
run_models = BashOperator(
task_id='dbt_run',
bash_command='cd /opt/dbt && dbt run --target prod --select tag:daily',
env={'DBT_PROFILES_DIR': '/opt/dbt'}
)
run_tests = BashOperator(
task_id='dbt_test',
bash_command='cd /opt/dbt && dbt test --target prod --select tag:daily',
env={'DBT_PROFILES_DIR': '/opt/dbt'}
)
run_models >> run_tests
# dbt Cloud: scheduling con job UI
# Configurazione tramite interfaccia web (o API dbt Cloud)
# Job: "Daily Production Run"
# Schedule: "Every day at 6:00 AM UTC"
# Commands:
# - dbt deps
# - dbt source freshness
# - dbt build --target prod --select tag:daily
# Notifications:
# - Slack: #data-alerts (on failure)
# - Email: team@company.com (on failure + success)
# Retry: 1 volta dopo 10 minuti in caso di failure
3. CI/CD e Pull Request Testing
Questa è una delle aree dove dbt Cloud Team porta più valore aggiunto rispetto al self-hosting:
# dbt Core + GitHub Actions: CI manuale da configurare
# .github/workflows/dbt-ci.yml
name: dbt CI
on:
pull_request:
branches: [main]
jobs:
dbt_ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dbt
run: pip install dbt-snowflake==1.8.0
- name: dbt deps
run: dbt deps
- name: dbt build (modificati + downstream)
run: dbt build --select state:modified+ --defer --state ./prod-artifacts
env:
SNOWFLAKE_PASSWORD: ${{ secrets.SNOWFLAKE_PASSWORD }}
DBT_TARGET: ci
# dbt Cloud Team: CI integrato nella UI
# Configurazione: Project Settings > Continuous Integration
# - Trigger: aperta PR su branch main
# - Commands: dbt build --select state:modified+
# - Schema CI: nome schema automatico (dbt_ci_pr123)
# - Commento automatico sulla PR con risultati (successo/failure + righe fallite)
# - Cleanup automatico schema CI dopo merge/close PR
# Vantaggio chiave: nessuna infrastruttura CI da mantenere
# Gli artifact di produzione (manifest.json) sono gestiti automaticamente da dbt Cloud
4. Lineage e Documentazione
dbt Explorer (Enterprise): Documentazione di Nuova Generazione
dbt Explorer è il catalogo avanzato di dbt Cloud Enterprise. A differenza
di dbt docs generate (statico), Explorer è un'applicazione
live che si aggiorna ad ogni run di produzione. Include:
- Column-level lineage automatico (analisi SQL senza annotazioni manuali)
- Ricerca full-text su descrizioni e nomi di colonne
- Impact analysis: “cosa si rompe se cambio questa colonna?”
- Performance history per ogni modello (tempo medio, varianza)
- Integrazione con Tableau, Looker, PowerBI per lineage end-to-end
Il Caso del Self-Hosting: Quando dbt Core Basta
Con un investimento iniziale di configurazione, dbt Core su orchestratori open-source può fare quasi tutto ciò che dbt Cloud Team fa. Ecco lo stack tipico self-hosted per team intermedi:
# Stack dbt Core self-hosted (per team 3-10 persone)
componenti:
dbt_core: "1.8.x - motore di trasformazione"
orchestratore: "Airflow 2.x su EC2/GKE oppure Prefect Cloud free tier"
ide: "VS Code + dbt Power User extension"
ci_cd: "GitHub Actions (configurazione manuale ~1 giorno)"
documentazione: "dbt docs generate → GitHub Pages (gratuito)"
artifacts_storage: "S3 bucket per manifest.json (Slim CI)"
monitoring: "Airflow logs + Slack webhook custom"
costo_mensile_stimato:
orchestratore_airflow_ec2: "~30 EUR/mese (t3.medium)"
s3_artifacts: "~1 EUR/mese"
totale: "~31 EUR/mese"
tempo_setup_iniziale: "3-5 giorni (DevOps + dbt engineer)"
tempo_manutenzione: "2-4 ore/mese (aggiornamenti, monitoring)"
Guida alla Scelta: Decision Framework
Risposta rapida: dbt Core self-hosted è sufficiente per team tecnici con infrastruttura già in piedi; dbt Cloud Team conviene quando il costo del developer time per setup e manutenzione supera il costo della subscription.
Scegli dbt Core quando:
- Hai già Airflow/Prefect/Dagster in produzione
- Il team è piccolo (1-3 persone) e tecnico
- Compliance/sicurezza richiede tutto on-premise
- Budget limitato e disponibilità tecnica alta
- Vuoi controllo totale sull'infrastruttura
- Stai valutando dbt prima di commitarsi
Scegli dbt Cloud quando:
- Il team cresce e l'onboarding deve essere rapido
- Non hai un orchestratore e non vuoi gestirne uno
- Hai analisti non-tecnici che usano l'IDE web
- Il CI/CD da zero richiede troppo tempo
- Hai bisogno del Semantic Layer (MetricFlow)
- Il costo di opportunità del tempo DevOps supera la subscription
Migrazione dbt Core → dbt Cloud
Se inizi con dbt Core e poi migri a dbt Cloud, la transizione è quasi indolore perché il codice è identico. L'unica cosa che cambia è dove viene eseguito e come vengono gestite le credenziali:
# Prima: profiles.yml locale
my_project:
target: dev
outputs:
dev:
type: snowflake
account: "{{ env_var('SNOWFLAKE_ACCOUNT') }}"
user: "{{ env_var('SNOWFLAKE_USER') }}"
password: "{{ env_var('SNOWFLAKE_PASSWORD') }}"
database: analytics
warehouse: compute_wh
schema: dbt_dev_{{ env_var('DBT_USER', 'unknown') }}
# Dopo: connessione configurata nella UI dbt Cloud
# I credentials non sono più in profiles.yml
# dbt Cloud gestisce internamente le variabili d'ambiente
# Il file profiles.yml può essere rimosso o mantenuto solo per uso locale
# L'unico cambio nel codice: il profiles.yml non è deployato su dbt Cloud
# (le connessioni sono configurate tramite UI o API)
dbt Semantic Layer: Disponibile Solo su Cloud Enterprise
Una feature esclusiva di dbt Cloud che merita una menzione a parte è il Semantic Layer (basato su MetricFlow). È la risposta di dbt Labs al problema delle “metriche multiple”: ogni analista calcola il revenue in modo leggermente diverso, e ogni dashboard mostra numeri diversi per lo stesso KPI.
# Il Semantic Layer definisce le metriche una volta sola
# e le espone a qualsiasi tool BI tramite API standardizzata
# dbt Core: puoi definire le metriche in YAML (MetricFlow è open-source)
# ma l'integrazione con BI tool richiede dbt Cloud Enterprise
# In dbt Core, MetricFlow può essere usato via CLI:
pip install dbt-metricflow
# Query metriche da CLI (funziona anche senza Cloud):
mf query \
--metrics revenue \
--group-by order_date__month
# Integrazione con BI tool (Tableau, Looker, PowerBI):
# SOLO dbt Cloud Enterprise tramite Semantic Layer API
# (JWT-based authentication, JDBC/ADBC connection string)
Funzionalità in Anteprima: dbt Explorer vs Docs
Un confronto diretto tra il catalogo di dbt Core e quello di dbt Cloud:
dbt docs (dbt Core)
- Generato staticamente con
dbt docs generate - Statico: si aggiorna solo alla riesecuzione
- Node-level lineage (modello → modello)
- SQL compilato visibile
- Test configurati visibili
- Hosting: GitHub Pages o qualsiasi static server
- Costo: gratuito
dbt Explorer (dbt Cloud Enterprise)
- Aggiornato in tempo reale dopo ogni run
- Column-level lineage automatico
- Impact analysis: “cosa si rompe se cambio X?”
- Performance history per modello
- Ricerca full-text su tutto il catalogo
- Integrazione lineage con Tableau/Looker
- Costo: incluso nel piano Enterprise (~50 USD/seat/mese)
Considerazioni Pratiche: Un Percorso Evolutivo
Il consiglio più onesto: non devi scegliere definitivamente da subito. Molti team partono con dbt Core, costruiscono esperienza e comprensione del progetto, e poi valutano dbt Cloud quando identificano problemi concreti che Cloud risolverebbe. I costi di migrazione sono minimi perché il codice è identico.
# Segnali che indicano che è il momento di valutare dbt Cloud Team:
segnali_migrazione:
- "Onboarding di un nuovo developer richiede >2 giorni per setup locale"
- "Le PR aspettano il CI per >15 minuti (compute CI troppo alto)"
- "Gli analisti SQL vorrebbero modificare modelli ma temono la CLI"
- "Airflow/Prefect occupano il 20%+ del tempo di un engineer"
- "Il catalogo di documentazione è sempre disallineato dalla realtà"
- "I PR non hanno check automatici e le rotture vanno in produzione"
# Se hai 3+ di questi segnali, il ROI di dbt Cloud Team è quasi certamente positivo.
# Se hai 0-1 segnali, dbt Core self-hosted è probabilmente sufficiente.
Conclusioni e Prossimi Passi
Non esiste la scelta universalmente migliore. dbt Core è eccellente per team tecnici che vogliono controllo totale; dbt Cloud ripaga il suo costo quando il tempo risparmiato su infrastruttura e onboarding supera la subscription.
La cosa più importante: inizia con dbt Core. Capisci cosa manca, cosa è difficile da gestire, e poi valuta se dbt Cloud risolve quei problemi specifici nel tuo contesto.
Il prossimo modulo affronta il tema CI/CD in profondità: come configurare GitHub Actions con Slim CI per testare solo i modelli modificati, risparmiando fino al 90% del tempo di CI rispetto a un full run.

Commenti
Caricamento commenti...
Accedi per commentare