Sélectionner une page

FinOps : Comment réduire sa facture Snowflake 

La grande popularité de Snowflake est principalement due à son architecture qui sépare stockage et puissance de calcul (ou compute). Cette particularité lui permet de gérer des volumes de données très importants sans compromettre ses performances. Cependant, ces capacités virtuellement infinies ne sont pas gratuites et s’ils ne sont pas contrôlée, les coûts associés peuvent être eux aussi virtuellement infinis.

Dans cet article nous présentons les principales techniques pour réduire sa facture Snowflake.

Que votre objectif soit simplement de réduire votre facture ou d’éviter les mauvaises surprises, ces techniques vous permettront d’être serein lorsque vous recevrez votre facture.

Comment votre facture Snowflake est calculée ? 

Avant de commencer à présenter les techniques d’optimisation des coûts Snowflake, rappelons comment cette facture est calculée.

Les coûts de Snowflake sont calculés en fonction de trois principaux éléments : le stockage, la puissance de calcul et les services cloud supplémentaires.

  • Le stockage est facturé sur la base du volume de données stockées dans la plateforme, y compris les sauvegardes et les données historiques (Fail Safe et Time Travel).
  • Le temps de traitement des données, également appelée compute, est facturée en fonction de la taille de l’entrepôt virtuel et du temps d’exécution de celui-ci. La facturation commence dès que l’entrepôt est allumé et se poursuit jusqu’à ce qu’il soit mis en pause ou arrêté.
  • Enfin, des frais supplémentaires peuvent être facturés pour des services tels que la réplication des données, l’utilisation de fonctionnalités de sécurité et de conformité etc..

Snowflake utilise un modèle de crédit, où chaque crédit correspond à un certain montant de puissance de calcul ou de stockage consommé. En fonction de votre contrat, ce crédit est ensuite converti en devise. Enfin, la somme de tous ces crédits constituent votre facture finale.

Nous détaillons dans la suite de cette article, les principales stratégies pour réduire les coûts selon ces trois sources.

Réduire les coûts de calcul et traitement de données

Par expérience, 80 % de la facture Snowflake provient des calculs effectués sur votre plateforme. C’est donc le point primordial à traiter si l’on veut réduire sa facture Snowflake.

Ce coût du compute provient des warehouses qui tournent. Les techniques de réduction des coûts se répartissent donc en deux catégories :

 

  1. Optimiser le temps de calcul total sur ces entrepôt ;
  2. Réduire au maximum la taille de ces entrepôt.

1 . Optimiser le temps de calcul de ses warehouses

Snowflake facture chaque seconde pendant laquelle un entrepôt virtuel est en fonctionnement, avec un minimum de 60 secondes. Même si aucune requête n’est envoyée sur le warehouse, celui-ci est facturé tant qu’il n’est pas à l’arret.

 

Utiliser l’auto-suspend et réduisez les seuils pour chaque warehouse

Une première chose à faire est de s’assurer que TOUS ses warehouses ont un auto-suspend de paramétrés. Nous conseillons de placer ces délais d’auto-suspension à 60 secondes pour tous les entrepôts virtuels.

La seule exception à cette recommandation peut se situer pour les charges de travails sur des requêtes en direct avec l’utilisateur où la faible latence est primordiale et où le cache de l’entrepôt est fréquemment utilisé. Si vous n’êtes pas sûr, optez pour 60 secondes et augmentez-le si les performances en pâtissent.

Par défaut, tous les entrepôts virtuels créés via l’interface utilisateur ont des périodes d’auto-suspension de 10 minutes, alors soyez prudent lorsque vous créez de nouveaux entrepôts.

 

Assurez-vous que le nombre minimum de clusters est réglé sur 1

Les éditions Enterprise de Snowflake ou supérieures offrent des entrepôts à plusieurs clusters, permettant aux entrepôts d’ajouter des clusters supplémentaires en parallèle pour faire face à une demande accrue.

Le paramètre de nombre minimum de clusters doit toujours être réglé sur 1 pour éviter une surprovision. Snowflake ajoutera automatiquement des clusters jusqu’au nombre maximum avec un temps de provisionnement minimal, au besoin. Des comptes de clusters minimum supérieurs à 1 entraînent des clusters inutilisés et facturables.

 

Faites attention à ne pas multiplier le nombre de warehouses

Il peut être tentant de créer beaucoup de warehouses comme ce n’est pas le nombre de warehouses qui est facturé mais le temps cumulé où ils tournent.

Le meilleur moyen de garantir une utilisation efficace des entrepôts virtuels est d’en utiliser le moins possible. Si nécessaire, créez des entrepôts séparés en fonction des exigences de performance par rapport aux domaines de charge de travail.

Par exemple, créer un entrepôt pour tous les chargements de données, un pour les transformations et un pour les requêtes BI en direct conduira à une meilleure efficacité des coûts qu’un entrepôt pour les données de marketing et un pour les données financières.

Toutes les charges de travail de chargement de données ont généralement les mêmes exigences de performance (elles tolèrent une certaine mise en file d’attente par exemple) et peuvent souvent partager un entrepôt multi-cluster X-Small. En revanche, toutes les requêtes en direct, orientées utilisateur, peuvent bénéficier d’un entrepôt plus grand pour réduire la latence.

