Quelques conseils et points d’attention pour estimer vos coûts d’infrastructure dans le Cloud.

L’hébergement d’infrastructures dans un Cloud est une stratégie qui séduit de plus en plus de startups, PMEs et grandes entreprises pour l’installation de certains de leurs services. En effet, cette approche répond de mieux en mieux à des besoins tels que la performance, l’élasticité, la sécurité, ...
Lors de l’élaboration de l’architecture d’un service [1], une question récurrente apparaît : "Combien cela va-t-il coûter ?". Répondre à cette question est loin d’être évident et dépend de nombreux facteurs comme par exemple le volume de données à traiter, les exigences de disponibilité,... Dans cet article, nous donnons quelques conseils et points d’attention pour estimer les coûts d’une infrastructure hébergée dans le Cloud.

Quelques conseils et points d’attention pour estimer vos coûts d’infrastructure dans le Cloud.

L’hébergement d’infrastructures dans un Cloud est une stratégie qui séduit de plus en plus de startups, PMEs et grandes entreprises pour l’installation de certains de leurs services. En effet, cette approche répond de mieux en mieux à des besoins tels que la performance, l’élasticité, la sécurité, ...
Lors de l’élaboration de l’architecture d’un service [2], une question récurrente apparaît : "Combien cela va-t-il coûter ?". Répondre à cette question est loin d’être évident et dépend de nombreux facteurs comme par exemple le volume de données à traiter, les exigences de disponibilité,... Dans cet article, nous donnons quelques conseils et points d’attention pour estimer les coûts d’une infrastructure hébergée dans le Cloud.

Conseils et points d’attention

1. Choisir une catégorie de services Cloud

Il existe trois principales catégories de services de Cloud computing [3] : Infrastructure as a Service (IaaS), Platform as a Service (PaaS) et Software as a Service (SaaS). Dans la catégorie IaaS, les ressources de calcul, le stockage et les services réseaux sont virtualisés. Ce type de service permet de louer à la demande des ressources telles que des serveurs, des connexions réseaux, de la bande passante, des adresses IP et équilibreurs de charge. La couche PaaS fournit un environnement où il ne faut pas se soucier de la configuration des différents serveurs et autres aspects réseaux. Cela permet aux développeurs d’avant tout se concentrer sur l’écriture de code plutôt que sur les aspects opérationnels comme l’installation, la configuration et la maintenance des serveurs. Cette couche prend en charge la gestion et le maintien de la plateforme au-dessus de la couche IaaS. Finalement, la catégorie SaaS représente des outils, logiciels et services prêts à l’utilisation par les utilisateurs finaux. (Si vous n’avez pas bien compris la différence entre les différents types de services Cloud, nous vous conseillons de lire cet article qui propose une analogie : Pizza as a Service !).

Les trois principales catégories de services de Cloud computing - IaaS, SaaS et PaaS

Lors de la définition de l’architecture qui sera déployée dans le Cloud, il faut tout d’abord choisir les outils les plus adaptés : IaaS, PaaS, SaaS ? Il n’y a pas de choix idéal dans l’absolu, la solution se porte souvent même sur une agrégation des différentes catégories - par exemple des machines virtuelles (IaaS) couplées avec un service de stockage en PaaS. Ce choix se profile d’habitude en fonction des contraintes de la solution : les principales étant les compétences et connaissances au sein de l’équipe IT et le budget disponible. Ce choix va également engendrer des coûts en fonction de la catégorie choisie et du fournisseur de Cloud choisi (AWS, Azure, Google Cloud, OVH, etc). En plus des compétences techniques et des ressources disponibles au sein de l’équipe, il convient de prendre en compte le temps imparti et disponible pour que la solution logicielle soit disponible et utilisable.
IaaS est bien adapté pour les équipes ayant des connaissances sur la gestion d’une infrastructure Cloud, et donc des ressources humaines pour s’occuper de ces tâches. Un ou plusieurs administrateurs systèmes seront nécessaires afin de configurer (et dans une moindre mesure, maintenir) la solution IaaS en fonction du besoin spécifique : machines virtuelles, services proposés par la plateforme, etc.

