Bien géré, Snowflake peut s'imposer comme la plateforme de data cloud la plus rentable du marché. Pourtant, de nombreux clients peinent à maîtriser sereinement leurs coûts Snowflake, du fait de la simplicité d'utilisation de la plateforme et de son adoption massive au sein des organisations.
Chez SELECT, nous avons accompagné plus de 100 entreprises dans la mise en place de stratégies de gestion et d'optimisation des coûts Snowflake. Ces stratégies se regroupent en 6 grands domaines, qui constituent selon nous le socle d'une stratégie de gestion des coûts Snowflake. Dans cet article, nous détaillons ces 6 domaines clés et partageons les enseignements concrets tirés de notre travail auprès de nos clients.
1\. Visibilité
Avant de pouvoir agir sur vos coûts, vous devez disposer d'un outillage de visibilité. Sans savoir ce qui pèse sur votre consommation Snowflake ni comment ces éléments évoluent dans le temps, impossible de cibler vos efforts.
Si vous êtes en charge de la gestion des coûts Snowflake, vous devez pouvoir répondre rapidement et facilement aux questions suivantes :
- Quelle est notre dépense mensuelle moyenne sur Snowflake ?
- Quelle part de la valeur contractuelle achetée prévoyons-nous de consommer ?
- Combien dépensez-vous par an (en $, pas en crédits) sur chaque virtual warehouse, tâche serverless, base de données, etc. ?
- Quel est le coût de chaque workload de requêtes exécuté dans votre environnement ?
- Quelle consommation chaque utilisateur ou équipe génère-t-il sur votre compte ?
- Comment chacun de ces éléments a-t-il évolué sur les X derniers jours ?
Cost Management dans Snowsight
La section Cost Management de Snowflake, accessible depuis Admin, est un excellent point de départ. Vous y identifierez :
- Les coûts au niveau de l'organisation :
- Valeur contractuelle totale
- Solde restant
- Dépense totale
- La consommation de crédits (et non en $) au niveau du compte :
- Par type de service
- Par ressource (par exemple un virtual warehouse)
Attention : les valeurs de consommation de crédits affichées dans l'onglet de consommation Snowflake peuvent être surévaluées jusqu'à 10 %, car elles intègrent les crédits Cloud Services. Les clients ne sont facturés sur la consommation de Cloud Services que si celle-ci dépasse 10 % de leurs coûts de compute quotidiens. La plupart des clients ne paient pas de coûts de Cloud Services, et les chiffres de la capture ci-dessus sont donc presque toujours gonflés. Plus de détails ici.
Aller plus loin
La plupart des clients Snowflake finissent par dépasser les limites de l'interface Cost Management dans Admin et choisissent soit de mobiliser des ressources internes conséquentes pour construire leurs propres dashboards de monitoring, soit de s'appuyer sur une plateforme tierce de confiance comme SELECT.
La raison se résume à un seul mot : profondeur. L'interface Cost Management remplit correctement son rôle : elle ventile la dépense et identifie vos principaux postes de consommation. Sur la capture précédente, on voit que le warehouse principal concentre l'essentiel des coûts. Mais pourquoi ? Qu'est-ce qui, à l'intérieur de ce warehouse, génère réellement ces coûts ?
Pour améliorer la visibilité des coûts au sein de vos virtual warehouses, nous recommandons de calculer le coût de chaque requête puis d'agréger ces coûts au niveau workload à partir des métadonnées de requête. Ces métadonnées peuvent être des tags ou commentaires personnalisés ajoutés à vos requêtes, ou provenir d'outils comme dbt ou Looker. Une fois ce dispositif en place, vous identifiez facilement les véritables moteurs de compute dans chacun de vos virtual warehouses :
Au-delà des virtual warehouses, d'autres services Snowflake peuvent générer une consommation significative : Snowpipe, Automatic Clustering, Search Optimization ou Query Acceleration. Pour piloter efficacement vos coûts, il vous faut une visibilité fine sur chaque ressource Snowflake et l'évolution de sa consommation dans le temps. Et surtout, cette information doit être accessible en un clic.
Voici un exemple de dashboard à construire pour afficher les coûts d'Automatic Clustering d'une seule table.
Et un autre exemple présentant les coûts d'un seul Snowpipe, accompagnés de recommandations pour réduire la facture :

