Apporter des contrôles de coûts familiers au calcul sans serveur
par Piyush Singh et Vijay Raja
Chez Databricks, l'utilisation de nos calculs sans serveur a plus que triplé au cours de l'année écoulée, et des milliers de clients y exécutent désormais des notebooks, des tâches et des pipelines critiques. Alors que l'adoption augmente, la première question que se pose chaque équipe de plateforme devient encore plus pressante : comment obtenir une meilleure visibilité sur les coûts des calculs sans serveur et respecter notre budget ?
Les clients Databricks qui utilisent les requêtes SQL sans serveur et le service de modèles sans serveur (« Model Serving ») attribuent déjà les dépenses, gèrent les accès et surveillent la consommation sans modifier un seul paramètre de cluster. Nous étendons désormais cette même fonctionnalité aux calculs sans serveur pour les notebooks, les tâches et les pipelines. Nous faisons en sorte que les contrôles des coûts sans serveur répondent aux attentes des équipes de plateforme.
Avec les calculs classiques, le contrôle des coûts résidait dans l'infrastructure. Vous plafonniez les dépenses en limitant les machines : le nombre de nœuds, les types d'instances, les plages de mise à l'échelle automatique et les règles de cluster qui encadraient ce que les utilisateurs pouvaient provisionner. Ces contrôles étaient indispensables, car vous deviez gérer l'infrastructure vous-même.
Les calculs sans serveur suppriment ces réglages intentionnellement. Le provisionnement, la mise à l'échelle et l'ajustement de la taille de l'infrastructure incombent désormais à la plateforme, gérée par Databricks, ce qui représente une grande partie de la valeur ajoutée. Toutefois, le contrôle des coûts doit bien s'appliquer quelque part, il se déplace donc vers le haut. Plutôt que d'être lié aux machines, il est lié aux utilisateurs et aux charges de travail. Les questions qui comptent désormais sont : qui est autorisé à exécuter des calculs sans serveur, à quelle vitesse une charge de travail peut-elle consommer du budget, et où ce coût est-il imputé ?
Les équipes de plateforme expriment leurs besoins de trois manières :
Les calculs classiques répondaient à ces défis à l'aide de trois outils : des balises pour attribuer les coûts, des droits d'accès pour contrôler ces derniers et des limites de taille de cluster pour plafonner les dépenses. Les calculs sans serveur ont besoin des trois mêmes outils. Deux d'entre eux existent déjà, et le troisième arrive.

Nous allons examiner chacun de ces points dans l'ordre.
L'attribution commence par les balises. Sur les calculs classiques, vous balisiez le cluster ; sur les calculs sans serveur, vous balisez le calcul, et chaque DBU consommé par ce calcul transmet cette balise jusqu'à la facturation.
system.billing.usage, ventilé par utilisateur, par produit et par balise. Une vue « coût par équipe » prête pour la direction s'obtient avec une seule requête, et les tableaux de bord de coûts de la console de compte l'affichent pour vous sans que vous ayez à écrire la moindre ligne de SQL.
Cette même table répond à la question d'audit que vous voudrez poser avant de modifier l'accès d'un utilisateur : qui exécute réellement des calculs sans serveur aujourd'hui, et combien cela lui coûte-t-il ? C'est une requête de plus, classée par consommation, et les exemples complets se trouvent dans la documentation des tables système.
Disponibilité : Les balises de calcul sans serveur pour l'attribution sont actuellement disponibles en version Bêta.
L'observabilité est déjà disponible et les clients peuvent déjà surveiller les coûts sans serveur à l'aide des tables système sur AWS, Azure et Google Cloud.
Les mêmes tables système qui attribuent les coûts vous permettent également de les suivre. Les budgets de la console de compte déclenchent des alertes par e-mail lorsque les dépenses sans serveur dépassent un seuil, et les tableaux de bord de gestion des coûts vous permettent de suivre la consommation par produit, par espace de travail et par balise. Une alerte SQL sur les dépenses sans serveur de la veille permet de boucler la boucle en quelques heures.
La surveillance est toutefois réactive : elle signale le jour où les coûts ont flambé le lendemain matin au lieu de les empêcher. C'est cet écart qui justifie l'existence des deux objectifs suivants.
Disponibilité : La surveillance est généralement disponible dès aujourd'hui. Configurez des budgets et des alertes de dépenses sur AWS, Azure et Google Cloud.
Le premier contrôle proactif consiste à décider qui a le droit d'exécuter des calculs sans serveur. Cette autorisation est un droit : elle définit quels utilisateurs ou groupes peuvent accéder aux calculs sans serveur, tout comme les droits existants contrôlent qui peut créer des clusters ou se connecter à un entrepôt SQL. Le contrôle d'accès aux calculs sans serveur (« Serverless Compute Access Controls ») est désormais généralement disponible et vous permet de gérer les calculs sans serveur avec ce modèle : des autorisations sur un objet de calcul, et non des règles ajoutées à chaque charge de travail.

