Loading...

Loading...

FinOps, ou comment maîtriser les coûts du Cloud

  • Publié le lundi 9 août 2021
  • temps de lecture 6 minutes

Le développement de solutions sous Microsoft Azure peut être largement optimisé d’un point de vue budgétaire grâce à l’approche FinOps. En me basant sur mon expérience des projets Cloud menés pour de nombreux clients, j’ai identifié les grandes étapes à mettre en œuvre pour en maximiser les capacités. Suivez le guide !

Répondre aux besoins fonctionnels des métiers en retenant le service adapté

En début de projet, le choix du service Azure doit être guidé par les fonctionnalités couvrant les besoins fonctionnels des métiers. Ni plus ni moins ! Rien ne sert de souscrire à un service Premium si vous n'utiliserez que des fonctionnalités disponibles sous licence standard. Par exemple, si vous avez besoin d’une base de données relationnelle, Azure SQL data base n’est pas la seule option disponible aujourd’hui. Une base de données Azure pour PostgreSQL pourrait aussi bien répondre à vos besoins tout en étant moins coûteuse.

Faire des économies en ajustant le type de licence aux environnements ciblés

Ce point peut paraître évident mais l’ajustement des licences associées aux environnements hors production a un impact significatif sur votre facture finale. Prenons un exemple simple que j’ai eu l’occasion de déployer chez différents clients : l’API Management, la licence mensuelle en juillet 2021 pour un SKU développeur (West Europe), s’élève à ~40€ contre ~2 350€ pour une version Premium. Si l’on multiplie ce coût par le nombre d’environnements - généralement de 3 à 5 selon mon expérience - cela vous permet de réaliser des économies finales très conséquentes.

Estimer son budget final avec toutes les hypothèses de volumétrie et d’usage

Une des tâches les plus complexes dans le design d’une architecture consiste à en estimer les coûts. Cet exercice nécessite la réalisation d’hypothèses sur les usages futurs d’une solution sur laquelle vous n’avez pas forcément à votre disposition des métriques pour vous aider.
Mon conseil : ne pas oublier d’ajouter les coûts liés aux services intrinsèques tels que les transferts réseaux, la gestion des logs, la mise en place des espaces de stockage et de sauvegarde. Ces éléments ayant une incidence sur la facture finale, il est impératif de les présenter sur l’estimation initiale en mettant en avant vos hypothèses de volumétries et d’usages.

Définir le périmètre de vos applications avec Azure Landing Zones et Azure Policy

L’usage des Landing Zones Azure va vous permettre un découpage fin de vos projets par « souscription » (entité de facturation) et ainsi délimiter les coûts pour mieux identifier à quels besoins ils répondent. Ce découpage vous permettra d’identifier facilement les coûts du projet ou services associés pour maîtriser plus facilement vos différents budgets.
Azure Policy est quant à lui un des services proposés par Microsoft pour mettre en œuvre vos règles de gouvernances et les auditer. Pour vous donner un cas concret de son usage, vous pouvez proposer ou obliger l’ajout de « tags » sur les ressources Azure utilisées dans le cadre de vos projets. Cela vous permettra d’identifier facilement le nom du projet, le référent interne, l’environnement, etc. Ces « tags » seront déterminants par la suite pour réaliser des tableaux de bord personnalisés, suivre vos coûts et réaliser la refacturation interne si besoin.

Gérer finement les services Azure pour optimiser ses coûts

Maintenant que vous avez identifié les services que vous souhaitez utiliser dans votre solution, vous pouvez vous attaquer au « fine tuning » en exploitant les fonctionnalités que vous offre Azure pour répondre à vos cas d’utilisation fonctionnels.

Automatiser la scalabilité de vos services en fonction de la charge réelle

