Gestito correttamente, Snowflake è una delle piattaforme data cloud più convenienti sul mercato. Eppure molte aziende faticano a tenere sotto controllo i costi di Snowflake, proprio a causa della sua facilità d'uso e dell'ampia diffusione all'interno delle organizzazioni.
In SELECT abbiamo affiancato oltre 100 aziende nell'implementare strategie di cost management e ottimizzazione su Snowflake. Queste strategie si possono ricondurre a 6 aree chiave, che a nostro avviso costituiscono le fondamenta di qualsiasi strategia di cost management per Snowflake. In questo articolo approfondiamo queste 6 aree e condividiamo le lezioni pratiche apprese lavorando con i nostri clienti.
1\. Visibilità
Prima di poter incidere sui costi è necessario dotarsi di strumenti che garantiscano una piena visibilità. Senza sapere cosa alimenta i consumi di Snowflake e come queste voci evolvono nel tempo, non si saprà dove concentrare gli sforzi.
Se è Lei a gestire i costi di Snowflake, dovrebbe essere in grado di rispondere rapidamente a queste domande:
- Qual è la spesa media mensile su Snowflake?
- Quale quota del valore contrattuale acquistato si prevede di consumare?
- Quanto si spende all'anno (in $, non in credits) per ciascun virtual warehouse, serverless task, database e così via?
- Qual è il costo di ciascun query workload in esecuzione nell'ambiente?
- Quanti consumi genera ogni utente o team sull'account?
- Come è cambiata ciascuna di queste voci negli ultimi X giorni?
Cost Management in Snowsight
La sezione Snowflake Cost Management, sotto Admin, è un ottimo punto di partenza. Da qui è possibile individuare:
- Costi a livello di organizzazione:
- Valore contrattuale totale
- Saldo residuo
- Spesa totale
- Consumo di credits (non $) a livello di account:
- Per tipo di servizio
- Per risorsa (es. virtual warehouse)
È importante sapere che i valori di consumo dei credits nella tab Snowflake consumption possono risultare sovrastimati fino al 10%, perché includono i credits dei Cloud Services. Il consumo dei cloud services viene fatturato solo se supera il 10% dei costi giornalieri di compute. La maggior parte dei clienti non paga i costi dei cloud services, quindi i numeri dello screenshot qui sopra risultano quasi sempre gonfiati. Per approfondire, consulti questa pagina.
L'esigenza di andare più a fondo
Prima o poi quasi tutti i clienti Snowflake si scontrano con i limiti della UI di Cost Management in admin e si trovano davanti a un bivio: investire risorse interne consistenti per costruire dashboard di monitoraggio proprietari, oppure affidarsi a una piattaforma terza di fiducia come SELECT.
Il motivo, in fondo, è uno solo: l'esigenza di andare più a fondo. La UI di Cost Management offre un buon riepilogo della spesa e indica i principali driver di consumo. Nello screenshot qui sopra si vede che il warehouse in testa concentra gran parte dei costi. Ma perché? Cosa, all'interno di quel warehouse, sta davvero generando quei costi?
Per avere maggiore visibilità sui costi all'interno dei virtual warehouse, consigliamo di calcolare il costo di ogni query e di aggregare poi questi valori in costi a livello di workload tramite i metadati delle query. I metadati possono essere tag o commenti personalizzati aggiunti alle query, oppure provenire da strumenti come dbt o Looker. Una volta impostato tutto questo, è semplice capire quali siano i veri driver di compute in ciascun virtual warehouse:
Al di là dei virtual warehouse, ci sono altri servizi Snowflake in grado di generare consumi rilevanti, come Snowpipe, Automatic Clustering, Search Optimization e Query Acceleration. Per gestire i costi in modo efficace serve una visibilità dettagliata su ogni risorsa Snowflake e sul relativo trend di consumo nel tempo. E, soprattutto, queste informazioni devono essere a un click di distanza.
Ecco un esempio di dashboard che si può costruire per visualizzare i costi di Automatic Clustering di una singola tabella.
E un altro esempio che mostra i costi di un singolo Snowpipe, con i suggerimenti per ridurli:

