J'ai audité une plateforme Snowflake la semaine dernière : 47 000€ de facture mensuelle. Après optimisation, elle est tombée à 18 000€. Sans renégocier le contrat. Sans réduire l'activité. Juste en corrigeant cinq erreurs classiques.
Avant d'entrer dans le détail, visualisons la plus dévastatrice d'entre elles. Le graphique ci-dessous compare un warehouse X-Small correctement configuré (en haut) au même warehouse sans AUTO_SUSPEND (en bas). L'aire sous la courbe, c'est votre facture.

-- Problème
CREATE WAREHOUSE ANALYTICS_WH
WAREHOUSE_SIZE = 'X-LARGE'
AUTO_SUSPEND = NULL;
-- Correction
CREATE WAREHOUSE ANALYTICS_WH
WAREHOUSE_SIZE = 'X-LARGE'
AUTO_SUSPEND = 60;
Un X-Large à l'arrêt complet coûte déjà 40€/h × 24h × 30j = 28 800€/mois. Même s'il ne tourne que 2h par jour.
-- Problème
SELECT * FROM SALES_FACT; -- 5 To scannés
-- Correction
SELECT order_id, customer_id, amount, order_date
FROM SALES_FACT
WHERE order_date >= DATEADD(month, -12, CURRENT_DATE()); -- 50 Go scannés
Snowflake facture au volume scanné. Le ratio passe de 1 à 100.
ALTER TABLE SALES_FACT CLUSTER BY (order_date, region_id);
Sur les tables de plus de 1 To, un bon clustering réduit le scan de 80 à 95%.
CREATE RESOURCE MONITOR MONTHLY_BUDGET
CREDIT_QUOTA = 5000
FREQUENCY = MONTHLY
NOTIFY_AT = (75, 90, 100);
Sans monitor, personne ne sait qu'on a consommé 150% du budget jusqu'à l'arrivée de la facture.
COPY INTO MY_TABLE
FROM @my_stage
FILE_FORMAT = (TYPE = 'PARQUET' COMPRESSION = 'SNAPPY');
Les fichiers Parquet + Snappy réduisent le volume ingéré de 5 à 10x.
| Poste | Avant | Après | Économie |
|---|---|---|---|
| Warehouses | 28 800€ | 4 200€ | -85% |
| Requêtes | 12 000€ | 3 500€ | -71% |
| Stockage | 4 500€ | 2 800€ | -38% |
| Ingestion | 1 700€ | 900€ | -47% |
| Total | 47 000€ | 11 400€ | -76% |
Le FinOps sur Snowflake, ce n'est pas renégocier le contrat. C'est optimiser l'usage.