C'est quoi le Cloud Computing
Il est incontournable dans notre vie numérique, le fameux claoude, cette divinité moderne laissant imaginer monts et merveilles de technologie de pointe à notre service qui doit nous rendre la vie meilleure. Mais revenons un peu sur Terre pour prendre du recul et essayer de se situer sur une simple chose : qu’est-ce que le Cloud Computing, ou “informatique en nuage” en bon français ? Ce billet de vulgarisation vous proposera une petite histoire sur l’origine du Cloud, et les différents niveaux de service qui en font partie, ainsi que l’aspect vie privée qui en découle.
Un peu d’histoire
L’origine du terme Cloud Computing ne date pas d’hier, on peut même dire qu’il provient de la nuit des temps d’Internet. En effet, le symbole du nuage a été utilisé très tôt dans les schémas de représentation du réseau informatique alors appelé ARPANET à la fin des années 1970. Cette représentation perdure encore de nos jours où Internet est toujours représenté sous la forme d’un nuage dans un schéma d’architecture réseau. Exemple sur cet article Wikipedia sur l’E-mail
Internet Cloud, public domain clipart
La première utilisation connue de l’expression Cloud Computing proviendrait de la société Compaq en 1996 dans un document interne décrivant son business plan qui mentionnait l’appellation. L’utilisation de Cloud tout court s’était par contre déjà généralisée dans le début des années 1990 notamment avec l’arrivée du calcul distribué où un système pouvait déporter et piloter ses travaux sur d’autres ordinateurs via le réseau.
Lorsque Amazon créé en 2002 sa filiale Amazon Web Services, le terme Cloud est repris dans les premiers services fournis par l’entreprise en 2006 : Simple Storage Service (S3) et peu après, Elastic Compute Cloud (EC2). Ces offres ont fait partie des pionniers du Cloud Computing moderne tel qu’on le connaît aujourd’hui en se basant sur la virtualisation pour fournir une infrastructure infogérée moyennant un coût à l’usage. Ce sont les débuts de l’IaaS, Infrastructure as a Service.
En 2008, Google lancera une version bêta de Google App Engine, permettant de lancer directement du code applicatif sans avoir à gérer l’environnement d’exécution. C’est le début du PaaS, pour Platform as a Service. Cet outil permettait d’héberger du code PHP, Python, ou encore Node.js sans se soucier des tâches d’administration système liées.
La même année, la NASA (oui oui, l’agence spatiale américaine) aura créé la plateforme Nebula, la première solution open-source de déploiement de Cloud privé ou hybride ainsi que la fédération de Cloud.
En 2009 en France, le projet Andromède visait à créer un “cloud souverain” pour donner une place stratégique au pays dans le secteur. Il accouchera en 2012 de la société Cloudwatt, montée conjointement entre Orange Business Service et Thalès avec l’aide de fonds publics. L’entreprise était partie d’une page blanche et a monté toutes ses infrastructures en utilisant OpenStack comme couche logicielle. Néanmoins, en 2015 Orange rachètera les autres parts de l’entreprise pour la reprendre à 100% et finira par l’intégrer à son offre OBS. Pour le coup, ce plan fut un échec.
OpenStack, justement, a été créée en 2010 par la NASA et Rackspace Hosting sur la base du projet Nebula. Cette solution open-source s’est pas mal répandue chez les hébergeurs (OVH Public Cloud est basé dessus) et propose de nombreux services. J’en parlerai un peu plus tard.
2010 est également l’année de l’ouverture de Microsoft Azure, l’offre Cloud Computing du développeur de Windows, annoncée en 2008. Les autres grands acteurs de l’IT se sont lancés également avec IBM Smartcloud en 2011, Oracle Cloud et Google Compute Engine en 2012, et j’en passe. Le marché est aujourd’hui composé de nombreux acteurs, plus ou moins importants, et ne cesse de se développer.
Nous avons vu pas mal de termes liés au Cloud Computing au travers de cet historique : IaaS, PaaS, etc, sont des composantes des offres Cloud modernes. Nous allons donc voir de manière plus approfondie de quoi il s’agit exactement.
Les concepts du Cloud
Les offres Cloud ont toutes le même objectif : fournir une infrastructure informatique consommable sous forme de service pour laquelle le client n’a pas à se soucier des éléments techniques sous-jacents. La plupart des concepts du Cloud ne sont pas nouveaux et reposent principalement sur des idées datant parfois des débuts d’Internet, mais qui ne pouvaient être mises en oeuvre faute de puissance de calcul ou de réseau. Un fournisseur de service Cloud est généralement appelé Cloud Provider.
Le Cloud repose majoritairement sur la virtualisation. La virtualisation s’occupe de mutualiser des ressources physiques pour fournir des ressources logiques. Ainsi, un serveur physique est capable de fournir plusieurs serveurs logiques. Par conséquent, une infrastructure Cloud se repose sur de nombreuses machines physiques qui mettent en commun leurs ressources pour les exploiter au maximum et éviter d’avoir de la puissance de calcul inutilisée. Je résume rapidement ici le sujet, il fera l’objet d’un article dédié de vulgarisation avec également l’aspect container.
L’automatisation est l’essence même du Cloud. L’autre concept phare de ces offres est la mise à disposition de ressources à la demande dans un laps de temps très court. Tout ceci n’est pas magique et repose sur une forte automatisation des process de livraison d’infrastructure virtualisée. C’est ce qu’on appelle l’Infrastructure as Code, ou IaC, où à partir d’une configuration écrite spécifiant les ressources (nombre de processeurs, quantité de RAM, image OS à déployer, etc), le système créé automatiquement les ressources à partir du modèle donné.
Autre point clé, l’isolation des instances. En effet, dans la mesure où le Cloud Provider mutualise son infrastructure avec ses différents clients, il est indispensable que les usages de l’un n’impactent pas ceux de l’autre. De ce fait, les services Cloud reposent sur des solutions techniques et logicielles d’isolation de process et réseau qui sont censées garantir une certaine disponibilité. Les offres sont généralement accompagnées de quotas qui se débloquent par paliers pour lisser les besoins. En pratique, des Cloud Providers ont déjà eu des soucis avec un manque de puissance de calcul qui a entraîné des problèmes de disponibilités de ressources. C’est arrivé par exemple à Microsoft Azure au début de la crise COVID-19 qui a du faire face à une affluence d’utilisation de ses infrastructures et avait du mettre en place des restrictions le temps d’augmenter sa capacité.
Enfin, l’un des autres éléments essentiellement mis en avant par un Cloud Provider est le multi région et la proximité. Les hébergeurs étant implantés dans de nombreux pays, leur offre est disponible à proximité du client final et assure donc la plus basse latence possible avec. Le découpage des datacenters des prestataires Cloud est souvent fait en “régions” (souvent une zone géographique : Europe, USA, etc), et une région peut être elle-même sous découpée en plusieurs zones espacées permettant de fournir un service de géoréplication en cas de sinistre sur un datacenter.
Le Cloud repose donc sur des concepts déjà connus de l’IT et n’a en soit rien révolutionné si ce n’est la façon de les consommer.
Les modèles de services Cloud
On distingue 3 modèles de services Cloud qui sont généralement présentés de la façon ci après. Le premier élément des quatre colonnes est la comparaison avec l’hébergement interne, ou plus communément appelé on premise (“sur site”). En vert, ce sont les parties sous la responsabilité du client. En rouge, ce sont celles dont le Cloud Provider est responsable selon le niveau de service.
Modèles de Cloud, source Wikipedia, auteur PhFabre, licence CC-BY-SA 3.0
Il est important de savoir avec le Cloud que plus le niveau de service choisi est élevé, moins le client a la maîtrise de l’hébergement.
Infrastructure as a Service
L’IaaS est le premier niveau de service qu’un Cloud Provider fourni, et le plus historique. Le client ne gère plus les couches basses et obtient directement des machines virtuelles, du stockage, et des interfaces réseau avec lesquelles les connecter. Il conserve la maîtrise sur le système d’exploitation et les applications qui seront déployés sur la machine. Par contre, il n’a aucun accès à l’hyperviseur qui fait tourner les VM.
Les machines virtuelles sont généralement proposées sous forme de gabarits prédéfinis avec un coût d’utilisation à l’heure variant selon la puissance demandée.
Platform as a Service
Avec le PaaS, on monte d’un niveau dans la maitrise de l’infrastructure par le prestataire Cloud. Ici, le client perd la main sur le système d’exploitation des serveurs et ne voit que la partie applicative : un runtime pour un programme (Python, Java, PHP, etc), une base de données prête à l’emploi (PostgreSQL, MariaDB…), un cluster Kubernetes, etc. Lorsqu’on est en modèle de service PaaS, le client n’a plus qu’à gérer les règles d’accès à l’environnement et déployer ses applicatifs. Les seules interactions que client pourra avoir avec les couches basses sont le choix de l’OS, entièrement configuré par le fournisseur, et la version du produit qui tournera dessus (exemples : une Webapp Linux avec Java 11, une base de données Microsoft SQL Server sous Windows, etc).
Le client n’a accès qu’aux paramètres du produit fourni en PaaS. Sur une base de données, il aura par exemple accès aux diverses paramètres de performance ou de maintenance que le produit propose. Mais il ne maîtrise pas la façon dont la base de données est installée, c’est le prestataire qui s’en occupe, le client peut la consommer immédiatement.
Software as a Service
Le SaaS est une perte totale de maîtrise du client sur le logiciel. Lorsqu’un produit informatique est fourni en Software as a Service, cela signifie qu’il est entièrement infogéré par le fournisseur et que le client se contente de consommer et utiliser le logiciel. Toutes les couches basses (OS, réseau, environnement d’exécution) et applicatives (versions du logiciel, etc) sont gérées par le prestataire. Sauf rares cas, les données de l’application sont stockées chez le prestataire.
Pour le coup, le SaaS est le modèle le plus visible pour le grand public avec de nombreux exemples : les outils Google sont tous des logiciels en SaaS (Gmail, Drive, etc), la suite Office de Microsoft est désormais en abonnement via Microsoft 360, mais encore des jeux, outils de dessin, etc.
Les entreprises ont de plus en plus recours aux solutions SaaS pour se décharger de la maintenance d’un logiciel hébergé en interne avec toutes les contraintes qui vont avec. On voit désormais beaucoup d’outils de helpdesk ainsi, mais encore de comptabilité ou relation client. Mais c’est aussi un sujet d’inquiétude sur la vie privée et la protection des données, qui est un thème que nous aborderons plus loin.
Les modèles de déploiement des services Cloud
Contrairement à ce que votre lecture de cet article pourrait vous avoir laisser croire, un service Cloud n’est pas forcément sous traité et externe à l’entreprise cliente. Comme dans la réalité le Cloud n’est qu’un infrastructure managée de bout en bout par un prestataire, les outils et solutions qui permettent de le mettre en oeuvre peuvent être parfaitement auto hébergées. C’est à ce moment-là qu’on distingue les notions de Cloud Privé, Cloud Public, ou encore Cloud Hybride.
Le Cloud Privé
Comme son nom l’indique, le Cloud Privé est privatif et donc géré et exploité par la seule entité qui le met en œuvre. Vous allez me dire que ça va à l’encontre de tout ce qu’on a décrit jusqu’ici avec le fait qu’un modèle Cloud fait que le client se décharge de tout ceci. En fait, des entreprises continueront de vouloir la maîtrise de bout en bout. Cependant, pour être plus compétitives au niveau de leur service IT, il est nécessaire d’embrasser les concepts sous-jacents du Cloud pour accélérer la mise en oeuvre de nouvelles fonctionnalités pour la production métier.
Le modèle de Cloud Privé fait que l’entreprise créé son propre service Cloud avec lequel ses équipes informatique vont travailler pour construire leurs environnements applicatifs et service tout en bénéficient de l’agilité du modèle. Forcément, ce modèle reste réservé aux sociétés ayant des moyens financiers permettant de soutenir un coût d’hébergement complet.
Il existe plusieurs solutions techniques pour faire du Cloud privé, l’une des plus connues étant OpenStack qui est open source et permet de gérer des instances virtuelles, du stockage, des services de partage de données, de l’orchestration, etc. Parmi les autres solutions qu’on voit assez souvent nous pouvons aussi citer celles de VMware, célèbre entreprise dans le milieu de la virtualisation, qui propose des outils de Cloud privé.
Le Cloud Public
Le Cloud Public est l’exact opposé du Cloud Privé et modèle de déploiement le plus connu puisque proposé par tous les acteurs du marché. Il s’agit ici des offres auxquelles n’importe qui peut souscrire pour exploiter les ressources mises à disposition par le prestataire. Par défaut, la plupart des objets créés sont accessibles directement par Internet, mais le client a la possibilité de définir des instances privées qui seront cachées par des firewalls et politiques de contrôle d’accès.
Ainsi, les ressources Cloud qui sont plus sensibles pourront faire l’objet d’une restriction d’accès au moyen d’interconnexions spécifiques avec le prestataire.
L’un des aspects important du Cloud public est le modèle de facturation. En effet, le principe qu’on retrouvera de manière quasi systématique est le pay as you go, à savoir le paiement à l’utilisation. Les ressources Cloud consommées par le client sont généralement facturées à l’heure, à l’espace disque utilisé, au nombre d’exécution, à la quantité de données qui sort du datacenter du Cloud Provider, etc. Ce modèle de facturation fait que le calcul du coût total d’acquisition d’un environnement applicatif (comprenant donc la partie hébergement) est un peu plus complexe. Les entreprises avaient souvent l’habitude de budgétiser un hébergement en fonction de critères relativement fixes, là où sur le Cloud le paiement peut varier selon la puissance consommée. La plupart des prestataires propose cependant une notion de réservation d’instance pour laquelle le client s’engager à payer pendant 2 ou 3 ans moyennant une réduction sur les coûts.
Une souscription de Cloud Public mal gérée peut rapidement devenir une poche percée !
Bien entendu, les Cloud Providers proposent généralement des tableaux de bord pour projeter les coûts de leurs services, mais les facturations avec supplément de sel vont souvent de paire avec l’utilisation du Cloud Public si mal géré. L’utilisation d’un Cloud Public se doit d’être associées à une démarche FinOps dans laquelle le coût d’usage est régulièrement réévalué ainsi que la puissance louée pour être au plus proche du besoin réel. L’avantage du Cloud est que les ressources sont ajustables. On dispose de leviers sur la puissance fournie qui peuvent être baissés lorsque celle-ci n’est plus nécessaire.
Le Cloud Hybride
Le Cloud Hybride est le meilleur des deux mondes. Il s’agit généralement de ressources externes à l’entreprise louées et gérées par un prestataire (exemple : Offres Hosted Private Cloud OVH qui fournissent un datacenter virtuel sous VMware), mais dont les outils Cloud sont entièrement à la charge du client. Ainsi, le client dispose d’une capacité de calcul brute qu’il réparti comme il l’entend en conservant une partie en privée et une partie en public.
C’est un modèle qui admet aussi le fait qu’un client possédant un Cloud privé puisse faire appel à des ressources en Cloud public le temps d’encaisser un pic d’activité. Ou encore selon la sensibilité des données. Par exemple, les données sensibles pourraient être traitées par des systèmes hébergés en mode Privé, et des applicatifs moins confidentiels seraient disponibles en public via des ressources sur Internet.
La sécurité et la confidentialité du Cloud
C’est généralement la première question qu’on se pose quand on lorgne du côté des Cloud Providers : est-ce sûr ? mes données sont-elles bien sécurisées ? Qui peut y accéder ?
Souscrire à un service Cloud public, c’est confier les données de votre activité (bien souvent professionnelle, ces offres étant rarement pour le grand public) à un prestataire. Il convient alors d’évaluer son besoin en matière de sécurité avec une matrice de type CID, pour Confidentialité, Intégrité, Disponibilité. Ces différents points sont nécessaires à développer pour savoir si le prestataire répond aux exigences du client. Détaillons un peu ces trois aspects qui ont pour but d’aider à l’étude du choix d’un prestataire Cloud.
Confidentialité
La confidentialité de la donnée est l’action d’empêcher la consultation ou divulgation de celle-ci à des regards non autorisés. En effet, celles-ci peuvent être de nature stratégiques pour l’entreprise (un business plan, des négociations fournisseurs, etc) mais il peut aussi s’agir de données personnelles (base client, etc, tombant sous le coup du RGPD).
Selon la nationalité du prestataire et les conditions d’utilisation de sa plateforme, il peut être soumis à des lois de son pays d’origine autorisant l’accès à leurs agences gouvernementales de sécurité, ou bien il pourra établir une politique commerciale d’analyse des données en vue de les faire exploiter par des tiers. L’un des autres risques possibles est la fuite accidentelle par bug ou exploitation de faille dans le système qui provoquerait une extraction de données clients dans la nature. Ce genre d’anomalie peut aussi entraîner le fait que des souscriptions de personnes différentes puissent subitement accéder au contenu de l’autre, le risque étant possible en raison du fait que les ressources physiques sont mutualisées pour optimiser les coûts.
Face à ces risques, les opérateurs de Cloud ont tout de même une série de réponses. Les datacenters sont étroitement surveillés que ce soit d’un point de vue physique et activité logicielle. L’étanchéité des environnements clients est censée être assurée par une forte ségrégation au niveau réseau et logiciel. Par contre, le point sur l’accès aux données ne saura être mis en confiance que si le client génère lui-même ses jeux de clés de chiffrement et que le prestataire n’en a pas connaissance. Si le prestataire est capable de déchiffrer les données (par exemple, Google n’a jamais proposé de service pour que le client puisse utiliser ses propres clés de chiffrement des données et générait les siennes, ce qui permettait à l’entreprise de consulter les données de ses clients, cette possibilité n’est que très récente.), cela signifie qu’elles peuvent être lues par des personnes non autorisées.
Autre point d’attention, si le prestataire dispose des outils et moyens pour garantir de son côté la confidentialité, le client reste en charge de faire le nécessaire aussi de son côté. Par exemple, une application hébergée sur un Cloud public se devra d’avoir le contrôle d’accès nécessaire pour empêcher tout accès non autorisé. Sur ce point, le prestataire ne peut pas deviner pour vous.
Intégrité
L’intégrité de la donnée est le fait de garantir que celle-ci est identique à son état d’origine, sans altération ni perte partielle. Le prestataire se doit donc de garantir que la donnée n’est jamais altérée, modifiée de manière non maîtrisée, supprimée, ou encore corrompue volontairement.
Une chose qui est à savoir au sujet d’un usage Cloud est que le client reste autant responsable de ses données que le fournisseur. En effet, si le prestataire peut proposer des mécanismes de sauvegarde ou réplication, il est indispensable que le client travaille son propre process de reprise sur sinistre. Un exemple récent dans l’actualité a démontré combien cet aspect est important avec l’incendie du datacenter de Strasbourg d’OVHCloud. Nombre de clients se sont plaints de pertes de données parce qu’ils n’ont pas pris leurs précautions en se reposant uniquement sur le prestataire. Il faut bien faire attention aux offres des fournisseurs car se reposer uniquement sur la plaquette commerciale est un risque non négligeable.
Autre point important sur l’aspect sauvegarde : bien surveiller l’offre de service et son évolution dans le temps. Le fournisseur peut changer dans le temps certains services, en remplacer par d’autres, avec le risque qu’une fonctionnalité change et ne réponde plus au besoin. Par exemple, une option de géoréplication qui aurait été incluse dans l’offre de base et deviendrait subitement premium.
Disponibilité
La disponibilité est le fait que la donnée est accessible pour son utilisation normale. Cet aspect s’imbrique aussi avec la sécurité des accès à la donnée : qui est habilité à consulter quelle information.
Le premier point est généralement répondu au travers des mécanismes de géoréplication qui permettent, en cas d’indisponibilité d’un centre de données, de router les demandes vers un autre qui possède l’exacte copie de celles-ci. A noter que toutes ces pratiques sont en général des fonctionnalités avancées facturées avec un surcoût. La latence est aussi un critère important, d’où le fait que les fournisseurs Cloud proposent des services de CDN (Content Delivery Network) qui permettent de répliquer la donnée et la servir depuis la zone géographique la plus proche du client.
Le second point concerne donc la politique d’accès. Encore une fois, le prestataire Cloud propose de nombreux outils (annuaires utilisateurs, gestion fine des habilitations, etc) mais dont le client a la charge de les utiliser et les paramétrer correctement. Une mauvaise configuration peut entraîner une fuite, ou alors un blocage d’accès qui aurait ainsi des conséquences sur les chaînes de production.
Enfin, la disponibilité peut être impactée aussi en cas de défaillance du fournisseur Cloud. Les incidents sur les plateformes d’hébergement sont réguliers, pas forcément tous bloquants ou impactant, mais il suffit de peu de choses pour qu’un service soit déstabilisé. C’est le risque des solutions centralisées de ce type où, bien qu’il y ait une multiplicité des centres de données et des zones géographiques, une mauvaise configuration poussée ou bien un incident majeur peuvent entraîner de lourds impacts pour leurs clients.
Ces trois points sont donc très importants à traiter, surtout que la gestion de la donnée est devenu depuis quelques temps le nerf de la guerre dans le monde de l’entreprise. Egalement, en ce qui concerne la donnée personnelle, le Règlement Européen de Protection des Données impose de lourdes responsabilités aux détenteurs de celles-ci, et à leurs prestataires.
Les autres inconvénients du Cloud
Il existe d’autres points d’attention à avoir en tête lorsqu’on veut basculer son IT sur du Cloud en plus de l’aspect sécurité de la donnée.
Le verrouillage fournisseur : Les principaux prestataires du marché utilisent des solutions maison ou bien des solutions open source (comme OpenStack), mais on reste enfermé dans leur infrastructure et leurs outils. Migrer d’une plateforme à l’autre peut s’avérer fastidieux et les fournisseurs aiment rappeler la simplicité d’accès à leurs services. Mais pour les quitter, c’est une autre histoire. Ce risque peut se décliner en plusieurs aspects :
- Verrouillage par la plateforme : Les couches basses sont spécifiques au fournisseur et migrer les environnements n’est pas possible faut de compatibilité.
- Verrouillage par la donnée : la donnée est stockée dans un format spécifique au fournisseur, il faut s’assurer qu’elle soit exportable d’une façon lisible et réutilisable
- Verrouillage par les outils : l’outillage proposé peut varier d’un fournisseur à l’autre et les configurations risquent de ne pas être portables
Une réponse possible à ce problème est d’avoir plusieurs fournisseurs Cloud, mais ça peut engendrer le point suivant…
Les coûts non maîtrisés : Comme indiqué plus haut, un service Cloud peut rapidement devenir une pompe à fric si son utilisation est mal gérée. La démarche FinOps est indispensable pour une optimisation de ses coûts d’usage Cloud.
La prise en otage de la donnée : Un point intimement lié à celui des coûts, les fournisseurs Cloud font généralement payer la bande passante sortante. Cela signifie que vous leur confiez toutes vos données, mais que vous devrez payer pour la récupérer. Attention à ces pratiques et aux coûts associés !
Problèmes de voisinage : Le Cloud reposant sur des infrastructures mutualisées, il existe un risque de ressources consommées par un client qui impacteraient celles d’un autre. Même si les environnements ont une forte ségrégation sur la partie logicielle avec une répartition de ressources censée être équitable (à la hauteur du niveau de service payé), cela reste un risque à prendre en compte dans le cadre d’une campagne de tests de charge.
Privatisation des réseaux : C’est un inconvénient qui a une portée plus politique que technique. Un gros souci qui est arrivé avec l’émergence de ces grands acteurs est qu’ils s’accaparent une bonne partie d’Internet. Ce réseau est fondé sur un protocole décentralisé qui est censé assurer une résilience optimale, mais la tendance veut que tout se trouve de plus en plus dans le même panier. Avec les abus et risques qui en découlent : abus de position dominante, distorsion de concurrence, ou bien une forte indisponibilité de ressources dans le cas où l’un d’eux tousse (exemple récent avec le CDN Fastly).
Modern OSI Model, xkcd, licence CC-BY-NC 2.5
Conclusion
J’espère que cet article vous aura donné une vue globale sur ce qu’est le Cloud Computing avec ses enjeux, avantages et inconvénients. Les offres sont souvent séduisantes et leurs vendeurs s’appuient sur l’argument de simplicité d’usage pour s’imposer. Il est vrai que permettre aux entreprises de consacrer leurs ressources à leur métier et de les décharger de l’IT est séduisant sur le papier. Mais cela entraîne derrière une réflexion beaucoup plus importante qu’un simple aspect comptable.