2\. Attribution
Une fois vos moteurs de coûts bien compris, vous aurez besoin de moyens souples pour les répartir entre différents périmètres.
Les méthodes d'attribution courantes :
- Utiliser les object tags Snowflake pour rattacher les virtual warehouses et autres ressources à des équipes, départements ou projets
- Enrichir les requêtes de métadonnées via des query tags qui identifient l'équipe, le projet ou le cas d'usage associé
- Affecter manuellement les ressources à différents groupes dans votre outil de reporting
Tout outil de reporting de coûts que vous développez ou achetez doit permettre d'allouer les coûts à différents groupes de manière flexible, puis de visualiser et suivre facilement leur consommation dans le temps. Voici un exemple : la dépense de notre compte Snowflake ventilée par Usage Group :
En analysant vos coûts par département ou par projet, vous repérerez souvent des opportunités ou des facteurs de dépense invisibles à l'échelle des ressources individuelles.
3\. Contrôles
La visibilité et l'attribution vous indiquent combien vous dépensez. Encore faut-il mettre en place des contrôles pour empêcher en amont la dépense superflue. Nous recommandons aux clients Snowflake d'envisager quatre types de contrôles dans leur stratégie de gestion des coûts.
Contrôle d'accès
Snowflake offre de solides capacités de contrôle d'accès qui permettent de définir précisément qui peut faire quoi. C'est un levier souvent sous-estimé pour maîtriser les coûts. Par exemple, restreindre la liste des utilisateurs autorisés à exécuter des requêtes sur les virtual warehouses les plus coûteux peut s'avérer très efficace. De la même façon, encadrer la création et la modification de warehouses évite que des utilisateurs ne lancent par inadvertance des warehouses surdimensionnés, source de consommation inutile.
Query Timeouts
Les query timeouts font office de garde-fou dans Snowflake : ils interrompent les requêtes qui dépassent une durée prédéfinie. Cette fonctionnalité protège contre les dépenses excessives liées à des exécutions trop longues. Dès qu'une requête franchit le seuil de timeout fixé, Snowflake l'arrête automatiquement.

Bien utilisés, les query timeouts limitent l'impact des requêtes qui s'emballent. Par défaut, Snowflake autorise les requêtes à s'exécuter jusqu'à deux jours avant de les annuler, ce qui peut générer des coûts substantiels. Nous recommandons de mettre en place des query timeouts sur l'ensemble des warehouses afin de plafonner le coût maximal qu'une seule requête peut engendrer.
Resource Monitors
À l'image des query timeouts, les resource monitors permettent de plafonner le coût total qu'un warehouse peut générer. Ils répondent à deux objectifs :
- Vous envoyer un e-mail lorsque les coûts atteignent un certain seuil
- Empêcher un warehouse de dépasser un montant donné sur une période définie. Snowflake peut bloquer l'exécution des requêtes sur un warehouse qui a dépassé son quota.

La plupart des clients n'activent pas la coupure automatique du warehouse (point 2), car elle peut perturber sérieusement l'activité et le travail quotidien des collaborateurs. Si vous ne disposez pas de capacités d'alerting via un autre outil, utiliser les resource monitors pour être notifié des dépenses excessives sur un warehouse (point 1) reste une bonne pratique.
Budgets
L'un des meilleurs moyens de maîtriser les coûts consiste à attribuer un budget à chaque groupe d'utilisateurs Snowflake et à le faire respecter. Si les utilisateurs, équipes ou départements ignorent ce qu'ils peuvent dépenser, ils n'ont aucune incitation à réduire leur consommation ni à dépenser avec discernement.
Les budgets contribuent à instaurer une culture de la sensibilisation aux coûts en rendant visible ce que chaque équipe a dépensé et ce qu'il lui reste.
4\. Alertes
Même avec des contrôles en place, des pics de facture imprévus ou des dérives progressives de la dépense peuvent survenir. Pour les anticiper, nous recommandons deux types de mécanismes d'alerte : les alertes d'anomalie et les digests de dépense planifiés.
Alertes d'anomalie
Les alertes d'anomalie doivent être configurées pour vous prévenir lorsque la dépense dépasse un seuil prédéfini. Vous pouvez les paramétrer au niveau du compte, d'un warehouse spécifique, ou d'un regroupement de ressources ou d'utilisateurs Snowflake (par exemple un Usage Group).
Comme leur nom l'indique, ces alertes signalent un comportement anormal. Un nouveau job coûteux a-t-il été déployé ? Automatic Clustering a-t-il été activé sur une grosse table ? Quelqu'un a-t-il modifié la taille d'un warehouse ?
Plus vite vous êtes au courant, plus vite vous pouvez intervenir. La capture ci-dessous illustre une alerte d'anomalie de dépense Snowflake. Dans la mesure du possible, concevez vos alertes pour fournir à l'utilisateur tout le contexte nécessaire à l'identification de la cause du pic.
Digests de dépense planifiés
De nombreuses évolutions de vos schémas de dépense sont plus progressives et passent facilement inaperçues. Pour y remédier, nous recommandons de configurer des digests de dépense planifiés. L'idée : envoyer un instantané de votre usage Snowflake à une fréquence définie (hebdomadaire ou mensuelle, par exemple).
Diffuser ces digests via des canaux populaires comme l'e-mail ou Slack abaisse la barrière au suivi quotidien de la dépense. Ils permettent de repérer des tendances ou des workloads coûteux qui seraient autrement passés sous le radar. Si vous avez configuré des budgets, vous pouvez y inclure une projection de la dépense prévue pour le groupe de ressources concerné.
5\. Insights
Comprendre ses principaux moteurs de consommation est essentiel, mais la plupart des utilisateurs veulent surtout savoir s'ils utilisent Snowflake efficacement et ce qu'ils peuvent faire pour optimiser leur usage ou réduire leurs coûts.
Si vous pilotez les coûts Snowflake, il faudra investir dans des outils et des systèmes capables de remonter automatiquement les opportunités d'optimisation aux différents utilisateurs Snowflake de votre organisation. Ces insights doivent mettre en avant les stratégies courantes d'optimisation des requêtes et de réduction des coûts, par exemple :
- Identifier les workloads qui n'effectuent pas le pruning des micro-partitions et scannent trop de données
- Détecter les warehouses surdimensionnés ou les workloads exécutés sur une taille de warehouse inadaptée
- Signaler les tables inutilisées, jamais interrogées, qui génèrent des coûts de stockage inutiles
- Identifier les workloads qui échouent à répétition
- Repérer les requêtes dont les clés de jointure mal configurées provoquent l'explosion des jointures

