Explorer par thématiques

<---
Retour

15 mars

12

Product & Tech

Comment optimiser les coûts du cloud : stratégies et bonnes pratiques

data center

Le cloud computing offre aux entreprises un avantage concurrentiel en matière d’IT qui permet de réduire les coûts et stimuler les solutions innovantes. Le cloud computing a la capacité de réduire les coûts pour les entreprises de deux façons principales. D’une part, il permet de déléguer la gestion des machines et offre un gain d’élasticité sur le dimensionnement du parc de machines. D’autre part, le cloud computing fait gagner en flexibilité. Ainsi, les entreprises ont plus d’opportunités de tester de nouvelles idées et de proposer des développements ambitieux. 

Cependant, les systèmes de tarification des fournisseurs de services cloud sont complexes et leur mauvaise compréhension peut conduire à avoir des factures prohibitives, à manquer des innovations décisives ou simplement à consommer trop de temps sur des points déjà résolus. Cet article s’attache donc à dessiner un usage raisonné du cloud.

C'est quoi exactement le cloud computing ? Et ça coûte combien ? 

Le cloud computing est une technologie en vogue qui permet aux entreprises de stocker, de gérer et de traiter leurs données et applications sur des serveurs distants. Cette technologie a révolutionné le monde de l'informatique en offrant des avantages tels que la flexibilité, la scalabilité et la réduction des coûts.

L'un des principaux défis liés à l'utilisation du cloud computing est la compréhension des coûts associés à cette technologie ($$$). 

Les modèles de tarification des fournisseurs de services cloud computing peuvent être complexes et difficiles à comprendre. Cela peut entraîner des coûts imprévus et inattendus pour les entreprises. De plus, les temps de construction et de maintenance de l’infrastructure sont souvent mal estimés dans l’évaluation des coûts finaux.

Dans cet article, nous allons examiner les différents facteurs qui affectent les coûts du cloud computing et comment les entreprises peuvent les gérer pour optimiser leurs dépenses. Nous aborderons les sujets suivant : coût d’un cloud, d’une base de données, d’une erreur, de la maintenance etc…

Notez bien :

  • à performance équivalente, les dépenses liées aux serveurs peuvent varier de 1 à 4
  • la gestion du DevOps coûte environ dix fois plus cher que les serveurs eux-même

Comment choisir la meilleure offre cloud pour mon entreprise ?

Prenons un scénario où l’entreprise “Unicorn marketplace” gère une application de taille standard : 

100 000 utilisateurs par mois, 20 000 clients, 200 000 $ de CA mensuel

  • en temps normal, 1 CPU (Central Processing Unit), 2 Go RAM (Mémoire vive)
  • aux moments les plus critiques : 10 CPU, 20 Go RAM
  • base de données avec 200 kO par utilisateur et inférieure à long terme à 2 Go.

Nous dessinerons quel pourrait être un usage raisonné du cloud pour cette entreprise dans le reste de l’article.

Choix du fournisseur de cloud

Prix d’une instance (un CPU ; 4 Go RAM) à la demande selon les différents clouds au 11/03/23 - région France ou UE

choix fournisseur cloud

Les offres des principaux fournisseurs de cloud sont proches. Nous décidons de baser notre étude sur AWS. AWS est le fournisseur de services cloud leader du marché. Ses innovations permettent des architectures souples qui simplifient la gestion du cloud.

Quelle offre choisir au sein du cloud AWS ?

Prix pour 1 CPU, 4Go de RAM au sein du cloud aws au 10/03/23 :

choix du fournisseur cloud, tarifs

Au sein du service de cloud computing AWS, il existe un facteur 6 entre l’offre la moins chère et la plus chère. S’il est mal planifié, le passage en serverless peut conduire à un surcoût conséquent.

Pour décider de l’offre la plus adéquate, il convient alors d’adopter un schéma d’architecture. On en envisage deux. 

Architecture 1: Stratégie du monolithe

L’architecture monolithique, bien que désuète, demeure la pierre de touche d’une architecture web. Cette stratégie consiste à louer une machine unique au sein d’un service de cloud et à installer l’ensemble des composants nécessaires à la vie de l’application sur celle-ci. A l’instar d’une cathédrale, les différentes couches s’empilent et se répondent. Si l’ensemble peut être stable dans le temps, lorsqu’il s’effondre, il emporte la totalité de l’application avec lui. C’est un exemple de single point of failure.

Dans notre exemple fil rouge, c’est ici la mémoire qui est le principal facteur de dimensionnement. Au vu du pic attendu, on peut opter pour :

  • une instance t4gx.2large : 8 CPU, 32 Go RAM, en acceptant certains problèmes de performances au moment des pics

Coût mensuel : 93.6 $ / mois

  • une instance m5.4xlarge : 16 CPU, 64 Go RAM, en surdimensionnant 

Coût mensuel : 282.51 $ / mois

Première remarque: une erreur dans le dimensionnement peut induire des écarts de prix importants (du simple au triple !).

Architecture 2: Stratégie en cluster 

L’architecture qui utilise un groupement de machines est aujourd’hui le standard du DevOps. Cette architecture est plus robuste aux incidents. Elle est aussi la seule capable de garantir une disponibilité permanente de l’application. 

