Optimisation des coûts : le rôle crucial du FinOps dans un écosystème Cloud / Kubernetes
🛠️

Optimisation des coûts : le rôle crucial du FinOps dans un écosystème Cloud / Kubernetes

De nombreuses entreprises se tournent vers le cloud avec l'espoir de réduire leurs coûts informatiques. Cependant, une réalité surprenante se présente : beaucoup finissent par dépenser plus qu'elles ne l'avaient prévu. 🧐🤔

Lors du dernier AWS Summit qui s’est tenu le 3 avril 2024 à Paris, le sujet du FinOps a été mis en avant, révélant que jusqu’à 30% des sommes investies dans le cloud sont gaspillées. Ces pertes se manifestent souvent par des serveurs inutilisés ou surdimensionnés, des actifs inutiles, tournant pendant les périodes de faible charge.

Pourquoi un tel phénomène ?

L'état d'esprit encore trop orienté "on-premise" est l'un des obstacles majeurs à une gestion efficace des coûts dans le cloud. Dans un environnement traditionnel, les ressources sont perçues comme des actifs fixes. Or, le cloud offre une flexibilité qui nécessite une approche différente. C’est vrai que le réflexe "on-premise" est difficile à perdre, vous voyez une ressource, vous l'achetez, et vous la gardez pour l'éternité. Mais dans le cloud, c'est comme dans un buffet à volonté : vous prenez ce dont vous avez besoin, quand vous en avez besoin, et vous laissez le reste.

L'absence de sensibilisation au FinOps contribue également à ce problème. Sans comprendre le système de tarification qui est différent selon le type de ressource et les bonnes pratiques de gestion financière dans le cloud, les entreprises risquent de tomber dans le piège des dépenses excessives et du gaspillage.

Comprendre le FinOps

Le FinOps, ou Financial Operations, c'est un peu comme le super-héros méconnu du monde du cloud. Son but ? Vous aidez à garder un œil sur vos dépenses, sans pour autant sacrifier la performance. Comment ? En suivant trois étapes simples :

Les trois phases du FinOps

  1. Informer (Visibility & Allocation) : avoir une visibilité claire sur les coûts et allocations des ressources. Prenez le temps de regarder où va votre argent. Vous seriez surpris de voir combien de fois, il se perd en chemin !
  2. Optimiser (Rates & Usage) : ajuster les tarifs et l'utilisation des ressources pour un meilleur rapport qualité-prix. C'est un peu comme jouer à Tetris avec votre budget.
  3. Opérer (Continuous Improvement & Operations) : un processus continu d'amélioration et d'optimisation. Améliorez, ajustez, et recommencez. Le cloud évolue constamment, alors autant rester à jour.
image

L’objectif n'est pas de réduire les coûts à tout prix, mais de distinguer ce qui est gaspillé de ce qui est dépensé judicieusement.

AWS et le FinOps

AWS offre divers outils pour optimiser la gestion financière :

  • AWS Cost Explorer :

AWS Cost Explorer est un outil qui vous permet de visualiser et d'analyser vos coûts et votre utilisation sur AWS, que ce soit pour chaque service AWS individuellement ou pour l'ensemble de votre compte AWS. Il vous permet également de créer des rapports de coûts personnalisés et de configurer des alertes de dépenses. 

image
  • AWS Budgets :

AWS Budgets est un outil qui vous permet de définir des budgets de coût et d'utilisation personnalisés pour votre compte AWS. Vous pouvez définir des budgets pour des services spécifiques, des catégories de coûts particulières ou pour l'ensemble de votre compte AWS. Vous avez aussi la possibilité de configurer des notifications par e-mail lorsque vos dépenses dépassent votre budget défini.

  • AWS Cost Allocation :

AWS Cost Allocation est un processus qui vous permet d'allouer vos coûts AWS à des équipes ou des projets spécifiques au sein de votre organisation. En utilisant des tags, qui sont des étiquettes personnalisables que vous attribuez à vos ressources AWS, vous pouvez suivre et gérer plus facilement les coûts. Par exemple, vous pouvez taguer vos instances EC2 par projet ou par équipe. Ensuite, en activant ces tags dans la console de facturation AWS, vous pouvez voir quels projets ou équipes consomment le plus de ressources et leur attribuer les coûts correspondants.

Ce blog AWS sur le sujet explique très bien comment s’en servir.

  • AWS Organizations :

AWS Organizations est un outil qui vous permet de gérer plusieurs comptes AWS comme une seule entité. Avec AWS Organizations, vous pouvez gérer de manière centralisée les politiques, les budgets et l'allocation des coûts à travers plusieurs comptes AWS.

Le FinOps chez Skale-5

Pour optimiser efficacement la gestion financière dans le cloud, il est primordial de démarrer sur de bonnes bases avec une architecture bien conçue. Cette architecture doit être adaptée aux besoins spécifiques de l'entreprise tout en étant flexible et évolutive pour répondre aux changements futurs.