6\. Automatisations
Remonter des insights aux utilisateurs est indispensable dans toute stratégie de gestion des coûts Snowflake, car beaucoup d'optimisations doivent être appliquées manuellement. Cela dit, vos collaborateurs sont souvent accaparés par d'autres priorités et n'ont pas toujours le temps d'appliquer les changements nécessaires.
Lorsque c'est possible, vous voudrez appliquer les optimisations Snowflake automatiquement et en continu. Quelques exemples :
- Ajuster automatiquement la configuration des virtual warehouses pour améliorer l'efficacité d'utilisation
- Créer des politiques automatisées de suppression de données (par exemple, supprimer les tables ou les bases ou schémas non-production au bout de X semaines)
- Mettre hors service les dashboards ou actifs de données inutilisés qui s'appuient sur Snowflake et génèrent de la consommation
Construire et maintenir ces automatisations peut mobiliser des ressources d'ingénierie importantes, mais le retour sur investissement est souvent significatif. La capture ci-dessous illustre la fonctionnalité Automated Savings de SELECT, qui ajuste automatiquement et en continu les virtual warehouses pour optimiser leur efficacité.

Enseignements
Dans cet article, nous avons passé en revue les 6 piliers d'une stratégie efficace de gestion des coûts Snowflake. Nous nous estimons chanceux d'avoir pu accompagner plus de 100 entreprises dans leur mise en œuvre. Au-delà des points évoqués plus haut, voici quelques enseignements supplémentaires glanés en chemin :
Déployez votre stratégie de gestion des coûts par étapes
Construire l'outillage d'une stratégie de gestion des coûts efficace prend du temps. Si vous tenez à le faire en interne, commencez par une visibilité fine sur les coûts et le reporting d'usage. Aucune décision stratégique en matière de coûts n'est possible sans une bonne compréhension de vos moteurs de consommation.
Une fois cette visibilité de base en place, vous pourrez réfléchir à votre stratégie d'attribution, ou mettre en place des contrôles et des alertes pour garder la main sur votre usage.
Attaquez d'abord les optimisations les plus accessibles
Avant de construire la moindre automatisation, attaquez les fruits les plus accessibles. Nous avons abondamment écrit sur les différentes stratégies d'optimisation des coûts applicables à votre compte. Mettre hors service des actifs de données inutilisés, réduire la fréquence des exécutions et redimensionner les warehouses se traduit souvent par 10 à 20 % d'économies immédiates.
Décentraliser la gestion des coûts est la seule solution scalable
Au contact de nombreuses grandes organisations, nous avons constaté à quel point il est difficile pour les équipes data plateforme centrales de policer les coûts et de faire respecter les bonnes pratiques auprès d'une large base d'utilisateurs Snowflake.
Cherchez plutôt à instaurer une culture de la sensibilisation aux coûts et de la responsabilité partagée. Donnez aux utilisateurs de toute l'organisation les outils, processus et connaissances nécessaires pour utiliser Snowflake efficacement. Dès lors qu'ils (a) prennent conscience de l'impact de leurs actions sur l'usage Snowflake et (b) disposent d'un moyen simple de comprendre comment optimiser, ils sont nettement plus enclins à passer à l'action.
Ressources complémentaires
Nous espérons que cet article vous aura été utile. Si vous cherchez d'autres ressources sur la gestion des coûts Snowflake et l'optimisation des requêtes, voici quelques pistes :
- Snowflake Cost Optimization : 15 stratégies éprouvées pour réduire les coûts
- Snowflake Query Optimization : 16 astuces pour accélérer vos requêtes
- The Analytics Engineering Podcast : optimisation des coûts du cloud warehouse
- The Missing Manual : tout ce qu'il faut savoir sur l'optimisation Snowflake | SELECT
- Extend the runway : plongée dans les coûts d'un data warehouse
- Tarification Snowflake expliquée | Guide du modèle de facturation 2024
Ian Whitestone·Co-fondateur et CEO de SELECT
Ian est Co-fondateur et CEO de SELECT, une plateforme SaaS de gestion et d'optimisation des coûts Snowflake. Avant de lancer SELECT, Ian a passé 6 ans à diriger des équipes full stack data science et engineering chez Shopify et Capital One. Chez Shopify, il a piloté l'optimisation du data warehouse et le développement de l'observabilité des coûts.