« Ce mois-ci, nous avons dépensé 20 % de plus dans le cloud. » Dit ainsi, personne ne sait si c'est une mauvaise nouvelle. Si les commandes ont augmenté de 40 %, c'est un progrès. Si elles n'ont pas augmenté, c'est un problème. Et dans les deux cas il manque la seconde question : quelle équipe ou quel produit a consommé cet argent ? La facture cloud ne répond à aucune des deux. Cet article montre comment AAA Sentinel y répond, avec un exemple complet sur AWS, Azure et Google Cloud.
Les deux questions auxquelles la facture ne répond pas
La facture d'un cloud est organisée par service : tant de calcul, tant de stockage, tant de base de données. Elle sert à payer, pas à décider. Pour décider, il faut deux choses qui n'y figurent pas :
- À qui appartient chaque euro : quel centre de coût, quelle équipe ou quel produit l'a dépensé. Sans cela il n'y a pas de responsables, seulement un chiffre commun que personne ne s'approprie.
- Ce que vous avez obtenu avec cette dépense : combien coûte en cloud chaque commande, chaque client ou chaque transaction. Sans cela, impossible de distinguer la croissance du gaspillage.
Le coût unitaire est la métrique que le métier comprend. « Le cloud coûte 0,10 $US par commande » se compare à la marge d'une commande ; « le cloud coûte 12 000 $US par mois », non.
Ce que vous y gagnez
Avec la répartition et le coût unitaire en place, la conversation sur le cloud change :
- Chaque équipe voit sa part de la facture et en répond, au lieu de débattre d'un total.
- Vous savez si la dépense croît plus vite que l'activité : si le coût par commande monte, quelque chose est devenu moins efficace même si la facture paraît raisonnable.
- Vous pouvez fixer vos prix avec des données : vous connaissez le coût de service d'un client avant de décider combien lui facturer.
- Vous voyez combien de dépenses n'ont pas de propriétaire, et c'est souvent par là que commencent les économies.
- Vous l'avez pour tous vos clouds au même endroit, avec les mêmes règles de répartition.
Comment AAA Sentinel le résout : trois briques
La fonctionnalité fait partie du plan Business et repose sur trois briques que l'on configure une seule fois :
- Ingestion FOCUS : chaque cloud exporte sa facture détaillée au format FOCUS, le format ouvert commun à AWS, Azure et Google Cloud. AAA Sentinel la lit chaque jour et traite le dernier mois clôturé. Elle se configure pour chaque compte, depuis Mes comptes cloud → Ingestion FOCUS, et la page inclut un guide pas à pas pour chaque cloud.
- Répartition des coûts par étiquette : vous choisissez les clés selon lesquelles vous voulez voir la facture ventilée (par exemple centre_de_cout) et vous ajoutez des règles pour couvrir ce qui n'est pas étiqueté. Elle se trouve dans Paramètres de l'organisation → Coûts.
- Métriques métier : vous déclarez votre unité (commandes, clients actifs, transactions) et vous indiquez combien il y en a eu chaque mois, à la main ou par l'API. La plateforme divise le coût par ces unités.
Le résultat se trouve dans Rapports → Coût unitaire : le coût par unité du mois, la ventilation par centre de coût et l'évolution des derniers mois.
Étiquettes réelles et règles virtuelles
L'idéal est que chaque ressource porte son étiquette dans le cloud, mais en pratique il en reste toujours une partie sans étiquette. Au lieu de vous obliger à tout étiqueter avant de voir un résultat, AAA Sentinel vous laisse combler le manque avec des règles d'étiquetage virtuel : « si le service est S3, attribue-le à données », « si le nom de la ressource commence par payments-, attribue-le à paiements ». Les règles ne modifient rien dans votre cloud et suivent trois principes simples :
- L'étiquette réelle l'emporte toujours sur la règle. Une règle n'écrase jamais ce que votre équipe a étiqueté volontairement.
- Si deux règles attribuent la même clé, c'est la première de la liste qui l'emporte.
- Ce qui n'a ni étiquette ni règle reste « non attribué ». Rien n'est réparti au jugé : voir combien reste sans propriétaire vous dit où étiqueter ou quelle règle créer.
Un raccourci qui a fonctionné pour nous : si chaque produit vit dans sa propre région ou son propre abonnement, une règle par région ou par sous-compte répartit presque toute la facture sans étiqueter une seule ressource. Sur un compte réel avec deux produits, deux règles ont attribué 83 % de la dépense ; le reste était de la taxe, qu'il est normal de ne pas répartir.
Cas pratique : ACME sur trois clouds
ACME vend en ligne. Sa boutique tourne sur AWS, sa plateforme de données sur Azure et son analytique sur Google Cloud. Elle veut savoir combien lui coûte chaque commande et combien dépense chaque centre de coût : boutique, paiements et données. En septembre, elle a eu 9 900 commandes. Voici sa facture du mois :
ACME · facture de septembre par cloud
- AWS (boutique et paiements)
- 990 USD
- Azure (plateforme de données)
- 400 EUR
- Google Cloud (analytique)
- 95 EUR
Étape 1 : connecter la facture détaillée de chaque cloud
Chaque cloud a sa façon d'exporter FOCUS et ses conditions. Voici ce qu'il faut faire dans chacun, et ce qu'il vaut mieux savoir avant de commencer :
- AWS : activez l'étiquette dans Billing → Cost allocation tags (sans activation, AWS ne l'inclut pas dans l'export, et elle peut mettre jusqu'à 24 heures à apparaître) et créez un export FOCUS 1.0 en CSV dans Data Exports. L'export n'écrit qu'à partir du jour de sa création : le premier mois complet arrive donc à la clôture du mois en cours.
- Azure : dans Cost Management, créez un export de type « Cost and usage details (FOCUS) » et donnez à la connexion le rôle Storage Blob Data Reader sur le compte de stockage. Les étiquettes arrivent d'elles-mêmes, et avec l'héritage des étiquettes il suffit d'étiqueter le groupe de ressources. Azure permet d'exporter les mois passés : vous pouvez donc avoir des résultats dès le premier jour. Disponible uniquement pour les contrats EA, MCA ou partenaire.
- Google Cloud : activez l'export FOCUS vers BigQuery et donnez au compte de service de la connexion un accès en lecture au dataset. Avec un dataset multirégion, Google remonte jusqu'au début du mois précédent.
Une différence importante : la facture Google Cloud arrive agrégée depuis BigQuery. Elle compte donc dans le coût unitaire total, mais n'est pas répartie par étiquettes et les règles ne s'y appliquent pas. AWS et Azure, eux, sont répartis.
Étape 2 : définir la répartition une seule fois
La répartition se configure au niveau de l'organisation et s'applique à tous les comptes à la fois. ACME utilise une seule clé, centre_de_cout, avec les mêmes valeurs sur tous ses clouds, et trois règles pour ce qui n'est pas étiqueté :
AAA Sentinel · Répartition des coûts par étiquette
- Clé de répartition
- centre_de_cout
- Règle 1 → paiements
- Nom de ressource · commence par · payments-
- Règle 2 → données
- Service · est égal à · Amazon Simple Storage Service
- Règle 3 → données
- Sous-compte · est égal à · (id de l'abonnement de données Azure)
- Utilisez la même clé et les mêmes valeurs sur tous les clouds. Si vous écrivez « Données » sur l'un et « donnees-eu » sur l'autre, le rapport les traite comme des centres de coût différents.
- Les règles s'appliquent à tous les comptes, mais les noms de service diffèrent d'un fournisseur à l'autre : une règle sur un service AWS n'a aucun effet sur Azure. Pour répartir Azure sans étiqueter, la règle par sous-compte (l'abonnement) est la plus pratique.
Étape 3 : ce qui revient à chaque centre de coût
Au traitement de septembre, AAA Sentinel applique d'abord les étiquettes réelles, puis les règles. Voici le résultat sur le compte AWS, ressource par ressource :
AWS · 990 USD répartis
- web-01 (300 USD) · étiquette réelle boutique
- boutique
- cdn-boutique (150 USD) · étiquette réelle boutique
- boutique
- orders-db (240 USD) · étiquette réelle paiements
- paiements
- payments-webhook (60 USD) · sans étiquette
- paiements, par la règle 1
- payments-reconciler (120 USD) · étiquette réelle données
- données : l'étiquette l'emporte sur la règle 1
- acme-data-lake (90 USD) · sans étiquette
- données, par la règle 2
- acme-logs (30 USD) · sans étiquette
- non attribué
- AWS : boutique 450 USD, paiements 300 USD, données 210 USD et 30 USD non attribués. Sans les règles, la couverture aurait été de 82 % ; avec elles, de 97 %.
- Azure : données 350 EUR et 50 EUR non attribués.
- Google Cloud : 95 EUR qui comptent dans le total, mais pas dans la ventilation.
Étape 4 : déclarer la métrique et fournir les unités
Dans Paramètres de l'organisation → Coûts → Métriques métier, ACME crée la métrique « Commandes », avec l'unité « commande » et la clé de répartition centre_de_cout. Elle fournit ensuite les unités du mois. Il y a deux façons de le faire :
- À la main, une fois par mois, depuis Rapports → Coût unitaire : le total (9 900 commandes) et, si vous voulez la ventilation, les unités de chaque centre de coût. Renvoyer une valeur la corrige, elle ne s'ajoute pas.
- Automatiquement, chaque nuit, depuis votre système de commandes, avec une application OAuth2 disposant de la permission metrics:write. Si vous envoyez des valeurs quotidiennes, envoyez-les tous les jours : les jours sans unités sont exclus du calcul et la plateforme vous prévient.
L'identifiant de la métrique ne peut pas être modifié ensuite, car c'est celui qu'utilise l'API. Choisissez-le court et en minuscules : commandes, clients, transactions.
Étape 5 : lire le rapport
Une fois le coût réparti et les unités déclarées, Rapports → Coût unitaire affiche ceci pour septembre :
ACME · coût unitaire de septembre (9 900 commandes)
- Carte en USD (AWS)
- 990 USD ÷ 9 900 = 0,10 $US par commande
- Carte en EUR (Azure + Google Cloud)
- 495 EUR ÷ 9 900 = 0,05 € par commande
- Coût réel d'une commande
- 0,10 $US + 0,05 €
- Une carte par devise, jamais converties. Chaque cloud facture dans sa devise et les mélanger obligerait à inventer un taux de change ; le coût réel d'une commande est la somme des cartes.
- Ventilation par centre de coût, elle aussi par devise : en USD apparaissent boutique, paiements et données d'AWS ; en EUR, données d'Azure. La ventilation ne redonne pas le total, car ce qui est resté non attribué n'y figure pas.
- Évolution des derniers mois, et c'est là qu'est la valeur : un chiffre isolé dit peu, la tendance dit si chaque commande vous coûte plus ou moins qu'avant.
- Comptes hors du calcul : s'il manque à un compte l'ingestion du mois, le rapport l'affiche avec son nom, la raison et la façon de la corriger. Un coût qui disparaît sans prévenir ferait baisser le ratio et ressemblerait à un progrès.
Être alerté quand le coût unitaire monte
Une fois le circuit en place, inutile de consulter le rapport chaque mois. Dans Alertes → Canaux d'alerte, vous pouvez activer « Hausse du coût unitaire » et fixer un pourcentage : la plateforme compare chaque mois au précédent et n'alerte que sur les hausses. C'est l'alerte qui repère qu'une chose est devenue moins efficace alors que la facture totale paraît encore normale.
Ce que nous avons appris en le mettant en place
Nous avons configuré tout cela sur nos propres comptes avant d'écrire cet article. Voici ce qu'il vaut mieux savoir avant de commencer :
- La répartition porte sur des mois clôturés. Calculez quand vous aurez votre premier résultat : sur AWS, à la clôture du mois où vous créez l'export ; sur Azure et Google Cloud vous pouvez l'avoir plus tôt, car ils exportent les mois passés.
- Modifier les clés ou les règles ne recalcule pas un mois déjà traité. Après les avoir modifiées, cliquez sur « Lancer maintenant » dans l'Ingestion FOCUS de chaque compte.
- Vérifiez le rapprochement : la page d'ingestion compare le coût importé à la facture du cloud. S'il ne correspond pas, le chemin pointe le plus souvent vers plusieurs exports.
- Commencez par les règles et étiquetez ensuite. Deux ou trois règles bien choisies donnent une première répartition utile en quelques minutes, et le « non attribué » vous dit ce qui mérite d'être étiqueté.
- Décidez des valeurs avant d'étiqueter. Peu nombreuses, en minuscules et toujours écrites de la même façon.
Checklist pour démarrer
Avec tout cela en ordre, la prochaine fois que quelqu'un demandera combien coûte le cloud, vous pourrez répondre à ce qu'il veut vraiment savoir : combien coûte chaque commande et qui dépense.
- Plan Business et accès en tant que propriétaire de l'organisation.
- Vos comptes cloud connectés et l'Ingestion FOCUS configurée sur chacun.
- Une clé de répartition avec des valeurs convenues, identiques sur tous les clouds.
- Des règles pour ce qui n'est pas étiqueté, et le « non attribué » passé en revue.
- Une métrique métier avec ses unités du mois, à la main ou par l'API.
- L'alerte de hausse du coût unitaire activée.