Elle profite des dernières innovations des services de cloud computing. Cette architecture se compare à un travail d’urbanisme : différents quartiers interagissent entre eux. Et si un incendie se déclare dans l’un d’eux, il est vite confiné.

En contrepartie, sa mise en place et sa maintenance en ligne sont plus complexes et demandent un certain niveau d’expertise.

Pour notre exemple fil rouge, l’application est virtualisée via docker.

On fait l’hypothèse que sur un mois, la somme des CPU nécessaires est égal à deux CPU (1 présent en permanence, et 10 CPU au moment des pics de charge)

Là encore, deux options sont possibles :

Solution 1: la plus rapide est d’utiliser aws Fargate - on ne gère aucun serveur.

Coût mensuel : ~ 100 $ / mois

Solution 2 : la plus optimisée est d’utiliser aws ECS par dessus des instances EC2 réservées ou des instances spot

Coût mensuel : ~ 20 $/mois

Coût des serveurs par mois selon cette stratégie

coût des serveurs mensuels

Combien coûte une base de données ?

coût d'une base de données

Nous mentionnons la possibilité d’héberger la base de données sur un serveur EC2 à titre de comparaison. 

Malheureusement, en cas d’incident, la gestion des backups et des plans de reprise des bases de données sont complexes… Si bien qu’aujourd’hui ce sont les solutions auto-gérées qui se sont imposées.

Autres éléments d’infrastructure cloud

Pour la stratégie de clustering uniquement, il nous faut prévoir un application load balancer. Celui est facturé : 20 $/ mois pour l’application load balancer

  • Le front angular est stocké sur s3 et délivré via un CDN : 1 $/mois pour le front
  • On peut considérer l’utilisation d’un parefeu applicatif (WAF) : 29 $/mois
  • On peut considérer l’utilisation d’une NAT gateway (passerelle réseau) (NAT) : 30 $/mois

(Comme la pratique du WAF est peu répandue, nous ne l’intégrons pas dans les coûts mentionnés ci-après)

Combien coûte une infrastructure cloud par mois ? 

Si on récapitule tous ces postes de dépenses en fonction des différentes stratégies, le coût de l’infrastructure par mois est le suivant :

coût d'une infrastructure mensuelle

Combien coûtent les interruptions de service dans les entreprises qui utilisent le Cloud ?

Coût d’une interruption de service 

Dans notre exemple fil rouge, le chiffre d'affaires moyen de l’application Unicorn Marketplace est de 268 $/h. Ainsi, nous considérons que si l’application est indisponible pendant une heure, cela engendre pour l’entreprise une perte de 268$. 

Il nous faut maintenant chiffrer le nombre et la durée des interruptions auxquelles l’application sera soumise selon l’architecture choisie..!

Stratégie 1 - le monolithe : Durée de vie d’une instance isolée ec2 sur aws

Disponibilité : Le niveau de disponibilité garanti par aws pour une instance ec2 isolée sur un mois est de 90%. D’expérience, le taux d’indisponibilité réel d’une machine est d’environ 1% par mois. En ajoutant la probabilité qu’un événement rare survienne (incendie, avarie, bug), on peut estimer la durée de vie d’un serveur autour de 5 ans. 

Réparation : si un tel évènement survient, on estime à une bonne journée (mise à jour à intégrer, backup de la base de données à rétablir) le rétablissement du service dans une architecture isolée.

Ainsi, on obtient le coût d’interruption suivant :

  • Coût de l’interruption de service une fois tous les cinq ans : 6432 $
  • Coût de la panne amorti sur 5 ans : 107 $/mois

On peut considérer que ce coût sera équivalent pour toute architecture avec un single point of failure.

Stratégie 2 - Cluster : Nombre d’interruption sur une région

Une région cloud AWS peut être indisponible dans son intégralité pendant une certaine période de temps. Dans cette situation, même une application avec une stratégie cluster est impactée.

D’expérience, les incidents exposant une région entière se produisent tous les 2 ans. Ces incidents durent quelques heures et sont résolus avant même de pouvoir migrer son application ailleurs. 

AWS s’engage à un dédommagement d’environ 2$ pour une indisponibilité de l’ensemble de l’infrastructure de plusieurs heures (ce qui ne marque pas une grande garantie).

On peut donc considérer que, pour une stratégie en cluster, le coût lié aux interruptions est d’environ : 22 $/mois, (20 $/mois avec dédommagement d’AWS)

Coût des incidents cloud

coût des incidents cloud

Il ne reste plus qu’à intégrer le coût des incidents aux coûts directs pour estimer l’ensemble des coûts liés à l’usage du cloud !

Synthèse des coûts liés à l’infrastructure cloud

synthèse des coûts liés au cloud

Malheureusement, le coût global d'une infrastructure ne s’arrête pas là..! Il faut y intégrer : 

  • Un coût de gestion de l'infrastructure
  • Le coût des développeurs qui attendent de pouvoir mettre à jour leur code source à fréquence régulière..

Quelles sont les bonnes pratiques de déploiement dans le Cloud ?

