Cos'è Snowflake
Snowflake è una piattaforma data cloud utilizzata dalle aziende per archiviare, elaborare e analizzare i dati. Per l'hosting si appoggia ai tre principali cloud provider: AWS (Amazon Web Services), GCP (Google Cloud Platform) e Microsoft Azure. Si tratta di una piattaforma completamente gestita: gli utenti non hanno accesso diretto all'infrastruttura sottostante. Una scelta in linea con l'obiettivo di Snowflake, ovvero rendere la piattaforma semplice da usare nascondendone la complessità, senza rinunciare a un set di funzionalità potente.
Tra gli aspetti distintivi di Snowflake spiccano la separazione tra livello di storage e di compute, il provisioning just-in-time e la sospensione automatica delle istanze di compute non utilizzate (i cosiddetti virtual warehouse). Il disaccoppiamento del livello di storage abilita funzionalità come lo zero-copy cloning e la condivisione dei dati.
Il modello di pricing di Snowflake
Come la maggior parte delle piattaforme SaaS (Software as a Service) in cloud, Snowflake adotta un pricing basato sul consumo. Anziché applicare una tariffa fissa mensile o annuale, misura i volumi di utilizzo di compute, storage e trasferimento dati, calcolando i costi in base a tariffe predefinite per ciascuna voce.
Snowflake utilizza una valuta interna chiamata "credit". Gli Snowflake Credit vengono consumati svolgendo attività all'interno della piattaforma, per esempio facendo girare i virtual warehouse. Il costo di ciascun credit dipende da tre fattori principali: edizione di Snowflake, regione di hosting e cloud provider.
Le edizioni di Snowflake
Le edizioni di Snowflake si possono considerare come i diversi piani offerti dalla piattaforma.
Attualmente sono disponibili quattro edizioni: Standard, Enterprise, Business Critical e Virtual Private Snowflake (VPS). Ogni edizione si distingue per le funzionalità incluse. I principali fattori di differenziazione sono i multi-cluster warehouse (scaling orizzontale), riservati ai clienti Enterprise, mentre le edizioni Business Critical e VPS puntano quasi esclusivamente su un livello superiore di sicurezza e protezione dei dati. Per il dettaglio completo delle funzionalità di ciascuna edizione, può consultare la documentazione di Snowflake.
Le regioni di Snowflake
Ogni account Snowflake è eseguito in un'unica regione. I clienti possono creare tutti gli account che desiderano, distribuendoli liberamente tra cloud provider e regioni diverse. Snowflake mette a disposizione oltre 35 regioni. Di norma, per l'account principale i clienti scelgono la stessa regione e lo stesso cloud provider dell'infrastruttura già in uso.
I vantaggi del pricing di Snowflake
Con il modello di pricing basato sul consumo di Snowflake si paga solo per le risorse effettivamente utilizzate. A questo si aggiunge la rapidità del provisioning (in genere meno di un secondo): i clienti possono sfruttare lo scaling automatico per spegnere i virtual warehouse inattivi senza temere problemi di performance al momento del riavvio.
Gli svantaggi del pricing di Snowflake
Il principale svantaggio del modello di pricing di Snowflake, come di tutti i modelli basati sul consumo, è la variabilità. Prima di adottare Snowflake è difficile produrre stime di costo accurate, perché le spese variano in base all'utilizzo. A questo si aggiunge la libertà degli utenti, che possono arrivare a spendere cifre importanti utilizzando virtual warehouse sovradimensionati: ecco perché è fondamentale dotarsi di solide pratiche di monitoraggio e di gestione del budget.
Snowflake è conveniente?
Snowflake è estremamente conveniente, a condizione di adottare le pratiche giuste. Consigliamo di implementare un monitoraggio rigoroso dei consumi, sfruttando la reportistica integrata nell'interfaccia di Snowflake, creando dashboard personalizzate oppure affidandosi a un prodotto come SELECT.
Prezzo degli Snowflake Credit (costo per credit)
Il costo di ciascun Snowflake Credit dipende da quattro fattori:
- Edizione di Snowflake
- Regione di hosting
- Cloud provider
- Sconti
Di seguito l'intervallo del costo per credit per ciascuna edizione, con condizioni di pagamento on-demand e fatturazione mensile dell'utilizzo. Il valore inferiore di ogni intervallo si riferisce alle tipiche regioni AWS statunitensi utilizzate dalla maggior parte dei clienti; il valore superiore alle regioni al di fuori degli Stati Uniti.
| Standard | Enterprise | Business Critical | VPS (Virtual Private Snowflake) |
|---|---|---|---|
| $2,00 - $3,10 | $3,00 - $4,65 | $4,00 - $6,20 | $6,00 - $9,30 |
La maggior parte dei clienti sceglie di pagare Snowflake tramite contratti di capacity commitment (capacity pricing), che prevedono l'acquisto anticipato dell'utilizzo. Optare per un contratto di capacity commitment consente di ottenere sconti sui prezzi per credit, su una scala progressiva.
Per una tabella completa dei costi degli Snowflake Credit su tutti i cloud e tutte le regioni, può consultare la Snowflake Credit Consumption Table.
Il pricing di ciascun servizio Snowflake
Pricing dei virtual warehouse
I virtual warehouse rappresentano in genere la principale voce di costo, perché vengono utilizzati per eseguire le query. I clienti spesso si riferiscono a questa voce come "compute cost". Il prezzo dei warehouse Snowflake varia in base alle loro dimensioni. Di seguito l'elenco delle dimensioni dei virtual warehouse con i relativi costi:
| Dimensione warehouse | Credit / ora | Credit / ora Snowpark-Optimized |
|---|---|---|
| X-Small | 1 | N/A |
| Small | 2 | N/A |
| Medium | 4 | 6 |
| Large | 8 | 12 |
| X-Large | 16 | 24 |
| 2X-Large | 32 | 48 |
| 3X-Large | 64 | 96 |
| 4X-Large | 128 | 192 |
| 5X-Large | 256 | 384 |
| 6X-Large | 512 | 768 |
A ogni incremento di dimensione le risorse disponibili raddoppiano. I warehouse Snowpark-optimized sono una tipologia più recente, con una memoria 16 volte superiore rispetto al warehouse "standard" di pari dimensione, a un costo 1,5 volte maggiore.
I costi di compute dei virtual warehouse rappresentano in genere l'80% della bolletta di un cliente Snowflake. Non sorprende, quindi, che siano il principale punto di intervento di qualsiasi attività di ottimizzazione dei costi.
Pricing serverless
Per le funzionalità serverless di Snowflake come Snowpipe, Automatic Clustering e Serverless Task, i credit vengono consumati applicando un moltiplicatore specifico per ciascuna funzionalità. Tra i servizi più economici dal punto di vista del moltiplicatore figurano Query Acceleration e Snowpipe Streaming, entrambi con moltiplicatore 1X. Tra le funzionalità più costose ci sono invece il Search Optimization Service e le Materialized View, che applicano un moltiplicatore 2X.
| Funzionalità | Moltiplicatore Compute Credit | Moltiplicatore Cloud Services | Extra |
|---|---|---|---|
| Clustered Tables | 2 | 1 | - |
| Data Quality Monitoring | 2 | 1 | - |
| Hybrid Tables Requests | 1 | 1 | 1 Credit ogni 30GB letti e 1 Credit ogni 7,5GB scritti |
| Logging | 1,25 | - | 0,28 Credit ogni 1000 batch di file |
| Manutenzione Materialized View | 2 | 1 | - |
| Open Catalog | - | - | 0,5 Credit per 1 milione di richieste |
| Query Acceleration | 1 | - | - |
| Replication | 2 | 0,35 | - |
| Search Optimization Service | 2 | 1 | - |
| Sensitive Data Classification | 0,9 | 1 | - |
| Serverless Alert | 0,9 | 1 | - |
| Serverless Task | 0,9 | 1 | - |
| Serverless Task Flex | 0,9 | 1 | - |
| Snowpipe | 1,25 | - | 0,06 Credit ogni 1000 file |
| Snowpipe Streaming | 1 | - | 0,01 Credit per istanza client all'ora |
| Trust Center | 1 | 1 | - |
Pricing dello storage
Snowflake archivia i dati in un formato file proprietario chiamato micro-partition, all'interno del servizio di cloud storage del provider sottostante (Amazon S3, Azure Blob Storage o Google Cloud Storage).
Per lo storage, Snowflake applica un pricing diretto in dollari. Anche qui i prezzi variano in base a cloud provider e regione. I clienti delle regioni AWS statunitensi pagano $23 per TB al mese, mentre le regioni fuori dagli Stati Uniti risultano, ancora una volta, più costose. Sul sito di Snowflake trova un dettaglio completo dei costi di storage per ogni regione.
Se cerca un approfondimento sui costi di storage di Snowflake, le consigliamo il nostro articolo dedicato qui. Per ottenere risultati rapidi nella riduzione dei costi di storage superflui, può interrogare il suo account per individuare le tabelle inutilizzate ed eliminarle.
Costi di trasferimento dati
Il trasferimento dati è il processo di spostamento dei dati in entrata e in uscita da Snowflake. I dati in entrata vengono indicati come "ingress", quelli in uscita come "egress". Ecco alcune indicazioni importanti sul funzionamento dei costi di trasferimento dati in Snowflake:
- Snowflake non addebita costi per i dati in ingress.
- Il trasferimento di dati all'interno della stessa regione e dello stesso cloud provider è gratuito.
- Solo alcune funzionalità specifiche di Snowflake generano costi di trasferimento dati (unloading dei dati, replication, uso di external function ecc.: vedi qui).
- Gli addebiti per egress non si applicano quando un client o un driver Snowflake recupera i risultati di una query, anche se ciò avviene tra piattaforme cloud o regioni diverse.
Anche in questo caso, il dettaglio completo dei costi è disponibile sul sito di Snowflake.
Costi dei Cloud Services
Il livello cloud services di Snowflake si occupa di tutto ciò che non è strettamente legato all'archiviazione e all'elaborazione dei dati: autenticazione, compilazione delle query e zero-copy cloning, per citarne alcuni. Il pricing dei cloud services segue un modello di tipo "fair use": finché il loro utilizzo non supera il 10% di quello di compute, non vengono addebitati costi aggiuntivi. Per esempio, se un cliente consuma 100 compute credit e 5 cloud services credit, questi ultimi si annullano:
| Servizio | Credit utilizzati |
|---|---|
| Compute | 100 |
| Cloud Services | 5 |
| Rebate Cloud Services | -5 |
| Totale | 100 |
Se invece i cloud services credit salgono a 15:
| Servizio | Credit utilizzati |
|---|---|
| Compute | 100 |
| Cloud Services | 15 |
| Rebate Cloud Services | -10 |
| Totale | 105 |
Vengono rimborsati solo 10 credit, pari al 10% dei compute credit utilizzati. Al cliente vengono quindi addebitati 5 cloud services credit.
Grazie a questa policy del 10%, la maggior parte dei clienti non paga mai per i cloud services. Gli scenari in cui ciò non avviene riguardano in genere l'esecuzione di un gran numero di query semplici, che presentano un costo di cloud services elevato rispetto al costo di compute.
Pricing di Snowpark Container Services
Snowpark Container Services (SPCS) è la nuova offerta container completamente gestita di Snowflake, disponibile dal 2024. SPCS consente ai clienti Snowflake di eseguire workloads containerizzati direttamente all'interno di Snowflake. Per saperne di più, può consultare la documentazione di Snowflake.
SPCS gira sui Compute Pool, che sono diversi dai virtual warehouse. I credit all'ora per ciascun tipo di compute sono riportati di seguito:
| Tipo di Compute Node | XS | S | M | L |
|---|---|---|---|---|
| CPU | 0,06 | 0,11 | 0,22 | 0,83 |
| High-Memory CPU | N/A | 0,28 | 1,11 | 4,44 |
| GPU | 0,25 | 0,57 | 2,68 | 14,12 |
Di seguito un dettaglio per ciascun tipo di compute node:
| INSTANCE_FAMILY | vCPU | Memoria (GiB) | Storage (GiB) | GPU | Memoria GPU per GPU (GiB) | Limite max. | Descrizione |
|---|---|---|---|---|---|---|---|
| CPU - XS | 2 | 8 | 250 | N/A | N/A | 50 | L'istanza più piccola disponibile per Snowpark Containers. Ideale per contenere i costi e per muovere i primi passi. |
| CPU - S | 4 | 16 | 250 | N/A | N/A | 50 | Ideale per ospitare più servizi/job contenendo i costi. |
| CPU - M | 8 | 32 | 250 | N/A | N/A | 20 | Ideale per applicazioni full stack o per più servizi. |
| CPU - L | 32 | 128 | 250 | N/A | N/A | 20 | Per applicazioni che richiedono un numero insolitamente elevato di CPU, memoria e storage. |
| High-Memory CPU - S | 8 | 64 | 250 | N/A | N/A | 20 | Per applicazioni memory-intensive. |
| High-Memory CPU - M | 32 | 256 | 250 | N/A | N/A | 20 | Per ospitare più applicazioni memory-intensive su un'unica macchina. |
| High-Memory CPU - L | 128 | 1024 | 250 | N/A | N/A | 20 | La macchina high-memory più grande disponibile per l'elaborazione di grandi volumi di dati in memoria. |
| GPU - S | 8 | 32 | 250 | 1 NVIDIA A10G | 24 | 10 | La nostra GPU NVIDIA più piccola, ideale per iniziare con Snowpark Containers. |
| GPU - M | 48 | 192 | 250 | 4 NVIDIA A10G | 24 | 5 | Ottimizzata per scenari di utilizzo intensivo della GPU, come Computer Vision o LLM/VLM. |
| GPU - L | 192 | 2048 | 250 | 8 NVIDIA A100 | 40 | Su richiesta | L'istanza GPU più grande, pensata per casi d'uso GPU specializzati e avanzati come LLM, clustering ecc. |
Un esempio di pricing Snowflake
Vediamo un esempio realistico di pricing Snowflake su base mensile. Ipotizziamo di gestire una piattaforma dati per un'azienda di dimensioni contenute, con job di caricamento dati, trasformazioni e uno strumento di BI che interroga i dati trasformati. Abbiamo anche alcuni Snowpipe che effettuano ingestion da S3 e un paio di tabelle con l'automatic clustering attivo per mantenere performanti i predicati WHERE su una colonna data. In totale sull'account abbiamo 5TB di storage; l'account Snowflake gira in AWS US East 1 in edizione Enterprise. Ogni credit costa $3.
Frequently asked
questions
Snowflake offre un piano gratuito o una prova gratuita?
Sì, è possibile attivare una prova gratuita di Snowflake con $400 di credit gratuiti a questo link.
Qual è la soglia minima di fatturazione di Snowflake?
Snowflake non prevede una soglia minima di fatturazione per il pricing on-demand. L'importo minimo per un contratto di capacity commitment è di $25.000.
Come funzionano i Capacity Contract di Snowflake?
Per i clienti che spendono oltre (o intorno a) $25.000 all'anno su Snowflake, ha senso valutare la sottoscrizione di un contratto annuale di capacity commitment: Snowflake riconosce sconti e mette a disposizione un account manager dedicato. Lo sconto più consistente è sullo storage, il cui prezzo passa dalla tariffa on-demand di $40/TB a $23/TB.
Con i contratti Snowflake, si paga in anticipo per una capacity pre-impegnata. Man mano che si utilizza Snowflake e si consumano gli Snowflake Credit, Snowflake li scala dal saldo disponibile. Se si supera la capacity pre-impegnata, è possibile acquistarne di aggiuntiva. Se invece si utilizza meno capacity di quella acquistata, è possibile riportare la quota inutilizzata sul contratto successivo, a condizione che il nuovo contratto sia di importo pari o superiore.
Per questa ragione è importante non sovrastimare la capacity necessaria: ci si potrebbe altrimenti trovare a rinunciare a tutta la capacity inutilizzata pur di rinnovare a una tariffa inferiore ed evitare di continuare a sovra-impegnarsi.
Snowflake offre sconti?
Snowflake offre sconti sui contratti di capacity commitment, che crescono in funzione della capacity acquistata e della durata del contratto (per esempio 1 anno vs. 3 anni). Le fasce e gli importi degli sconti non sono resi pubblici.
BigQuery vs. Snowflake: che differenze ci sono nel pricing?
Google BigQuery offre due modelli di pricing: on-demand e capacity. Pur condividendo lo stesso nome dei modelli di Snowflake, sono molto diversi. Nella modalità on-demand, BigQuery addebita in base alla quantità di dati scansionati da ogni query. Nel modello capacity, addebita per slot/ora, dove uno slot è un'unità di compute. Questo modello è molto simile a quello di Snowflake e condivide lo stesso incremento di fatturazione al secondo e l'addebito minimo di 1 minuto. Come Snowflake, anche BigQuery propone diverse edizioni con disponibilità di funzionalità differenti.
Databricks vs. Snowflake: che differenze ci sono nel pricing?
Databricks si distingue da Snowflake e BigQuery perché esegue i workloads su istanze di compute pagate all'interno del proprio account cloud. Di conseguenza, i costi sono sia verso Databricks sia all'interno del proprio account cloud. Databricks offre anche un modello Serverless SQL, in cui le istanze di compute sono gestite direttamente da Databricks: in questo caso i costi sono pagati solo a Databricks. Questo modello è più vicino a quelli di pricing e di funzionamento di Snowflake e BigQuery.
Redshift vs. Snowflake: che differenze ci sono nel pricing?
Amazon Redshift propone due modelli operativi e di pricing: DC2 e RA3. DC2 è il modello di deployment di data warehouse più tradizionale, in cui istanze di compute e storage locale sono accoppiati. RA3, invece, separa storage e compute. Il vantaggio di questo approccio è la riduzione al minimo della capacity in eccesso, poiché compute e storage possono scalare in modo indipendente in funzione delle esigenze del cliente. RA3 è l'opzione più vicina a Snowflake.
Snowflake è costoso?
Si dice spesso che Snowflake sia costoso e, se gestito male, può effettivamente esserlo. Tra i principali responsabili di costi fuori controllo ci sono i clienti che non scelgono la dimensione corretta del warehouse o che creano troppi warehouse senza controlli adeguati. Tuttavia, qualsiasi piattaforma cloud basata sul consumo può diventare costosa se non viene usata con criterio: non è una peculiarità di Snowflake. Con i processi, il monitoraggio e la gestione giusti, Snowflake può essere una scelta molto conveniente come piattaforma dati cloud. Noi di SELECT abbiamo costruito l'intera nostra piattaforma dati su Snowflake proprio per la sua facilità d'uso, la scalabilità e la convenienza economica.
Niall Woodward·Co-founder & CTO di SELECT
Niall è Co-founder e CTO di SELECT, una piattaforma SaaS per la gestione e l'ottimizzazione dei costi di Snowflake. Prima di SELECT, è stato data engineer in Brooklyn Data Company e in diverse startup. Appassionato di open-source, è anche maintainer di SQLFluff e creatore di tre pacchetti dbt: dbt_artifacts, dbt_snowflake_monitoring e dbt_query_tags.
Ian Whitestone·Co-founder & CEO di SELECT
Ian è Co-founder e CEO di SELECT, una piattaforma SaaS per la gestione e l'ottimizzazione dei costi di Snowflake. Prima di fondare SELECT, ha guidato per 6 anni team full stack di data science ed engineering in Shopify e Capital One. In Shopify, Ian ha guidato i progetti di ottimizzazione del data warehouse e di aumento della cost observability.