2\. Attribuzione
Una volta compresi i driver di costo, servono modalità flessibili per allocarli alle diverse aree dell'organizzazione.
Tra i metodi più diffusi per attribuire i costi ci sono:
- Utilizzare gli object tag di Snowflake per associare virtual warehouse e altre risorse a team, dipartimenti o progetti
- Aggiungere metadati alle query tramite query tag che identificano team, progetto o caso d'uso di appartenenza
- Assegnare manualmente le risorse a gruppi diversi nello strumento di reporting
Qualsiasi strumento di cost reporting, costruito internamente o acquistato, dovrebbe permettere di allocare i costi a gruppi diversi in modo flessibile e di visualizzarne e monitorarne l'utilizzo nel tempo. Ecco un esempio della spesa del nostro account Snowflake suddivisa per Usage Groups:
Analizzando i costi per dipartimento o progetto emergono spesso opportunità e driver di spesa che, guardando alle singole risorse, sarebbero invisibili.
3\. Controlli
Visibilità e attribuzione dicono quanto si sta spendendo, ma servono anche controlli che evitino a monte la spesa superflua. Sono quattro i controlli che consigliamo ai clienti Snowflake di valutare all'interno della propria strategia di cost management.
Access Control
Snowflake offre solide funzionalità di access control che permettono di mantenere un controllo granulare su chi può fare cosa. L'access control è uno strumento spesso sottovalutato per il controllo dei costi. Limitare, ad esempio, gli utenti che possono eseguire query sui virtual warehouse più grandi e costosi può essere molto efficace. Allo stesso modo, restringere l'accesso alla creazione e modifica dei warehouse evita che vengano avviati per errore warehouse di grandi dimensioni, con consumi superflui.
Query Timeouts
I query timeouts sono una salvaguardia integrata in Snowflake, pensata per interrompere le query che superano una durata prestabilita. È una misura preventiva contro le spese eccessive generate da query troppo lunghe. Superata la soglia di timeout, Snowflake termina automaticamente la query.

Un uso accorto dei query timeouts aiuta a contenere l'impatto delle query fuori controllo. Per impostazione predefinita, Snowflake lascia girare le query fino a due giorni prima di annullarle, con il rischio di accumulare costi consistenti. Consigliamo di impostare query timeouts su tutti i warehouse per limitare il costo massimo che una singola query può generare.
Resource Monitors
Come i query timeouts, anche i resource monitors permettono di limitare il costo complessivo di un determinato warehouse. Possono essere usati per due scopi:
- Inviare un'email al raggiungimento di una determinata soglia di costo
- Impedire che un warehouse superi un costo definito in un dato periodo. Snowflake può bloccare l'esecuzione delle query su un warehouse che ha esaurito la propria quota.

Quasi nessun cliente attiva il blocco automatico dei warehouse (punto 2), perché può interrompere in modo significativo le operations e il lavoro quotidiano dei team interni. Se non si dispone di funzionalità di alerting offerte da altri strumenti, utilizzare i resource monitors per ricevere notifiche di spesa anomala dei warehouse (punto 1) è una pratica consigliata.
Budget
Uno dei modi più efficaci per controllare i costi è assegnare a ciascun gruppo di utenti Snowflake un budget e farlo rispettare. Se utenti, team o dipartimenti non sanno quanto possono spendere, non avranno alcun incentivo a ridurre i consumi o a spendere con attenzione.
I budget aiutano a costruire una cultura di consapevolezza dei costi, perché rendono chiaro quanto ogni team ha speso e quanto può ancora spendere.
4\. Alert
Anche con i controlli attivi, possono comunque verificarsi picchi inattesi in fattura o derive di spesa graduali nel tempo. Per anticipare questi problemi, consigliamo di implementare due tipi di alerting: anomaly alert e digest schedulati della spesa.
Anomaly Alert
Gli anomaly alert vanno configurati per notificare i picchi di spesa oltre una soglia predefinita. Si possono impostare a livello di account, su un determinato warehouse o su un raggruppamento di risorse/utenti Snowflake (ad esempio uno Usage Group).
Come suggerisce il nome, lo scopo di questi alert è segnalare comportamenti anomali. È stato rilasciato un nuovo job particolarmente costoso? È stato attivato Automatic Clustering su una tabella di grandi dimensioni? Qualcuno ha modificato la dimensione del warehouse?
Prima si è a conoscenza di questi cambiamenti, prima si può intervenire. Lo screenshot qui sotto mostra un esempio di alert di anomalia di spesa su Snowflake. Quando possibile, è bene costruire gli alert in modo che diano all'utente tutto il contesto necessario per individuare la causa del picco di spesa.
Digest schedulati della spesa
Molte variazioni nei pattern di spesa sono più graduali e rischiano facilmente di passare inosservate. Per ovviare, consigliamo di impostare digest schedulati della spesa: l'idea è ricevere uno snapshot dell'utilizzo di Snowflake con una cadenza definita (settimanale o mensile, ad esempio).
Recapitare questi digest su canali diffusi come email o Slack abbassa la barriera per restare aggiornati sulla spesa. Aiutano gli utenti a individuare trend o workloads costosi che altrimenti passerebbero inosservati. Se si sono impostati dei budget, si può includere anche una proiezione di quanto il gruppo di risorse in esame è atteso spendere.
5\. Insights
Capire quali siano i principali driver di consumo è importante, ma la maggior parte degli utenti vuole sapere soprattutto se sta usando Snowflake in modo efficace e cosa può fare per ottimizzare l'utilizzo o ridurre i costi.
Se è Lei a gestire i costi di Snowflake, conviene investire in strumenti e sistemi che segnalino in automatico le opportunità di ottimizzazione ai diversi utenti Snowflake della Sua organizzazione. Questi insights dovrebbero mettere in evidenza le strategie più comuni di query optimization e riduzione dei costi, ad esempio:
- Individuare workloads che non sfruttano il pruning delle micro-partition e scansionano troppi dati
- Individuare warehouse sovradimensionati, o workloads in esecuzione su warehouse di dimensione sbagliata
- Segnalare tabelle inutilizzate che non vengono interrogate e accumulano costi di storage superflui
- Individuare workloads che falliscono ripetutamente
- Segnalare query con chiavi di join mal configurate che generano exploding join

