FinOps : Snowflake infuse la gestion des coûts dans sa plateforme
Pressé par ses clients, Snowflake introduit plusieurs fonctionnalités d’observabilité et de limitation des coûts et rappelle les grands principes de sa facturation.
Les clients de Snowflake estiment qu’ils rencontrent très peu de problèmes de performance en contrepartie d’un prix élevé et d’une facturation à première vue cryptique. Si les dirigeants de l’entreprise ont insisté sur les efforts effectués, les keynotes ne permettaient pas de rentrer dans le détail.
Plusieurs sessions évoquaient l’optimisation des coûts sur la plateforme de gestion de données, mais celle à laquelle LeMagIT a assisté était consacrée à la feuille de route de l’éditeur en la matière et une explication des éléments qui impacte la facture finale. La salle, 200 places environ, était pleine. Après 40 minutes de présentation, une vingtaine de personnes attendaient de pouvoir poser leurs questions, signe de l’importance de la thématique.
Les composantes de la plateforme Snowflake
« Vous devez garder à l’esprit trois composantes principales », déclare Prithwis Dutta, responsable produit contrôle des coûts chez Snowflake. « Il y a les ressources de calcul, le stockage et les coûts liés aux transferts de données par le réseau ».
Sur Snowflake, les primitives de calcul sont normalisées sous forme de crédits. « La première d’entre elles correspond aux entrepôts virtuels (virtual warehouse). Il s’agit d’un maillage de machines virtuelles qui vous permet d’exécuter vos requêtes. C’est ce qui représente la majorité de vos coûts sur Snowflake », indique-t-il.
Ensuite, viennent s’ajouter des fonctions serverless. « Celles-ci s’exécutent en dehors de votre entrepôt. Elles correspondent à des services d’accélération, de requêtes, de clustering automatique, de recherche, d’optimisation, de réplication, etc. », explique le product manager.
Snowflake a récemment ajouté deux éléments. Avec Snowpark Container Services, entré en disponibilité générale la semaine dernière, il propose un service de conteneurisation entièrement managée pour exécuter certaines charges de travail d’IA, des services ou applications tierces. Les services d’IA (AI Services) correspondent aux LLM Functions, qui sont des appels API vers des espaces multitenant où résident de grands modèles de langage accessibles par les clients.
« Enfin, par souci d’exhaustivité, nous disposons d’une quantité subsidiaire de “services cloud” : le calcul de requêtes, des commandes d’affichage, des opérations sur les métadonnées sont répertoriés ici. C’est très rare qu’ils apparaissent sur votre facture, mais s’ils dépassent 10 % de vos opérations de calcul, ils seront inscrits noir sur blanc », précise Prithwis Dutta.
Le stockage et le transfert de données sont mesurés en téraoctets. En matière de stockage, l’éditeur dispose de portions standards et compressées. « Les données sont compressées par un facteur sept », signale le responsable produit. Quant aux transferts, il s’agit des données qui transitent en dehors de Snowflake. « Cela correspond aux métriques que les fournisseurs cloud nous donnent et nous répercutons ces coûts sur nos utilisateurs ».
La supervision des coûts internalisée
Jusque là, pas de surprise. Pour celui qui connaît le fonctionnement du cloud.
Prithwis DuttaProduct Manager, Snowflake
« Certains clients transitent d’une infrastructure sur site vers le cloud et ont des difficultés à gérer leurs coûts », justifie Prithwis Dutta. « C’est principalement parce qu’ils ne savent pas quelles ressources gérer ou qu’ils n’ont pas de visibilité sur ce qu’ils devraient optimiser ».
Pour aider les clients à mieux comprendre et gérer ses aspects, Snowflake a intégré un framework FinOps dans ses pratiques. Il repose sur trois piliers : la visibilité des dépenses, leur contrôle et leur optimisation.
L’équipe à laquelle appartient Prithwis Dutta a mis sur pied dans l’interface Snowsight un ensemble de tableaux de bord et des commandes SQL pour améliorer ces trois aspects.
En mai dernier, l’éditeur a rendu disponible une vue des coûts par compte. Il propose, en préversion publique, une vue à l’échelle d’une organisation. Une organisation dans Snowflake est un objet de « première classe » qui permet de lier les comptes détenus par différentes entités au sein d’une entreprise.
« La vue d’ensemble de l’organisation se présente comme une console centrale ou un guichet unique qui vous permet de gérer ou de voir les coûts qui se produisent dans votre organisation », décrit Prithwis Dutta. « La première tuile vous indique ce que vous avez dépensé jusqu’à présent pour l’ensemble de votre organisation. La deuxième valeur correspond au solde restant de votre contrat. Vous obtenez ensuite un coût mensuel moyen ainsi que le nombre de comptes que vous possédez », ajoute-t-il.
Une autre tuile donne un aperçu du contrat en cours. L’outil affiche une prédiction des dépenses au regard du budget restant.
« Cela devrait donc vous permettre de savoir si vous allez dépasser votre budget ou si vous devez le dépasser avant la fin de votre contrat », informe Prithwis Dutta.
L’onglet donne également une vision des entrepôts et des « bases de données » (des bases en lecture seule consacrées au partage de fichiers).
Snowflake a aussi mis à jour son historique d’événements au niveau d’un warehouse. Il est par ailleurs possible d’étiqueter des objets et des sessions.
« Si vous avez des unités métier au sein d’un même compte, vous pouvez créer des étiquettes pour la finance, la direction des ventes, des produits. Ensuite, vous pouvez attribuer ces étiquettes aux warehouses utilisés par ces départements », illustre le responsable.
Prochainement, Snowflake proposera un moyen de refacturer les charges de travail. Il commencera par un moyen d’attribuer les coûts par requête. « C’est très utile quand vous consolidez différents types de charges de travail dans un seul warehouse, mais cela n’inclut pas le transfert de données et d’autres paramètres », signale-t-il.
L’information en question est obtenue en calculant une moyenne pondérée de la contribution de chaque requête à l’utilisation des ressources. Ce système devrait également donner les périodes d’inactivité pendant lesquelles un warehouse est exécuté.
En préversion privée, l’éditeur développe un moyen de détecter les anomalies de dépense quotidienne. Pour l’heure, il s’agit d’une application Streamlit permettant de notifier les comptes aux emails vérifiés qu’un pic a été atteint quotidiennement. Le système permettra de repérer les comptes, les warehouses, voire les requêtes concernées.
« Il vous donne l’identifiant de la requête. Et vous pouvez accéder au code SQL de la requête qui en est à l’origine. Il vous donnera également plus de détails sur l’historique de l’événement », assure Prithwis Dutta. L’outil est clairement en développement et demandera d’attendre un peu avant de convaincre.
Du côté du contrôle, Snowflake a mis en place des méthodes « implicites » pour limiter les dépenses. Il y a d’abord la taille des warehouses.
« La taille de l’entrepôt vous permet de contrôler la quantité de crédits que vous pouvez dépenser par heure, par exemple, le warehouse “extra small” est facturé à un crédit par heure », indique le responsable produit. « La facturation se fait à la seconde avec un minimum d’une minute. Ensuite, le temps d’utilisation ou d’exécution de votre requête est multiplié par le nombre de crédits correspondant à la taille, multiplié par le nombre de clusters, multiplié par le montant en dollar que vous avez dans votre contrat ».
Pour rappel, le prix du crédit évolue de deux à quatre dollars suivant l’édition choisie (Standard, Enterprise, Business Critical).
Par ailleurs, Snowflake a intégré par défaut un moyen de suspendre et de relancer automatiquement les warehouses.
« La suspension automatique d’un entrepôt intervient après un délai prédéfini, généralement cinq minutes par défaut », précise Prithwis Dutta. En revanche, ajoute-t-il, certaines charges de travail, comme les pipelines ETL, n’ont pas besoin de mise en cache et peuvent être suspendues immédiatement après leur exécution.
« Pour des usages liés au DevOps ou à la data science, où des requêtes peuvent arriver dans les cinq minutes, il est recommandé de conserver ce délai », prévient-il. « La mise en cache, utilisée pour améliorer les performances via le maillage de VM, serait autrement invalidée si l’entrepôt est suspendu, obligeant à repartir de zéro ».
Et de souligner qu’il ne convient de désactiver cette mesure qu’en cas de réel besoin. Une requête SQL préétablie permet de vérifier si cette fonction est bien activée, tandis que le tableau de bord « Cost Management » permet d’observer si le seuil temporel est correctement réglé pour toutes les ressources.
En outre, l’éditeur met en place un moyen de superviser les ressources et un système de notification lié à la consommation de crédit d’un entrepôt, qui permet aussi de suspendre le warehouse une fois un job terminé ou de le suspendre automatiquement. « Il faut faire preuve de prudence. Ce n’est pas adapté à la production et cela peut provoquer des pannes si la fonction est utilisée à tort », prévient le responsable produit.
Plus de moyens pour limiter les dépenses et les regrouper
C’est l’une des raisons pour laquelle Snowflake introduit la fonction Budget.
Prithwis DuttaProduct Manager, Snowflake
« Budget est une limite de dépenses que vous pouvez fixer pour votre compte ou un ensemble de groupes de ressources personnalisées au sein de ce compte, ce qui correspond par exemple à un département, une charge de travail, une application, une équipe ou une fonction », relate Prithwis Dutta.
Si la limite est atteinte, une notification est envoyée à l’administrateur. L’allocation du budget peut être personnalisée en regroupant plusieurs ressources. « Nous établissons un “burn down” (graphique d’avancement) basé sur la limite de dépenses mensuelle et surveillons les budgets en arrière-plan. Chaque jour, vous avez un montant de dépenses défini selon notre progression calculée, et nous contrôlons les dépenses ».
Prithwis DuttaProduct Manager, Snowflake
Il est possible d’accorder une vue d’un budget au responsable d’un projet. En revanche, une ressource ne peut pas être attribuée à plusieurs budgets.
Outre les efforts d’ingénierie interne, Snowflake entend proposer des indicateurs concentrés sur les coûts et des métriques supplémentaires pour superviser l’usage des warehouses. Le système permet déjà d’identifier les warehouses les plus volumineux ou les vues matérialisées qui ne sont pas utilisées. La suite ?
« Nous vous aiderons à prendre certaines mesures comme le redimensionnement ou la consolidation des entrepôts », annonce Prithwis Detta. « Dans certains cas, par exemple, nous prenons en compte les facteurs d’utilisation du CPU, de la RAM et du réseau, puis nous vous donnons un pourcentage pour le cluster. Sur la base de ce pourcentage, vous pouvez agir. Si le cluster n’est pas très utilisé ou inactif, vous pourrez envisager de le suspendre ou de le redimensionner ». Cette fonction vient d’entrer en préversion privée.
Les astuces prodiguées par Snowflake
En résumé, le responsable produit assure que « la vue d’ensemble de la gestion des coûts par organisation ou par compte est votre amie ». « Établissez un budget dès aujourd’hui. Il n’y a rien de plus simple que cela. Nous nous chargeons de la gestion pour vous. Utilisez les recommandations sur les coûts dans la vue d’ensemble des comptes pour réduire le gaspillage », insiste-t-il.
« Si vous commencez avec Snowflake ou que vous expérimentez, commencez avec un entrepôt extra-small ou small, puis voyez où vous allez. Enfin, ne désactivez pas la suspension et la reprise automatiques. Ce sont vos amis », conclut-il.