12 décembre 2024
Architecture
Samira Hama Djibo
Consultante
Dans cette ère où les infrastructures Cloud et on premise se côtoient et se toisent, le critère de la rentabilité est déterminant. Cependant là où le Cloud nous promet des économies à petite mais surtout à grande échelle, on peut parfois tomber sur des mauvaises surprises une fois la facture reçue.
Quelle que soit la taille de l’architecture Cloud, on n’est jamais vraiment à l’abri d’un dépassement budgétaire inattendu. Mais en appliquant quelques principes simples du FinOps, on peut arriver à facilement minimiser ce risque.
Comment donc suivre efficacement ses dépenses ? Et comment optimiser financièrement son infrastructure Cloud ?
Nous allons ici nous appuyer sur le Cloud Provider AWS pour étayer nos propos ainsi que nos exemples.
Pourquoi est-ce qu’on peut se retrouver avec des factures plus importantes qu’attendu ?
Une des particularités d’une infrastructure Cloud, c’est qu’il est très facile de commissionner des ressources. Prenons a contrario une architecture on-premise: pour commissionner un serveur physique et installer des machines virtuelles, ce n’est souvent pas une mince affaire. Il faut choisir un fournisseur, lancer la commande et souvent attendre plusieurs mois sans compter d’éventuels problèmes logistiques.
De plus, la commande d’un serveur on-premise est souvent conditionnée par une étude minutieuse des caractéristiques nécessaires du serveur en question et une étude de budget à valider, réétudier etc.
En comparaison, la commande d’un serveur avec les mêmes caractéristiques sur le Cloud se fait en quelques clics, même pour un non-initié, et la disponibilité est immédiate.
La promesse du Cloud, c’est de pouvoir héberger tout aussi bien une architecture basique (comme par exemple un site web statique) qu’ une architecture extrêmement complexe répondant à des besoins spécifiques et des contraintes exigeantes. L’un des principaux clients d’AWS, l’entreprise Netflix responsable de 15% du trafic internet mondial, stocke jusqu’à 10 exaoctets (10 millions de téraoctets) de données vidéo sur le service Amazon S3. Ce chiffre inclut les copies stockées dans différentes régions afin d’assurer la haute disponibilité du service ainsi que sa résilience en cas de panne dans un des data centers d’AWS.
Une telle variance des offres et des possibilités que permettent le Cloud rend facile d’allouer des ressources largement supérieures à celles nécessaires, ou souscrire à des options qui, normalement conçues pour des cas très précis, font augmenter votre facture de façon apparemment démesurée..
Qu’on utilise l’interface graphique du Cloud Provider, ou alors un outil d’Infrastructure As Code comme Terraform ou CloudFormation, sans la maîtrise suffisante au moment de l’allocation des ressources, ou par simple erreur humaine, on peut réquisitionner des ressources largement au-dessus de nos besoins, et donc se faire surprendre par une facture exorbitante.
Pour illustrer ce point, prenons par exemple l’allocation d’une petite base de données via l’interface graphique d’AWS. Pour les mêmes caractéristiques de vCPU et de RAM, en choisissant par erreur, ou en méconnaissance de nos besoins réels, un stockage io2 au lieu de gp2, on multiplie tout simplement la facture par 10 !
Pour bien maîtriser les coûts, il faut donc tout d’abord une bonne maîtrise des termes techniques, du vocabulaire spécifique au Cloud Provider et ne pas se perdre dans des options trop avancées.
Une fois cela pris en compte, il faut noter que ces mêmes cloud providers mettent à disposition des outils qui permettent de facilement détecter et limiter l’impact d’erreurs de jugement ou d’implémentation.
Les solutions mises en place par les cloud providers pour pallier à ce problème
AWS a mis en place le Well-Architected Framework qui sert de guide pour la conception d’applications dotées d’infrastructures sûres, hautement performantes, résilientes et efficientes.
Le framework est basé sur six piliers: excellence opérationnelle, sécurité, fiabilité, efficacité de la performance, optimisation des coûts et durabilité.
Le pilier Optimisation des coûts qui nous intéresse le plus ici est axé sur l’évitement des coûts inutiles.
A toutes les échelles, des services sont mis en place par AWS pour faciliter l’implémentation de ce pilier. Leur connaissance et leur utilisation permettent sans faute d’optimiser le coût de son architecture.
Nous allons voir ici les approches de base qui permettent de s’assurer à un cadrage et une compréhension exhaustive de sa facture cloud et en amont l’optimisation des ressources allouées.
Il existe pour cela trois approches complémentaires:
- Surveillance et budgétisation de ses dépenses,
- Limitation des accès au strict nécessaire,
- Optimisation des ressources avec des méthodes comme par exemple:
- Le rightsizing: Le rightsizing est le processus consistant à adapter les types et tailles d’instances ni plus ni moins qu’aux exigences de performance et de capacité de la charge de travail.
Par exemple, cela peut se traduire par le fait de faire appel à de l’auto-scaling qui est la possibilité d’ajouter et supprimer des instances d’une ressources (scalability) ou augmenter et diminuer la taille de ces instances (elasticity) en fonction de l’utilisation en temps réel qui en est faite. Lorsque la charge de travail augmente, plus de ressources sont allouées, et lorsqu’elle diminue, une partie des ressources allouées est libérée.
.
Voici un autre exemple de rightsizing: Dans un projet les environnements de développement et de test sont généralement utilisés uniquement 8h par jour pendant la semaine de travail. Il est donc possible d’arrêter ces ressources lorsqu’elles ne sont pas utilisées pour réaliser des économies potentielles de 75 % (40 heures contre 168 heures).
- L’utilisation de Saving Plans & Reserved instances : Prévoir et réserver à l’avance les ressources dont on aura besoin sur 1 ou 3ans permet de faire des économies jusqu’à 72% ! L’utilisation de Spot Instances – des instances éphémères – permet, elle, des économies jusqu’à 90% !
- L’utilisation des classes de stockage dont on verra un exemple détaillé plus bas.
Voici quelques pratiques et services incontournables suivant ces différentes approches :
Surveiller et budgétiser ses dépenses
AWS Cost Explorer
C’est une solution de Cost Analysis Dashboard qui permet de voir en temps réel sur une certaine période le total des dépenses par services utilisés.
Exemple d’un Cost Analysis Dashboard
AWS Budgets
AWS Budgets permet de créer des Budgets de dépense et de les exporter notamment sous forme de rapports. Des alertes sont levées et des emails envoyés lorsque les budgets sont dépassés.
AWS Cost Anomaly detection
Grâce au machine learning, AWS peut détecter une augmentation anormales des dépenses qu’il serait plus difficile de repérer manuellement.
Parmi les services de gestion de coûts proposés par AWS, on voit que ceux présentés ici, gratuits et mis en place par défaut, permettent déjà à eux trois d’obtenir une vue assez synthétique de ses dépenses et d’être alerté en cas de potentielles anomalies.
Limiter les accès au strict nécessaire
Un des principes de base qu’il s’agit de sécurité est la limitation au maximum des accès aux ressources au strict minimum et uniquement aux personnes accréditées (principe du RBAC). Ce même principe permet de réserver la création de ressources sensibles qui peuvent, comme on l’a vu, faire rapidement monter la facture aux personnes qui sauront faire bon usage de ces droits..
Que ce soit cloud ou hors cloud, la règle est la même : le least privilege access, c’est-à-dire limiter les droits au strict minimum, en fonction du rôle, du groupe d’appartenance, et même pour les grosses organisations en fonction du département ou du sous compte AWS depuis laquelle la requête est faite.
En plus de monitorer et contrôler ses dépenses, le cloud offre plusieurs possibilités d’optimisation des coûts dont voici un exemple.
Exemples d’optimisations possibles: les classes de stockage
Prenons comme exemple une boite de finance qui stocke les dossiers de leurs clients, tout comme notre géant Netflix sur le service de stockage Amazon S3.
Au début de la procédure, les dossiers sont consultés très souvent, plus le dossier avance, moins ils sont consultés, une fois clôturés ils sont archivés. Chaque année les services d’audit consultent les dossiers archivés. Après 10 ans, ils ne sont pratiquement jamais consultés mais doivent être conservés pour des raisons légales.
AWS met en place des classes de stockage en fonction de la fréquence d’utilisation des fichiers permettant ainsi de réduire les coûts sur les fichiers qui sont plus rarement consultés.
Ainsi nous mettrons les les dossiers en cours dans la classe S3 standard, puis dans la classe S3 Standard Infrequent Access au fur et à mesure qu’ils sont moins consultés. Une fois le dossier clôturé, nous le déplaçons dans une des classes S3 Glacier à accès instantané ou flexible. Puis une fois la période d’Audit passée, nous les archivons finalement dans la classe S3 Deep Glacier aux coûts de stockage les plus bas.
A noter que nous pouvons également déposer les fichiers directement dans la classe S3 Intelligent Tiering dans laquelle AWS se chargera automatiquement de déplacer les fichiers dans les classes les plus rentables en fonction de l’utilisation réelle constatée.
Par exemple, pour la région Europe(Irlande), les tarifs en fonction des classes sont les suivants :
S3 Standard | S3 Infrequent access | S3 Glacier | S3 Deep Archive | |
Prix par GB/mois | 0,021€ | 0,011€ | 0,0033€ | 0,00091€ |
Frais de récupération des fichiers ? | Non | Non | Oui | Oui |
En analysant le besoin ou en faisant appel aux Intelligent Tiering d’AWS, nous pouvons donc économiser jusqu’à 100% du prix standard de stockage / Gb et par mois pour les fichiers les moins consultés.
Nous avons vu ici une partie des optimisations financières rendues possibles en faisant levier de la puissance du Cloud. Les labs du Well-Architected Framework mis fournis par AWS permettent de voir de façon concrète les voies d’optimisation des coûts présentées par le Cloud provider lui-même.
En plus de l’application des principes essentiels vu dans cet article, vous pourrez creuser facilement le sujet à cette adresse.
En guise de conclusion, je me permets d’appuyer sur le fait que la connaissance à minima basique des principes fondamentaux du FinOps comme décrits dans cet article est essentielle autant au développeur qu’à l’architecte en passant par le management et la finance. C’est uniquement cette collaboration étroite qui permettra une surveillance à toutes les échelles des coûts engendrés et une optimisation financière d’un projet Cloud.