Aujourd’hui, beaucoup de services Azure vous proposent des options de scalabilité automatisée pour jouer sur le dimensionnement de vos infrastructures en fonction de vos besoins réels. La grande force d’Azure est de proposer un paiement à l’usage, par minute ou par heure, selon le service, pour une période déterminée.
Par exemple, pour un site web vous allez pouvoir faire évoluer la puissance en fonction de la charge réelle du site et ainsi éviter de vous positionner sur un SKU trop élevé en permanence. Cela permettra de limiter vos coûts sans limiter les possibilités offertes par votre service.

Améliorer la configuration de vos services

La mise en place de services complémentaires à votre solution tels qu’Azure Logs Analytics, App Insights ou Azure Monitor vous permet de suivre précisément les métriques de vos applications. En utilisant ces services, vous déterminez de vrais KPI sur les usages et ainsi ajustez vos cas d’utilisations. Grâce à ces métriques, vous améliorez la configuration de vos services en vous situant au plus proche de la réalité.
Mon conseil : un point important dans l’usage de vos services est de mettre en place un système de purge des logs pour limiter les coûts de stockage de données devenues inutiles.

Automatiser sans se priver

Mon service préféré sur le Cloud Microsoft est Azure Automation. Ce service vous offre la capacité d’automatiser toutes les actions d’optimisation souhaitées. Votre seule limite est votre imagination !
Par exemple, je mets régulièrement en œuvre sur mes projets via ce service un processus de start/stop des machines virtuelles de DEV en fonction de plages horaires pour limiter les coûts à notre usage la journée, hors week-end. Un autre cas d’usage que j’ai pu réaliser est la modification planifiée d’un SKU d’une base SQL pour faciliter l’intégration de données tous les 1ers du mois.
Cerise sur le gâteau, Microsoft vous offre (sous conditions) des unités gratuites tous les mois : https://azure.microsoft.com/en-us/pricing/details/automation/#pricing

Aller plus loin avec l’Infrastructure as Code (IAC)

Ces dernières années, j’ai pu réaliser mes déploiements d’infrastructures en utilisant des scripts IaC : ARM, Terraform et dernièrement Bicep. L’énorme avantage de ces solutions est la capacité d’intégrer la définition et la configuration de vos services Azure en y intégrant toutes les règles FinOps et ce de façon itérative. Vous pouvez via ces scripts gérer finement et par typologie d’environnement vos ressources Azure et les déployer facilement via vos pipelines DevOps. L’autre avantage est la capacité de créer des modèles génériques que vous pourrez réutiliser sur différents projets et maximiser ainsi vos coûts de développement.
Automatiser le suivi de vos coûts et de vos budgets avec Azure Cost Management et Budget & Alerts
Azure cost management vous permet de visualiser l’historique et de suivre en temps réel les coûts de votre infrastructure Azure. L’outil vous propose de nombreuses fonctionnalités de reporting pour maîtriser et analyser vos dépenses. La fonction d’export permet de récupérer les informations au format Excel ou CSV pour les retraiter ou les transférer aux personnes intéressées.

Enfin, la mise en place d’un budget fait partie intégrante du contrôle des coûts de votre solution Cloud. Il est donc essentiel de définir précisément votre budget et de le faire évoluer dans le temps afin d’éviter les dérapages. Une fois l’information enregistrée sur le portail Azure, vous avez la capacité avec Budget & Alerts de définir des alertes pour éviter les dérives de votre enveloppe budgétaire.

Conclusion : le FinOps, une philosophie à part entière

Pour moi, FinOps est une véritable « philosophie » à mettre en œuvre tout au long de votre projet et à faire évoluer en améliorant continuellement vos processus d’optimisation des coûts, en fonction de vos besoins réels. C’est la condition sine qua non pour vous situer au plus proche de la réalité de votre entreprise et répondre au mieux aux besoins fonctionnels de vos utilisateurs.

En savoir plus sur l'approche FinOps d'Avanade.

Newsletter du Blog Avanade

Restez informé au sujet de nos actualités

Partager cette page
Fermer
Modal window
Diminuer