Maîtriser la réalité financière de notre Produit
- Qu’est-ce que le FinOps ?
- Les grandes étapes de la mise en œuvre
- Constamment optimiser notre produit
- Ressources
Lorsque nous nous concentrons sur les besoins de nos clients et la meilleure solution technique pour répondre à leurs attentes, nous avons tendance à négliger les coûts. De plus, beaucoup de services nous permettent de débuter sans réelles dépenses, ou des dépenses incluses dans un forfait plus large : 500 Mo offerts avec tel abonnement de base de données, quelques millions de tokens inclus dans celui du fournisseur d’IA, etc. Mais lorsque notre application commence à mûrir et que le trafic l’exige, nous déployons nos services sur une infrastructure plus robuste, nous commençons à dépasser les quotas des abonnements, et… nous commençons à voir les factures tomber.
L’enjeu n’est pas de produire moins ou d’abandonner des idées pour réduire les coûts, mais de produire mieux. Lorsque nous débutons, nous négligeons l’optimisation des coûts. Or, comme le capital est limité, il va nous falloir dégager et exploiter de la marge, pour accélérer l’innovation et soutenir une croissance durable.
Le FinOps s’inscrit exactement dans cette logique de calcul économique et d’évaluation des coûts d’opportunité. Nous allons évaluer les économies que nous pouvons réaliser, arbitrer entre différentes approches pour identifier celle qui permettra de dégager la meilleure marge à long terme. Et le principal levier du FinOps consiste à transformer la dépense technologique (Cloud, IA,…) en levier de valeur mesurable, plutôt qu’en centre de coût opaque.
Qu’est-ce que le FinOps ?
« Le FinOps est un cadre opérationnel et une pratique culturelle qui maximisent la valeur commerciale de la technologie, permettent une prise de décision rapide fondée sur les données et instaurent une responsabilité financière grâce à la collaboration entre les équipes d’ingénierie, de finance et métier. » – The FinOps Foundation
Le terme est un mot-valise apparu à la fin des années 2010, contraction de Finance + Opérations, inspiré de « DevOps » (rapprochement des développeurs et des opérations). Le FinOps décrit un cadre dont le but est de maximiser la création de valeur de notre produit. Il repose sur l’implication verticale de l’entreprise, depuis les équipes sur le terrain jusqu’à la direction financière, et leur collaboration autour de données concrètes.
À l’origine centré sur le Cloud, le FinOps s’élargit progressivement à tous les domaines des nouvelles technologies, notamment l’IA.
Les enjeux financiers
Toute entreprise dispose d’un capital limité (cash, budget, bande passante des personnes). L’usage de ce capital doit être optimisé pour maximiser le retour (revenus, vitesse de livraison, qualité, résilience). Le principal défi est alors de comprendre ce qui coûte cher, et de voir pourquoi cela coûte cher, pour ensuite mettre en place un modèle optimisé par rapport aux contraintes de l’application.
Il faut donc disposer à la fois d’une bonne vision financière de notre produit pour identifier les plus gros postes de dépenses, et une bonne compréhension technique pour comprendre le rôle de chaque brique technique, et savoir remettre en question les choix d’architectures.
Dans le domaine du Cloud, les dépenses se retrouvent essentiellement sur trois piliers :
- La puissance de calcul (CPU, RAM, et maintenant les GPU pour l’IA) est un poste de dépense très important. Nous les retrouvons dans les Machines Virtuelles, dont le coût dépend des ressources qui leur sont allouées.
- Le stockage est également un poste potentiellement coûteux, en fonction du volume de données que nous conservons, et des types de stockages que nous utilisons (par exemple des stockages « à froid » serviront à stocker sur le temps long, avec peu d’opérations, mais coûteront moins cher).
- Enfin le trafic réseau, notamment sortant (appelé « Egress ») est souvent facturé par les fournisseurs d’offre Cloud, contrairement au trafic entrant (appelé « Ingress »). Ce type de dépense est souvent sous-estimé car les chiffres paraissent faibles au premier abord, mais quand notre application rencontre le succès, le débit croît, et la facture avec…
À ceci s’ajoutent désormais les frais liés à l’IA : la facturation aux tokens (ou millions de tokens) nous met sous les yeux le vrai coûts de ces outils dont les résultats nous bluffent au quotidien. Chaque token utilise des ressources matérielles, de la puissance de calcul, du stockage et du trafic réseau, engendrant des frais considérables pour les fournisseurs. Ces frais sont maintenant répercutés sur nos factures et ne peuvent être négligés.
Intégrer le FinOps à l’organisation
Pour beaucoup de grandes entreprises, le FinOps correspond à une fonction au sein de l’organisation, qui dispose de la maîtrise nécessaire pour comprendre les enjeux à la fois des équipes techniques, et de la direction financière. Ils pourront donc conseiller d’un côté, et apporter des rapports et des explications concrètes de l’autre.
Chaque équipe technique est sensibilisée aux enjeux business (les bénéfices pour l’entreprise) de sorte que les choix sur les technologies soient informés : le FinOps assure donc un travail d’accompagnement, et fournit des indicateurs accessibles, et pertinents sur la consommation. Ainsi, les responsabilités sont décentralisées et ramenées au niveau de chaque équipe.
La première chose à faire est donc de fournir de la visibilité. Nous montrons les chiffres et nous nous appuyons dessus pour mettre en place notre stratégie. Celle-ci suivra généralement une approche dite « Crawl-Walk-Run ». Les indicateurs nous permettront d’identifier une première application, un ensemble de fonctionnalités de notre produit par lequel commencer, et sur la base de laquelle nous pourrons démontrer les apports pour l’ensemble des produits. Enfin, nous pourrons étendre et généraliser la démarche FinOps.
Pour cela, nous reprendrons la démarche itérative propre aux méthodes agiles (pour laquelle nous avons consacré une série complète), à laquelle nous intégrerons les trois phases que nous avons déjà vues en filigrane : Inform / Optimize / Operate du framework FinOps.
- Inform (informer) est l’étape où nous instrumentons les parcours utilisateurs au sein du produit, pour identifier ce qui génère le plus de frais.
- Optimize (optimiser) concerne la phase d’amélioration de ce parcours pour réduire les coûts, par exemple en mettant en cache des informations peu sollicitées ou en choisissant un modèle d’IA moins coûteux et tout aussi satisfaisant pour le traitement qui lui est soumis.
- Enfin, l’Operate (mettre en œuvre) consiste à définir un budget et les alertes correspondantes grâce auxquelles les dépenses seront contrôlées et optimisées au fur et à mesure des évolutions du produit.
Les grandes étapes de la mise en œuvre
La démarche FinOps ne prévoit pas spécialement d’itération pour son évolution, simplement les étapes formelles d’information, d’optimisation et d’exécution. Pourtant, quand notre produit évolue, son infrastructure va également évoluer, et donc les coûts associés vont également évoluer, et leur optimisation mérite d’être revue à chacune de ces évolutions.
Il est donc naturellement recommandé d’intégrer le FinOps comme nouvel angle de réflexion sur les évolutions de notre produit, et donc dans les cycles des méthodes agiles.
Identifier et Définir un plan d’action
Pour commencer, nous devons consolider les données à partir desquelles nous pourrons définir le plan d’action. C’est en quelque sorte l’application concrète de l’intégration du FinOps dans nos processus, ce que nous améliorerons par la suite.
Nous avons déjà identifié les trois piliers du Cloud (puissance de calcul, stockage et réseau), ainsi que le domaine spécifique de l’IA (la consommation des tokens). Ce sont les axes sur lesquels nous devons mesurer les dépenses.
Pour cela, nous devons identifier les ressources, savoir leur assigner des postes de dépenses. Par exemple, les services Cloud proposent très souvent des tags sous la forme de paires clé / valeur. Nous pourrons donc avoir une clé « projet » ou « client », et des valeurs correspondant à nos projets ou nos clients, ou encore une clé « entité » dont la valeur désignera quelle entité dans l’organisation consomme cette ressource. Ensuite, nous devons définir des unités économiques grâce auxquelles nous serons en mesure de consolider les informations et les comparer, autrement dit : une échelle de valeur commune.
L’expertise FinOps se retrouve ensuite dans la capacité à lire ces informations et soumettre les recommandations qui constitueront le plan d’action. Le plan d’action portera par exemple sur la façon dont les données sont collectées en base, pour réduire le volume de données transitant sur le réseaux (par exemple un utilisateur n’aura pas besoin d’avoir toutes ses informations à jour à chaque fois qu’il ajoute un produit à son panier). Dans le domaine de l’IA, il s’agira d’explorer différentes stratégies pour réduire le nombre de tokens (ou segments de texte) que nous conservons dans nos échanges au meilleur compromis entre précision et volume d’information.
Ces réflexions vont alimenter notre stratégie FinOps et nous permettre d’établir des objectifs d’amélioration (ou les réviser, dans un processus itératif). Nous définirons les alertes nous permettant d’anticiper les cas où nous pourrions dépasser nos objectifs.
Enfin, nous pourrons implémenter les premières mesures concrètes à appliquer.
Exécuter le plan
Une fois notre plan établi, nous devons le mettre en œuvre. Nous allons alors tirer les ficelles spécifiques à notre fournisseur Cloud pour adapter au mieux l’infrastructure de notre service.
Par exemple, un puissant levier consiste à tirer parti du modèle de coût variable du Cloud. Cet angle d’attaque devient rapidement évident lorsque nous comprenons le modèle de facturation du Cloud, qui repose sur des services facturés à la seconde, dont nous pourrons tirer parti. Les Fonctions (ou Lambda chez AWS) sont l’exemple le plus simple de ce principe : elles ne sont facturées qu’une fois sollicitées et au nombre de sollicitations.
De nombreuses autres mesures typiques rejoignent également ce que nous avions vu sur la gestion de la montée en charge du produit. Si la motivation n’est pas la même (dégager des économies ici contre optimiser les performances à l’époque), les mesures sont les mêmes et vont souvent dans le même sens.
Trouver le bon ratio entre précision et volume du contexte de l’IA sera typiquement le défi du compactage du contexte. Chaque token coûte, et l’IA est parfois très verbeuse dans ses réponses. Il faut donc régulièrement synthétiser les informations, voire exclure ce qui ne servira pas dans la suite du traitement par IA. Sur des infrastructures où de nombreux agents interviennent, nous pourrons tenter de sélectionner les modèles les plus adaptés aux différentes tâches que nous leur soumettons… Et parfois réfléchir si l’IA est réellement l’outil le plus adapté.
Si nous nous servons de l’IA pour classer des produits par catégorie, peut-être qu’une simple requête de comptage en base de donnée aurait suffit. En revanche, si nous nous en servons pour agréger des articles rédigés dans plusieurs langues, l’IA est pertinente pour traiter le langage naturel. Nous irons plutôt voir sur Hugging Face (ou d’autres) pour sélectionner des modèles spécialisés dans la traduction, de sorte à stocker tous les articles dans la même langue. De la sorte, faire la synthèse de toutes ces sources coûtera beaucoup moins de tokens, vu qu’il n’y aura qu’une seule version de chaque mots (celle dans la langue choisie).
Au-delà des actions spécifiques, la mise en œuvre de notre plan impliquera également l’application des politiques, l’implémentation des alertes de budget, l’ajout de logs sur les requêtes, et transactions réseau, etc. Là aussi, nous l’avions également évoqué dans un précédent article sur la supervision, car le même type d’action peut également servir notre finalité FinOps.
Mesurer les impacts
Si les métriques sont importantes à mettre en place, c’est bien que nous allons nous en servir. Et c’est d’ailleurs la raison pour laquelle nous devons prendre le temps de réfléchir à notre stratégie à la première étape…
Nous pourrons par exemple mesurer les bénéfices par recommandation, par utilisateur, par millions de tokens utilisés, etc. Ces métriques nous informent sur la réalité : ce que nous avons réellement réussi à mettre en place, que nous pourrons comparer avec nos hypothèses de départ et nos objectifs.
Les indicateurs nous permettrons également d’identifier les dérives, comme le grand volume de requêtes en base de données qui font décoller le budget, ou un modèle d’IA coûteux extrêmement sollicité, y compris pour des tâches bénignes où un petit modèle aurait convenu.
Enfin, les indicateurs nous permettent de voir à quel point notre démarche FinOps est mature, car de la même façon que l’Agile exploite la boucle de rétro-action pour améliorer l’organisation, le FinOps l’exploite également pour s’améliorer.
Appliquer les optimisations
Nous l’avons vu, les métriques nous montrent l’écart entre la réalité et ce que nous nous étions fixé comme objectif. Ceux-ci pourront donc être revus pour les rendre plus réalistes, mais nous pourrons aussi revoir les actions à mettre en œuvre pour augmenter nos chances d’atteindre ces objectifs.
Toutes les mesures ayant porté des fruits pourrons être standardisées et consolidés, tandis que les mesures qui n’ont eu que peu ou pas d’impact sur le budget pourront être revues ou abandonnées, dans la logique même du Lean (éliminer le gaspillage pour optimiser le fonctionnement).
Ce peut également être l’occasion d’étendre le périmètre de notre application et de notre entreprise auquel nous appliquons le FinOps : chaque nouvelle mesure portant des fruits sur une partie de l’entreprise pourra être répliquée, après évaluation et éventuelle adaptation, car les contextes différents peuvent justifier des mesures différentes.
Nous établissons ainsi le lien avec la prochaine itération, car nous commençons à alimenter le plan pour les prochaines évolutions.
Constamment optimiser notre produit
Une fois le cadre posé, les ressources taguées et les objectifs identifiés, le FinOps devient un levier opérationnel de l’optimisation de notre produit.
Tant que nous n’avons qu’un seul produit et un nombre de fonctionnalités relativement réduit, nous pouvons intégrer la réflexion FinOps directement dans nos itérations et le développement de notre Produit. Mais la démarche FinOps arrive souvent tard dans le développement de notre entreprise. Nous devons alors gérer différents niveaux de maturité, et le rythme doit s’adapter en fonction de chacun.
L’approche Crawl-Walk-Run crée ce décalage de maturité, mais en même temps permet d’échelonner l’intégration des bonnes pratiques, et d’appliquer la logique même du FinOps à son intégration : nous évaluons, optimisons et testons sur une première unité avant de généraliser.
Le FinOps passe alors d’un ensemble de bonnes pratiques en un système de management opérationnel qui s’améliore à chaque itération, tout en restant ancré dans la réalité de l’entreprise.
Write a comment