Là où les charges de travail au sein de chaque catégorie (chargement, transformation, requête en direct, etc.) nécessitent une taille d’entrepôt plus grande pour des vitesses de requête acceptables, il est possible de créer un nouvel entrepôt plus grand juste pour celles-ci.

 

 

De manière générale, pour réduire sa facture Snowflake, les requêtes doivent toujours s’exécuter sur l’entrepôt le plus petit possible en fonction des besoins en performances.

2 . Optimiser la taille de ses warehouses

 

Reduire la taille des entrepôts virtuels

Les ressources de calcul de l’entrepôt virtuel et les coûts augmentent de manière exponentielle. Voici les coûts affichés par heure et par mois en crédits en supposant un taux de 2,5 € par crédit.

Les entrepôts surdimensionnés peuvent parfois représenter la majorité de l’utilisation de Snowflake. Réduisez la taille de vos entrepôts et observez l’impact sur les charges de travail. Si les performances sont toujours acceptables, essayez de réduire encore la taille.

Attention, ce n’est pas parce que vous prenez systématiquement le warehouse de plus petite taille que votre facture sera la plus faible. Certes le prix à l’heure sera moindre mais vos requêtes tourneront plus longtemps. Il faut donc trouver un optimum entre taille de warehouse et performance. Pour se faire il n’y a pas de règle générale, il est nécessaire d’effectuer des expérimentations.

Configuration de la charge de travail

Outre la configuration des warehouses, le temps pendant lequel ils tournent dépend principalement de leur utilisation et de la qualité des requêtes.

En effet, même si Snowflake peut vous proposer une capacité de calcul de très gros calibre, cela ne vous empêche pas pour autant d’optimiser vos requêtes. Un des outils qui peut vous aider est le Query profile qui decortique l’execution de la requête, indiquant les noeuds les plus consommateurs.

 

Réduire la fréquence de mise à jour des données

Une des sources de gaspillage dans les datawarehouses est la fréquence de mise à jour des données pour chaque table.
Dans de nombreuses organisations, les jobs de transformation de données sont souvent exécutés par défaut toutes les heures. Mais les cas d’utilisation et les besoins métiers nécessitent-ils vraiment une telle périodicité ?

Pour se rendre compte des économies possibles, prenons pour exemple une configuration facturée 100 000 € par an dans laquelle toutes les tables sont mises à jour chaque heure. Le tableau suivant représente les économies faites en modifiant uniquement la périodicité : 

On voit facilement comment réduire la périodicité des mises à jour permet de réduire sa facture Snowflake.

Ne traitez que les données nouvelles

D’importants volumes de nos données sont souvent immuables, c’est-à-dire qu’elles ne changent pas une fois créées. Par exemple, des ventes de marchandises ou des valeurs de marchés financiers. Certaines changent, mais rarement au-delà d’un certain intervalle de temps, comme les commandes qui sont peu susceptibles d’être modifiées au-delà d’un mois après l’achat.

Plutôt que de retraiter toutes les données dans chaque job de transformation de données, l’incrémentalisation peut être utilisée pour filtrer uniquement les enregistrements nouveaux ou modifiés depuis la dernière exécution.

Réduire les coûts de stockage des données

Le deuxième aspect de l’optimisation des coûts est la réduction du stockage facturable. Bien que le stockage soit généralement une fraction du coût des calculs dans Snowflake, il peut encore représenter des milliers de dollars par mois, en particulier pour les utilisateurs de Snowflake qui ont des volumes de données importants.

Pour réduire les coûts de stockage, la première étape consiste à identifier les tables non utilisées. Faire une purge régulière des données n’est pas une mauvaise idée. Cela assure également une certaine clarté dans votre datawarehouse. Un ménage de printemps pour faire simple !

Il faut également faire attention au Time Travel et Fail Safe qui sont utilisés par défaut lorsque vous créez une table. Pour un grand nombre de ces tables, ils ne sont pas nécessaire ou tout du moins pas sur 90 jours (par défaut dans le pack Enterprise).

Bien entendu une bon modèle de données avec un minimum de doublons dans les tables doit être suivi. Le but d’un datawarehouse est d’avoir une Single Source of Truth, il serait dommage de perdre cette qualité en doublonnant des tables sans garde-fou.

Eviter les coûts des services cloud

Idéalement, ces coûts doivent être de 0. En effet s’ils ne dépassent pas 10% du montant de la facture finale alors ils sont offerts par Snowflake.

Il est donc judicieux de suivre ces coûts cloud pour qu’ils ne dépassent pas ce seuil des 10%.

D’autres coûts peuvent venir augmenter votre facture comme les coûts de transferts de données ou les coûts des services severless. La facture dépend également de votre provider cloud ( AWS, GCP ou Azure) ainsi que de votre localisation. Ces derniers sont généralement anecdotique. 

En conclusion, l’optimisation des coûts dans Snowflake est un processus continu qui nécessite une surveillance et un ajustement réguliers. En suivant les stratégies énumérées dans cet article, un administrateur Snowflake fait un grand pas en avant pour réduire sa facture Snowflake et améliorer l’efficacité de son utilisation.