Ensuite, l’utilisation de PaaS est envisageable dans le cas où il n’a pas ou peu de ressources avec des connaissances de type opérationnel ("Ops"), de personnes compétentes dans la gestion d’une infrastructure Cloud. Le choix d’une solution PaaS permet de combler ce manque avec un environnement managé pour la partie Ops. Le CETIC a récemment publié un article de blog : Optimisez vos dépenses et votre productivité en migrant vers le PaaS, avec un exemple concret d’utilisation d’une solution PaaS.

L’utilisation d’une solution SaaS (e.g. Google Maps pour des fonctionnalités de routage) permet d’obtenir un produit très rapidement. Seulement, même si ce type de solution offre un coût d’entrée qui est faible, à long terme l’effet sera inverse vu que le service est facturé à l’utilisation. Il est conseillé de choisir du SaaS en fonction de l’utilisation que vous en faites. Rester sur du SaaS peut rapidement coûter très cher pour une utilisation intensive. Il faut également penser à l’indépendance vis à vis des services tiers ("vendor lock-in") : peut-on facilement remplacer le service SaaS par un autre (éventuellement élaboré en interne), est-il possible de récupérer ses données si on ne veut/peut plus utiliser cette solution SaaS ?

Il est donc important de comparer le type d’offre. Une solution SaaS est bien adaptée lorsque l’on a un petit besoin rapide. Une solution IaaS/Paas est intéressante si le but est d’avoir une infrastructure hautement disponible, mais attention par contre de bien prendre en compte le coût de maintenance, de déploiement et du personnel qui risque d’être plus élevé.

2. Choisir un fournisseur de Cloud

AWS vs Microsoft Azure vs Google Cloud

Le choix du fournisseur de Cloud est peut-être aussi important que le choix entre les différentes catégories de services Cloud. Voici quelques conseils et points d’attention quant à ce choix :
Le client devrait se questionner sur sa capacité à entrer et à sortir d’un fournisseur de Cloud. Il faut estimer et simuler ce coût en fonction de la criticité logicielle de l’application. Est-il possible de facilement transférer mon application d’un fournisseur de Cloud à un autre ? Combien cela va-t-il me coûter ? Il est donc important d’avoir un plan de backup. Par exemple, si le client a des Terabytes de données à migrer vers un autre fournisseur de Cloud, cela risque de coûter cher.

Le client devrait se renseigner auprès de ses relations afin d’échanger sur leur vécu chez un fournisseur de Cloud : Les services sont-ils fiables ? Y-a-t-il un bon service de maintenance et une bonne relation client ? La documentation est-elle complète ? Rien ne vaut l’expérience concrète après tout.

Le client devrait se renseigner si le fournisseur de Cloud est conforme au GDPR, et prendre des précautions additionnelles en fonction de la sensibilité des données (santé, financières, ...).

Le client devrait se renseigner sur les conditions SLAs (Service-Level Agreement) afin de savoir s’il va être remboursé dans le cas où les serveurs ne sont plus accessibles et dans quelles conditions le client va-t-il être remboursé. Il est possible par exemple qu’un fournisseur de Cloud n’accepte de compenser une indisponibilité que si un mécanisme de Disaster Recovery Plan est mis en place (par exemple, seulement si votre application est multi-région), d’où l’importance de lire ces conditions dans la documentation.

Le fournisseur de Cloud fait-il partie d’un écosystème ? Par exemple, Microsoft Azure a une relation privilégiée avec l’écosystème .Net.

Le fournisseur de Cloud a-t-il des datacentres proches de mes futurs utilisateurs ? Par exemple, si vos utilisateurs cibles habitent en Chine, il serait préférable que votre application soit hébergée dans un datacentre situé en Chine pour des raisons de performance.

Dans certains cas, il est souhaitable de disposer d’un cloud privé plutôt qu’un cloud public comme AWS/Azure/..., ou d’adopter une approche dite "cloud hybride" où toute ou un partie du cloud est hébergée dans un datacentre vous appartenant. Ceci permet un meilleur contrôle sur l’infrastructure (sécurité, confidentialité, ...), mais entraîne plus de charge au niveau de la maintenance.

Afin de comparer le coût d’une infrastructure classique ("on premises") par rapport à une infrastructure déployée sur un cloud public, une analyse des TCO ("Total Cost of Ownership") respectifs est recommandée. Durant cette analyse, les différents coûts de l’infrastructure sont évalués : serveurs, réseau, stockage, main d’oeuvre, ... [4]

