Data may be abundant, but managing data isn’t cheap By Davide Grande, Jorge Machado, Bryan Petzold, and Marcus Roth
Chez Hanalytics, nous mettons en place des socles de données de zéro pour nos clients. Les données que nous ingérons sont dans 90% des cas stockés dans BigQuery. Nous utilisons ensuite dbt en surcouche pour procéder à toutes les transformations, modélisations, reconciliation de données à des fins de reporting, d'analyse ou encore de création de tables finales dédiées à l'activation de donnée.
La problématique
Nous nous sommes souvent confrontés à être surpris par les coûts BigQuery liés à la mise en place de ces socles : une mauvaise jointure, une requête non optimisée , un job dbt run ou dbt test qui tourne en continue , autant d'élément qui peuvent drastiquement augmenter vos coûts BigQuery jusqu'à 1000€ voir 2000€ par jour , rien que ça.
Pour contourner ces problèmes nous optimisons au maximum notre workflow et nos requêtes et surtout nous mettons en place des alertes slack afin de rapidement détecter des anomalies dans notre consommation BigQuery. L'idée est toute simple ; mettre en place un process qui fait tourner une requête toutes les deux heures et envoie un message dans slack lorsque le seuil de dépense journalière dépassé. Supposons qu'on a un budget de 300$ par mois sur BigQuery , ceci implique qu'on part sur une consommation moyenne de 10$ de coût BigQuery quotidien. Pour être alerter sur notre consommation, nous souhaitons être alerter au cours de la journée si potentiellement la limite des 10$ a été dépassé dans la journée.
Avantages de suivre ces coûts BigQuery
Avant d'entrer dans les détails, voici pourquoi il est important de suivre ces coûts BigQuery
- Efficacité des coûts : En optimisant les coûts de BigQuery, vous pouvez vous assurer de ne payer que les ressources dont vous avez réellement besoin. Cela permet de minimiser les dépenses inutiles et de maximiser votre retour sur investissement.
- Scalabilité : BigQuery est conçu pour gérer de grandes quantités de données, et à mesure que vos données augmentent, vos coûts peuvent également augmenter. En optimisant les coûts, vous pouvez gérer efficacement la scalabilité et éviter les pics de dépenses inattendus.
- Utilisation des ressources : L'optimisation des coûts consiste à analyser et à optimiser vos requêtes, votre stockage de données et le transfert de données. En améliorant l'utilisation des ressources, vous pouvez tirer le meilleur parti de votre budget alloué et améliorer les performances globales.
- Planification budgétaire : En comprenant et en optimisant les coûts de BigQuery, vous pouvez planifier et allouer précisément des budgets pour vos projets. Cela permet une meilleure gestion financière et vous aide à prendre des décisions éclairées concernant l'allocation des ressources.
- Maîtrise des coûts : L'optimisation des coûts de BigQuery vous permet d'avoir un meilleur contrôle sur vos dépenses cloud globales. En surveillant et en optimisant les coûts, vous pouvez identifier les domaines à améliorer et mettre en place des mesures d'économie.
N'oubliez pas, l'optimisation des coûts de Google BigQuery est un processus continu qui nécessite une surveillance régulière, une analyse et une optimisation pour garantir une utilisation efficace des ressources et une gestion des coûts efficace.
Alerting via Slack
La requête suivante permet de calculer les coûts liés à chacune de vos activités BigQuery ( Load, Query , etc ) sur la date actuelle :
Pour mettre en place notre système d'arleting, nous procédons aux étapes suivantes :
- Faire tourner cette requête toutes les 2h via Mage.ai ( Mage est un orchestrateur de Data Pipeline super simple à prendre en main )
- Lorsque le resultat de la requête est supérieure à la limite quotidienne fixée, envoyer un message slack pour notifier l'équipe
La pipeline est la suivante :
Ce bloc va lancer la requête stocker dans la variable 'query_cost_checking'.
Dans le bloc suivant , on construit le payload Slack (1), puis on ajoute la condition de déclenchement de l'envoie du payload slack (2)
Ceci pour que le process n'envoie une alerte uniquement que lorsqu'on a un dépassement de budget , en l'occurence 1$ ici. Lorsque la condition est respectée, le payload est envoyé dans slack ->
L'alerte indique aux équipes qu'il faut faire un Health check des requêtes sur la journée pour leur optimisation en vue de rester dans le budget.
Et voilà., votre système d'alerting est mis en place via mage et slack.
Chez Hanalytics, nous attachons une grande importance au suivi des coûts des projets Data de nos clients . Nous comprenons que la gestion efficace des coûts est essentielle pour la réussite d'une entreprise, c'est pourquoi nous avons mis en place un système de suivi des coûts rigoureux et transparent notamment sur BigQuery afin d'être sur de ne pas aller au delà du budget estimé présenté au préalable à nos clients.