FinOps avec Azure

FinOps avec Azure

Au travers de cet article, je souhaite vous partagez mon expertise sur le développement de solutions en utilisant la plateforme Azure afin de mieux maitriser les coûts des services utilisés par vos projets. Je vous propose dans les chapitres suivants les grandes étapes à mettre en œuvre pour maximiser les capacités qu’offre le Cloud Microsoft Azure au travers des services proposés par cette plateforme.

Etudier les coûts dès la définition de l'architecture

Dès l’étude du design de l’architecture associée à la solution, il faut avoir une réflexion sur les coûts des services versus les fonctionnalités nécessaires pour votre projet. Voici 3 chapitres qui vous vous aider à faire vos choix et ne pas oublier des éléments lors de votre chiffrage de l’infrastructure associée.

Choisir le service Azure en fonction de vos besoins métiers

Ne choisissez pas un service en fonction d’une projection de vos besoins hypothétiques ou une mode mais en fonction de ces fonctionnalités afin qu’il répondre à vos besoins devant être couvert pour votre projet. Rien ne sert de prendre un service premium lorsque vous n'utiliserez des fonctionnalités disponibles sur une licence standard. Par exemple, si vous avez besoin d’une base de données relationnelle, Azure SQL database n’est pas la seule option et aujourd’hui vous pouvez prendre un autre service tel qu’une base de données Azure pour PostgreSQL qui pourrait aussi répondre à vos besoins en étant moins coûteux. Un second point à prendre en considération est les capacités de l'équipe de RUN. Par exemple, ne choisissez pas un service complexe tel qu'AKS si vous n'avez pas l'équipe pour le gérer en Production.

Choisir la bonne licence ou SKU pour vos différents environnements

Ce point peut être une évidence mais l’ajustement des licences associées aux environnements hors production a un impact significatif sur la facture finale. Prenons un exemple simple que j’ai eu l’occasion de déployer sur différents clients : l’API Management, la licence mensuelle en juillet 2021 pour un SKU développeur (West Europe) est de ~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 projet cela commence à faire une économie finale extrêmement efficace :

SKUMensuelAnnuel3 env.4 env.5 env.
Premium2 350,00 €28 200,00 €84 600,00 €112 800,00 €141 000,00 €
Développeur40,00 €480,00 €1 440,00 €1 920,00 €2 400,00 €
Economie2 310,00 €27 720,00 €83 160,00 €110 880,00 €138 600,00 €

Utiliser les instances de machines virtuelles réservées Azure

Un des moyens simple pour économiser jusqu'à 80% du coût d'une machine et de faire une réservation d'instance sur plusieurs années. Cette opération même si elle est engageante et extrêmement facile à mettre en œuvre peut avoir une incidence impressionnante sur la facturation. azure.microsoft.com/fr-fr/pricing/reserved-..

Ne pas oublier les services non visibles mais essentiels à votre application

Une des taches les plus complexes lorsque nous réalisons le design d’une architecture est l’estimation des coûts de celle-ci. Cet exercice nécessite la réalisation d’hypothèses sur les usages futures d’une solution sur laquelle nous n’avons pas forcément de métriques pour nous aider. Basé sur notre expérience projet et en plus des services principaux identifiés il ne faut pas oublier d’ajouter des coûts complémentaires pour les services intrinsèques tels que les transferts réseaux, la gestion des logs et l'analyse, la mise en place de sauvegardes… 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.

Gouvernance

La gouvernance est un point clé à mettre en œuvre pour définir et partager tous les éléments nécessaires à une implémentation de solution dans votre SI. Cela permettra de définir une base commune vous permettant de gérer plus facilement vos projets ainsi que les coûts associés.

Azure Landing Zones

L’usage des Landing Zones Azure va vous permettre un découpage fin de vos projets par souscription et ainsi de 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 service associé pour pouvoir maitriser vos budgets plus facilement.

Azure Policy

Un des services Azure qui peut vous permettre de mettre en œuvre vos règles de gouvernances ainsi que les auditer est Azure Policy. Pour vous donner un cas concret de son usage, vous pouvez proposer ou obliger l’ajout de « tags » sur les ressources Azure pour identifier facilement : le nom du projet, le référent interne, l’environnement … ces « tags » seront déterminant par la suite pour réaliser des tableaux de bord personnalisés pour suivre vos coûts.

Configurer vos services

Maintenant que vous avez identifier les services que vous souhaitez utiliser dans votre solution vous pouvez réaliser du « fine tuning » en exploitant les fonctionnalités que vous offre Azure pour répondre à vos cas d’utilisation fonctionnel.

Azure Scalability

Aujourd’hui beaucoup de services Azure vous propose des options de scalabilités automatisés et ces options vont vous permettre de jouer sur le dimensionnement de vos infrastructures en fonction de vos besoins. La grande force d’Azure est de proposer un paiement à l’usage, vous payerez 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 ne pas positionner un SKU trop élevé en permanence. Cela permettra de limiter les coûts sans limiter les possibilités offertes par votre service.

Azure App Insights, Azure Logs Analytics and Azure Monitor

La mise en place de services complémentaires à votre solution tels qu’Azure Logs Analytics, App Insights & Azure Monitor va vous permettre de suivre les métriques de vos applications. En utilisant ses services vous allez pouvoir déterminer de vrais KPI sur les usages et ainsi pouvoir ajuster vos cas d’utilisations. Grâce à ces métriques, vous pourrez améliorer la configuration de vos services pour être au plus proche de la réalité. Un point important dans l’usage de ses services est de mettre en place un système de purge des logs pour limiter les coûts de stockages de données devenues inutiles.

Azure Automation

Mon service préféré sur le Cloud Microsoft est Azure Automation. Ce service vous offre la capacité d’automatiser toutes les actions d’optimisations que vous souhaitez, votre seule limite est votre imagination. 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 : azure.microsoft.com/en-us/pricing/details/a..

Automatiser la configuration de vos ressources Azure en utilisant l'Infrastructure as Code & le DevOps

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 aussi le coût de développement.

Gérer les ressources inutilisées

Durant mes différentes missions, j'ai pu observer sur différents projets que lorsque l'application évolue il peut survivre quelques reliquats d'infrastructures: disques durs non rattachés à une VM, des archives de logs inutiles ou des PoC qui ne sont plus exploités mais toujours présents... ect ... Il est donc essentielle de faire une revue de ces éléments de façon régulière avec l'équipe technique et fonctionnelle en place pour supprimer tous les éléments qui n'ont plus lieu d'être présents.

Automatisation de la gestion des coûts

Maintenant que tout est en œuvre sur vos projets, Microsoft vous propose d’autres services pour vous faciliter le suivi de vos coûts et vos budgets.

Azure Cost Management

Azure cost management va vous permettre 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 vous permettant de maîtriser et d’analyser vos dépenses. La fonction d’export vous permettra de récupérer les informations au format Excel ou CSV pour les retraiter ou les transferts aux personnes intéressées.

Budget & alerts

La mise en place d’un budget fait parti intégrante du contrôle des coûts de votre solution. Il est essentiel de le définir et de le faire évoluer dans le temps afin d’assurer sa maîtrise. Une fois cette information définie sur le portail Azure vous aurez la capacité de définir des alertes pour éviter les dérives de votre enveloppe budgétaire.

Did you find this article valuable?

Support Antoine LOIZEAU by becoming a sponsor. Any amount is appreciated!