3. Comparer les coûts des serveurs !

Une fois le fournisseur de Cloud choisi, ainsi que la ou les catégories choisies, il est intéressant de savoir combien cela va-t-il coûter. Chaque fournisseur de Cloud met à disposition leur outil de calcul afin d’estimer les coûts pour les services choisis (Par exemple, l’outil de calcul d’AWS et celui d’Azure). Connaître le prix exact est une tâche fastidieuse, car pour cela il faudrait connaître à l’avance l’utilisation de toutes les ressources Cloud, ainsi que de connaître l’utilisation de l’application : le nombre d’utilisateurs finaux, l’utilisation de la bande passante et donc le volume de données qui transitent, etc. Bien que fastidieux, voici quelques conseils et astuces :

  • Les coûts de fonctionnement peuvent être approximés par le prix de location des machines virtuelles (pas de trafic intense, ni de volumes très importants de données à stocker). L’estimation de prix se fait sur base d’une réservation des machines à la demande. Il est possible de réserver des ressources pour une ou plusieurs années, ce qui peut réduire considérablement le coût de votre infrastructure par rapport à une location des ressources à la demande. Il est alors possible de réduire le prix en payant à l’avance et/ou en réservant les machines pour une plus longue durée.
  • Renseignez-vous sur les différentes catégories de serveurs virtualisés. Il est intéressant de connaître les besoins en CPUs, RAMs, GPU, stockage, ... afin de choisir les bons serveurs. Ces informations se trouvent sur les différents sites des fournisseurs de Cloud. Par exemple pour AWS, voici les différentes catégories de serveurs virtuels.
  • Si vous avez besoin de serveurs virtuels ayant une demande en ressources non négligeable (par exemple, à partir de 4 CPUs), il est alors intéressant de faire un benchmark. Il faut alors se renseigner sur les différentes catégories de serveurs virtualisés : le nombre de CPUs, RAMs. Les serveurs sont-ils dédiés ? Que se cache-t-il derrière le vcore ? Quel processeur est utilisé ? Un site tel que https://www.vpsbenchmarks.com/ permet de comparer les différentes spécifications, prix et performances des machines virtuelles d’un ou plusieurs fournisseurs de Cloud.
  • Si vous partez sur du IaaS, il faut faire attention aux aspects réseaux : dédié virtuel connectivité privé et public. Il faut également faire attention aux possibles coûts liés à la bande passante, auxquels le client à tendance à ne penser directement. Cet aspect est important si vous faites du stream vidéo par exemple. Certains fournisseurs de Cloud peuvent vous faire payer la bande passante entrante et/ou sortante, il donc important de se renseigner. Attention à ne pas oublier également les coûts de transfert des données entre serveurs. Par exemple si vous avez des machines hébergées sur des datacentres différents et que des requêtes sont échangées entre ces machines.
  • Il est important de savoir si le fournisseur de Cloud propose des outils de monitoring qui sont facilement intégrés aux autres ressources. Ces outils de monitoring vous permettent de connaître l’état de santé de vos services et permettent de faire un diagnostic de l’infrastructure Cloud.
  • Pensez également aux différents environnements dont vous aurez besoin pour développer votre application. Par exemple, le service pourrait avoir besoin d’environnement d’intégration, test, démonstration, ... Ces environnement peuvent être déployés sur une infrastructure moins puissante (et donc moins coûteuse) que sur un environnement de production, mais cela engendre évidemment des coûts supplémentaires.

Conclusion

Comme vous l’aurez compris, faire une estimation des coûts d’une infrastructure hébergée sur un Cloud public est laborieuse. Il faut investir du temps et souvent de l’argent au début du projet pour ces tâches d’estimations afin d’éviter au maximum des coûts supplémentaires. Ces points d’attention permettent de faire les bons choix quant au fournisseur de Cloud, au hardware et à l’infrastructure à mettre en place.

Auteurs

Alexandre Nuttinck
Sébastien Dupont

[1Architecture logicielle sur base de la méthode architecture 4+1 vues - https://architecture.presentations.cetic.be

[2Architecture logicielle sur base de la méthode architecture 4+1 vues - https://architecture.presentations.cetic.be

[3Cloud computing services : taxonomy and comparison - https://link.springer.com/article/10.1007/s13174-011-0027-x