6\. Automazioni
Portare gli insights agli utenti è una componente imprescindibile di qualsiasi strategia di cost management su Snowflake, perché molte ottimizzazioni vanno applicate manualmente. Detto questo, in azienda molte persone sono spesso impegnate in altre iniziative di business e non hanno il tempo di mettere in pratica le modifiche necessarie.
Dove possibile, conviene quindi applicare le ottimizzazioni di Snowflake in modo automatico e continuativo. Qualche esempio:
- Aggiustare automaticamente la configurazione dei virtual warehouse per migliorarne l'efficienza di utilizzo
- Definire policy automatiche di eliminazione dei dati (ad esempio cancellare tabelle o database/schema non di produzione dopo X settimane)
- Deprecare dashboard inutilizzate o asset di dati che, appoggiati su Snowflake, continuano a generare consumi
Costruire e mantenere queste automazioni può richiedere risorse di engineering consistenti, ma spesso porta a risparmi significativi. Lo screenshot qui sotto mostra un esempio della funzionalità Automated Savings di SELECT, che regola in automatico e in modo continuo i virtual warehouse per massimizzarne l'efficienza di utilizzo.

Lezioni apprese
In questo articolo abbiamo illustrato le 6 componenti chiave di una strategia efficace di cost management per Snowflake. Ci consideriamo fortunati ad aver avuto l'opportunità di lavorare con oltre 100 aziende per aiutarle a metterle in pratica. Oltre alle strategie appena viste, ecco alcune ulteriori lezioni che abbiamo appreso lungo il percorso:
Estenda la strategia di cost management in modo incrementale
Costruire gli strumenti necessari a una strategia di cost management efficace richiede tempo. Se intende farlo internamente, consigliamo di partire da una visibilità granulare sui costi e da un reporting accurato sull'utilizzo. Non si possono prendere decisioni strategiche sui costi senza una solida comprensione dei driver di consumo.
Una volta ottenuta una visibilità di base, si può iniziare a ragionare sulla strategia di attribuzione dei costi, oppure a implementare controlli e alert per restare al passo con l'utilizzo.
Affronti prima le opportunità di ottimizzazione più immediate
Prima di pensare alle automazioni, è importante cogliere i risultati più a portata di mano. Abbiamo trattato in modo approfondito diverse strategie di cost optimization applicabili al proprio account. Deprecare asset di dati inutilizzati, ridurre la frequenza delle esecuzioni e ridimensionare i warehouse porta spesso a un risparmio immediato del 10-20%.
Decentralizzare il cost management è l'unica soluzione scalabile
Avendo lavorato con molte grandi organizzazioni, abbiamo constatato in prima persona quanto sia difficile, per i team centrali di data platform, presidiare i costi e far rispettare le best practice su un'ampia base di utenti Snowflake.
Meglio puntare a costruire una cultura di consapevolezza dei costi e di responsabilità condivisa. Bisogna mettere gli utenti dell'organizzazione nelle condizioni di usare Snowflake in modo efficace, fornendo strumenti, processi e conoscenze adeguate. Quando gli utenti (a) diventano consapevoli di come le proprie azioni impattano sull'utilizzo di Snowflake e (b) hanno un modo semplice e immediato per capire come ottimizzare, è molto più probabile che passino all'azione.
Risorse aggiuntive
Ci auguriamo che questo articolo Le sia stato utile. Se desidera approfondire cost management e query optimization su Snowflake, può consultare le seguenti risorse:
- Snowflake Cost Optimization: 15 strategie comprovate per ridurre i costi
- Snowflake Query Optimization: 16 consigli per rendere le tue query più veloci
- The Analytics Engineering Podcast: Cloud warehouse cost optimization
- The Missing Manual: Everything You Need to Know about Snowflake Optimization | SELECT
- Extend the runway: A deep dive into data warehouse costs
- Snowflake Pricing Explained | 2024 Billing Model Guide
Ian Whitestone·Co-founder & CEO di SELECT
Ian è Co-founder e CEO di SELECT, piattaforma SaaS di cost management e ottimizzazione per Snowflake. Prima di fondare SELECT, ha trascorso 6 anni alla guida di team full stack di data science ed engineering in Shopify e Capital One. In Shopify ha guidato le iniziative per ottimizzare il data warehouse e migliorare la cost observability.