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.
1. Choisir une catégorie de services Cloud
Il existe trois principales catégories de services de Cloud computing [2] : 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 !).
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
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, ... [3]
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 :
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.
[1] Architecture logicielle sur base de la méthode architecture 4+1 vues - https://architecture.presentations.cetic.be
[2] Cloud computing services : taxonomy and comparison - https://link.springer.com/article/10.1007/s13174-011-0027-x
[3] AWS : https://awstcocalculator.com - Azure : http://www.datacentertcotool.com - Google Cloud : https://cloud.google.com/pricing/#calculators