Un objet de calcul sans serveur constitue la limite d'autorisation pour les calculs sans serveur. Chaque espace de travail en reçoit deux par défaut :
Les autorisations sur ces objets sont les deux que vous connaissez déjà pour les entrepôts : Peut utiliser et Peut gérer. Si vous savez déterminer qui peut se connecter à un entrepôt SQL, vous savez déterminer qui peut exécuter des calculs sans serveur.
Le modèle est sûr par défaut. Chaque utilisateur commence avec l'autorisation « Peut utiliser », de sorte que l'activation de la fonction ne change rien tant qu'un administrateur n'agit pas. Lorsqu'un administrateur agit, le processus est celui auquel vous vous attendez : ouvrez la page Calcul, allez dans l'onglet Sans serveur, ouvrez un objet de calcul par défaut, supprimez « Tous les utilisateurs » et ajoutez un groupe spécifique. Un utilisateur situé en dehors de ce groupe voit désormais l'option Sans serveur grisée dans le sélecteur de calcul des notebooks, et aucune exécution en cours n'est interrompue.

Disponibilité : Généralement disponible dès aujourd'hui. Consultez la documentation pour AWS, Azure et Google Cloud.
Le contrôle des accès détermine si une charge de travail s'exécute, mais pas combien elle peut dépenser une fois lancée. Combler cet écart est la troisième tâche, à savoir les limites de débit (« Rate Limits »), et cela s'applique aux mêmes objets de calcul que vous venez de voir.
L'attribution s'améliore en même temps. Un nouveau serverless_compute_id dans system.billing.usage attribue les coûts par objet de calcul, de sorte que le "coût par objet de calcul" devient aussi simple que le "coût par équipe".
Une précision pour tous ceux qui connaissent les tailles de t-shirt DBSQL : pour les notebooks et les tâches, la taille est un plafond d'autoscale maximal, et non une taille de cluster fixe. Choisissez XL pour une tâche qui n'a besoin que de Medium, et elle se verra attribuer Medium.
Disponibilité : Les limites de débit sont désormais disponibles en version bêta. Activez les limites de débit via vos paramètres de prévisualisation Databricks ; consultez la documentation pour AWS, Azure et Google Cloud.
Assemblez à nouveau les trois tâches :
serverless_compute_id dans les tables système, utilisables dans les budgets et les tableaux de bord.Vous pouvez commencer à appliquer les contrôles des coûts sans serveur dès aujourd'hui. Voici comment procéder :
system.billing.usage ainsi qu'une alerte budgétaire sur les dépenses sans serveur.Les contrôles d'accès au calcul sans serveur sont désormais généralement disponibles. Pour approfondir l'attribution et la surveillance dès aujourd'hui, consultez la documentation sur les tables système (AWS | Azure| GCP) et le balisage sans serveur (AWS | Azure | GCP).
(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original
Abonnez-vous à notre blog et recevez les derniers articles directement dans votre boîte mail.