Une application a une vie et un rythme de développement. La qualité d’une architecture web se mesure aussi à cela qu’elle doit permettre de : 

  • déployer souvent et rapidement de nouvelles fonctionnalités
  • restaurer rapidement un service en cas d’incidents
  • limiter les bugs lors de la mise en production

Ces trois thèmes ont chacun un enjeu financier. Celui-ci se mesure principalement en coût d’opportunité  - quelles sont les pertes engendrées par l’absence d’une fonctionnalité ?. Pour l’apprécier, nous étudions : 

  • le coût de la gestion des erreurs de mise en production
  • Le gain de temps via une bonne gestion des cycles de déploiement.

Bugs en production et coût de redéploiement 

Une équipe de développeurs bien organisée met régulièrement à jour l’application en place. A chaque mise à jour, il existe des risques de rendre l’application indisponible. Dans notre exemple en fil rouge, le coût d’une interruption du service est de 268 $/h.

Plus l’agilité dans le processus de déploiement est grande, moins longue sera la durée de l’incident !

Dans son rapport annuel sur le DevOps, Google propose de considérer deux niveaux de maîtrise de la chaîne de déploiement :

  • le niveau d’excellence, qui conduit à ce que l’ensemble des étapes de déploiement soient automatisées.
  • le niveau médium, où les bonnes pratiques ne sont que partiellement implémentées et la plupart des étapes sont encore relativement manuelles.

A partir des statistiques fournies par Google, on peut estimer les pertes liées aux incidents de déploiement selon le niveau de maîtrise :

pertes liées à des incidents cloud

La gestion des incidents coûte 50% plus cher entre le niveau médium et le niveau excellence ! Le gain est réinvesti en faveur d’une agilité plus grande en risquant un plus grand nombre de déploiement.

R.O.I d’une bonne agilité

Avoir une chaîne de déploiement optimisée permet des remontées d’erreurs rapides et offre une meilleure maîtrise de son application. On peut alors tester plus de fonctionnalités, innover plus rapidement. Les gains sont triples :

Agilité : Ces améliorations sont difficiles à apprécier financièrement..! On a vu que les équipes qui avaient confiance en leur chaîne de déploiement étaient prêtes à risquer plus de déploiement et d’incidents. Pour notre Unicorn Marketplace en fil rouge, on prendra comme hypothèse un gain autour de 600 $/mois.

Confort : Il faut également mentionner l’amélioration de la développeur expérience : selon un récent rapport de Google, les développeurs d’une entreprise d’un haut niveau DevOps ont 2 fois plus de chances de recommander leur entreprise que les autres.

Gestion : La gestion de la chaîne de déploiement peut faire l’objet d’un chiffrage financier et est détaillée en suivant.

Quels sont les coûts de gestion dans le cloud ?

La gestion du cloud est probablement le poste de dépense le plus important dans la vie d’une infrastructure. Les compétences y sont rares et, les technologies évoluant vite, leur maîtrise demande du temps et de la patience. 

Cependant, il n’existe pas de constat clair sur le temps nécessaire à la gestion d’une application. En recoupant différentes sources d’informations, on peut l’estimer à environ 1/10 du coût du développement du projet.

Avec deux journées de développement par mois, ce pôle de dépense se chiffre autour de 1 600 $/mois. Il s’ensuit qu’en mettant en place une gestion au maximum automatisée, on libère du temps pour les développeurs. Et si on délègue la gestion des déploiements à une plateforme centralisée, les coûts sont encore réduits.

comparateur de coût différents services

En résumé, Unicorn Marketplace aurait tout intérêt à passer par une plateforme de déploiements continu pour continuer d’être innovante tout en faisant des économies !

Conclusion

Le DevOps est complexe et en constante évolution ! En fonction de son niveau de connaissance : 

Prix : Le coût du cloud peut aller du simple au double

Compétence : Les bonnes pratiques évoluent continuellement. Elles sont connues mais demandent du temps pour être implémentées.

Agilité : les entreprises qui délivrent le plus sont celles qui ont une chaîne de déploiement automatisée (confort pour les développeurs, risque d’erreurs limités etc…)

L’ensemble de ces statiques engage vers une gestion centralisée des déploiements et des infrastructures web. Dans le futur, les plateformes comme WebCapsule devraient prendre le pas sur les déploiements en interne.

Au WebCapsule Studio, on peut vous accompagner tout au long de votre vie sur le cloud :

  • Vous découvrez le cloud computing et souhaitez accéder aux technologies les plus innovantes ? 
  • Vous êtes engagés dans une migration vers le cloud mais devez faire face à la pénurie de DevOps pour vous accompagner ? 
  • Vous avez des infrastructures opérationnelles mais avez des besoins ponctuels pour les moderniser ? 

N’hésitez pas à nous contacter ! Nous serons très heureux de vous accompagner aussi bien dans vos réflexions stratégiques que dans l’implémentation de nouvelles technologies.

Arthur Rouzoul

Membre du collectif WebCapsule Studio - Senior Project Manager

Contenus

Comment optimiser les coûts du cloud : stratégies et bonnes pratiques

Ces articles pourraient vous intéresser