L'importance des conseils d'experts

C’est là où intervient l'expertise de professionnels du cloud pour guider les entreprises dans leurs migrations et approvisionnements en infrastructures. Ces experts, notamment ceux de Skale-5, peuvent fournir des recommandations précieuses, aider à identifier les meilleures pratiques et éviter les pièges courants liés à la gestion des coûts et des ressources dans le cloud.

Nous avons accompagné plusieurs start-up pour leur donner une base solide sur laquelle elles peuvent débuter : des landings zones qui respectent les bonnes pratiques, définissant des organisations pour une meilleure gestion d’équipe et surtout du budget.

La gestion des clusters Kubernetes : un défi majeur pour la maîtrise des coûts 

L'une des ressources les plus complexes à gérer et à optimiser dans le cloud et qui nécessite l’aide d’un expert est sans aucun doute les clusters Kubernetes. La mauvaise gestion de ces derniers peut entraîner un gaspillage significatif des ressources et avoir un impact direct sur les coûts.

Les chiffres parlent d'eux-mêmes

Lors du dernier AWS Summit de Paris, des statistiques alarmantes issues du Kubernetes Cost Benchmark Report 2024 ont été révélées. Dans le contexte des clusters EKS (Elastic Kubernetes Service), il a été constaté que seulement 13% des CPU provisionnés et 20% de la mémoire sont effectivement utilisés. Cette sous-utilisation flagrante des ressources met en lumière l'importance cruciale d'une gestion optimisée des clusters pour éviter le gaspillage et maximiser l'efficacité opérationnelle.

Les causes de la sous-utilisation des ressources

Cette sous-utilisation des ressources est souvent attribuée à un surprovisionnement excessif, où les ressources sont allouées en excès par rapport aux besoins réels. De plus, le manque d'automatisation dans la gestion et le dimensionnement des clusters peut également contribuer à une utilisation inefficace des ressources.

Des solutions pour optimiser l'utilisation des clusters Kubernetes

Comment sortir de ce cercle vicieux du gaspillage ? Heureusement, quelques astuces peuvent vous venir en aide :

  • Évitez un premier coût, l’humain : les modifications d'infrastructure manuelles. Automatisez avec Terraform pour éviter de perdre un temps précieux qui se traduit directement en euros sur vos factures.
  • Utilisez le Cluster Autoscaler : un outil ingénieux qui ajuste automatiquement le nombre de nœuds dans votre cluster selon vos besoins réels. Comme avoir un jardinier qui plante et arrache des fleurs selon la météo.
  • Choisissez les EC2s avec le meilleur rapport performance/prix : comme choisir le meilleur cheval pour la course, mais pour des serveurs virtuels.
  • Éteignez automatiquement les instances non utilisées hors des heures ouvrées : un peu comme éteindre les lumières en quittant une pièce, mais pour vos instances cloud. Par exemple, vous pouvez éteindre les environnements de développement et de test pendant la nuit et les week-ends lorsqu'ils ne sont pas utilisés.
  • Définissez des nœuds en instance spot dans un Launch Template : comme obtenir des billets d'avion à prix réduit en étant flexible sur les dates et les destinations.
  • Utilisez la scalabilité horizontale des pods avec l'Horizontal Pod Autoscaler : ajustez automatiquement le nombre de pods selon l'activité réelle de votre application. Comme avoir un chef cuisinier qui adapte la quantité de plats servis en fonction du nombre de convives.
  • Utilisez la scalabilité verticale des pods avec le Vertical Pod Autoscaler : laissez le Vertical Pod Autoscaler ajuster automatiquement les ressources allouées à vos pods en fonction de leur activité. Comme avoir un maître d'hôtel qui ajuste la taille des assiettes en fonction de l'appétit des convives.

Une nouvelle génération d'optimiseurs de coûts :

Ces dernières années ont vu l'émergence d'une nouvelle génération d'optimiseurs de coûts : des modules dynamiques entièrement automatisés qui prennent le contrôle des fonctions de dimensionnement des clusters et optimisent en continu et en temps réel. Parmi ces solutions, une se distingue particulièrement : Karpenter, soutenu par AWS (et orienté vers EKS). Nous avons déjà dédié un article complet à cette solution révolutionnaire, alors n'hésitez pas à le consulter pour en savoir davantage. 

Notre équipe a mis en œuvre Karpenter pour plusieurs clients et a été satisfaite à la fois de l'approche et des résultats obtenus. Mais il est important de noter qu'il existe également d'autres solutions qui ne sont pas en open source, à l'instar de Cast AI. Ces solutions propriétaires offrent aussi des fonctionnalités intéressantes, bien qu'elles puissent différer dans leur approche et leur portée par rapport à Karpenter.

Article issu de notre participation à AWS Summit

Merci pour votre lecture. Cet article vous a plu, partagez sur vos réseaux 😉

Hanane Chrif El Asri - avril jour, 2024

image