Bienvenu dans la seconde partie de cette série sur les concepts de base du cloud computing. Dans la première il a d'abord été question de l'avènement du cloud computing. Ensuite, nous avons présenté le cloud computing ainsi que ses modèles de déploiement. Dans la deuxième partie de notre série, nous parlerons premièrement des modèles de service proposés par le cloud, puis nous attaquerons la question du déploiement des ressources cloud. Nous présenterons ensuite quelques avantages du cloud pour finir par des recommandations pour débuter dans le monde merveilleux du cloud computing.
Ready, Set,
Let's Goo
Modèles de services du cloud
Les fournisseurs de services de cloud computing proposent les ressources informatiques avec différents niveaux d'abstraction. Plus le niveau d'abstraction du service fourni est haut, moins l'utilisateur a de la gestion de ressources à faire (Figure 1).
Les modèles de services du cloud computing sont les suivants :
- Logiciel en tant que service (Software as a Service - SaaS)
- Plateforme en tant que service (Platform as a Service - PaaS)
- Infrastructure en tant que service (Infrastructure as a Service - IaaS)
Figure 1: Modèles de service de cloud computing
Logiciel en tant que service (SaaS)
Ce modèle de service permet à la cliente d'utiliser une application déployée dans le cloud. L'application est accessible depuis tout terminal disposant d'une connexion internet. C'est le cas d'un service mail par exemple (Gmail, Outlook, …), des services de stockages de fichiers (Dropbox, Google Drive, One Drive, iCloud,…).
Pour certaines applications d'entreprises, il est possible de customiser l'application à sa guise. L'utilisatrice ne gère ni ne contrôle l'infrastructure sous-jacente à l'application; infrastructure gérée uniquement par le fournisseur du service.
Le logiciel en tant que service est un modèle de service qui a existé bien avant le cloud computing. Un exemple célèbre est le logiciel de gestion de relation client (CRM) de Salesforce. Le logiciel en tant que service est le plus haut niveau d'abstraction des services cloud.
On utilise ce type de service avec un abonnement. D'autres services sont gratuits.
Plateforme en tant que service (PaaS)
Le fournisseur de services met à la disposition une plateforme de développement d'applications. La développeuse peut créer et déployer son application en utilisant un langage, des librairies et des services supportés par la plateforme. La plateforme peut également fournir un écosystème de services spécialisés (authentification, base de données, paiement, monitoring, …) que la développeuse peut intégrer à son application.
L'utilisatrice d'une PaaS ne contrôle que l'application qu'elle déploie, sa configuration technique en termes de processeurs (CPU), mémoire vive (RAM). Elle n'a aucun accès à l'infrastructure sous-jacente à son application (machines virtuelles et physiques).
La PaaS est tarifée selon la configuration technique de l'application, des services utilisés et du temps de déploiement de l'application.
Quelques PaaS :
Parmi les PaaS il y a aussi des services de fonction en tant que service (Function as a Service - FaaS). L'unité de déploiement de ces services est une fonction. Les fonctions peuvent être composées pour former des applications et d'autres systèmes complexes.
Exemples :
- AWS Lambda
- GCP Cloud Functions
- Azure Cloud Functions
- Knative (Permet de mettre en place sa propre plateforme FaaS basé sur Kubernetes)
Infrastructure en tant que service (IaaS)
Les services d'un IaaS fournissent des ressources informatiques de base comme des serveurs (virtuels et physiques), du stockage (objet et bloc), de la connectivité réseau. Ces ressources servent de bases aux services de niveau d'abstraction supérieure. C'est la combinaison de ces ressources de base qui permet l'innovation dans le cloud.
L'infrastructure en tant que service est le plus bas niveau d'abstraction qu'offre un fournisseur cloud.
L'utilisatrice d'un IaaS est responsable du contrôle et de la gestion des ressources qu'elle déploie. Pour un serveur par exemple, elle s'occupe des mises à jour de sécurité du système d'exploitation, s'assure que les serveurs sont toujours en marche et ainsi de suite.
Exemples de services IaaS :
- AWS Elastic Compute Cloud (EC2)
- GCP Compute Engine
- Azure Compute Virtual Machines
- Tencent Cloud Cloud Virtual Machines
Créer des ressources dans le cloud
Que vous déployez une base de données SQL, un serveur ou une autre unité de déploiement dans le cloud, vous déployez une ressource. L'ensemble des ressources déployées forme votre infrastructure dans le cloud.
L'utilisatrice d'un service de cloud computing peut créer ses ressources avec des moyens suivants:
- L'interface graphique ou Console (web/mobile)
- L'interface en ligne de commande (Command Line Interface - CLI)
- L'interface de programmation d'application REST/SOAP (Application Programming Interface - API)
- Le kit de développement de logiciel (Software Development Kit - SDK)
L'interface graphique permet en quelques clics de déployer ses ressources. Elle a l'avantage de la simplicité. L'interface en ligne de commande permet d'automatiser la création de ses ressources depuis un terminal ou avec un script shell. L'interface de programmation d'applications quant à elle, donne la possibilité de créer ses ressources directement avec des requêtes HTTP. Le kit de développement de logiciels permet d'interagir avec l'API des services du fournisseur cloud dans un langage de programmation.
Ces méthodes de déploiement ont néanmoins des limites. Avec l'interface graphique, il est très difficile (impossible) de tracer les changements et évolutions effectués sur l'infrastructure, et les auteurs de ces changements. Les autres moyens de déploiement utilisent une approche impérative pour la création des ressources, en spécifiant étape par étapes comment les ressources doivent être créées. Cette approche itérative n'est pas idempotente. La mise à jour de l'infrastructure avec le même script impératif est très compliquée voire impossible sans redéployer toute l'infrastructure.
La bonne pratique en matière de déploiement d'infrastructures dans le cloud est l'approche infrastructure en tant que code (Infrastructure as Code - IaC). Avec cette approche, l'utilisatrice défini dans un fichier (manifeste) l'état souhaité de son infrastructure, dans un langage supporté par l'outil IaC. L'outil IaC s'occupera ensuite de déployer les ressources déclarées dans le manifeste. L'idempotence de ces outils permet de faire évoluer son infrastructure sans problème.
L'IaC est une pratique DevOps qui veut que soient utilisées les pratiques en développements logiciels pour gérer le code définissant l'infrastructure cloud. L'utilisation d'outils de gestion de code comme git, SVN, …, l'utilisation des mêmes processus (Pull/Merge request, intégration et déploiement continu (CI/CD), …). De cette manière, il est possible de suivre l'évolution de son infrastructure à travers l'historique des outils de gestion de code. En cas d'erreur dans une nouvelle version, il est simple de retourner vers une version antérieure de son infrastructure.
Les solutions IaC les plus populaires sont les suivantes:
- Terraform: Utilisable avec plusieurs fournisseurs à l'aide de son système de plug-ins. L'infrastructure est déclarée en HCL
- AWS CloudFormation (AWS): L'infrastructure est déclaré en YAML ou JSON
- Cloud Deployment manager (GCP): L'infrastructure est déclaré en YAML ou Python
- Azure Resource Manager (Azure): L'infrastructure est déclaré en YAML
- Ansible: Utilisable avec plusieurs fournisseurs à l'aide de son système de collection, de modules et de rôles. L'infrastructure est déclarée en YAML.
S'il est tenant de déployer son infrastructure via l'interface graphique quand on débute, il est conseillé dès le début, d'utiliser un outil IaC pour déployer son infrastructure dans le cloud.
Quelques avantages du cloud
Les avantages du cloud sont multiples.
Le premier avantage qu'offre le cloud computing est la réduction des coûts des services informatiques. Les coûts liés à la gestion, l'opération des serveurs physiques dans le système d'information de l'entreprise sont remplacés par les coûts de l'utilisation à la demande des ressources dans le cloud. Les coûts fixes des services informatiques deviennent des charges variables d'exploitation.
Un autre avantage est la flexibilité. L'élasticité des ressources dans le cloud permet une adaptation automatique aux changements de charges d'utilisation. Cela permet à l'entreprise d'utiliser des ressources uniquement quand elle en a besoin. Ce qui lui évite de payer pour des ressources sous utilisées.
L'accès aux ressources informatique à la demande, donne beaucoup de flexibilité permettant aux entreprises de s'adapter rapidement aux changements qui ont lieu dans leurs secteurs d'activité. La présence des fournisseurs de services cloud dans plusieurs régions du monde permet aux entreprises de fournir leurs services au plus près de leurs clients.
Utiliser le cloud, c'est externaliser son système d'information dans l'infrastructure du fournisseur de services cloud. Ainsi, les entreprises délèguent la complexité de la gestion et de la maintenance des systèmes informatiques. Elles peuvent se concentrer sur les tâches qui leur apportent de la valeur à leurs activités.
L'accès rapide à des ressources informatiques favorise l'innovation. Les entreprises peuvent se concentrer sur l'amélioration de leurs produits et services courants, à la création de nouveaux produits et services qui peuvent ouvrir de nouveaux marchés, à consolider leur avantage compétitif dans leur chaine de valeur et secteur d'activité.
Le cloud a permis aux entreprises d'organiser le télétravail avec la pandémie de la COVID-19. Les outils de travail déployés dans le cloud ont permis aux employé(e)s de travailler depuis leurs domiciles. L'élasticité du cloud a permis aux entreprises de supporter l'augmentation brusque du nombre d'utilisateurs des outils de travail à distances comme les réseaux virtuels privés (VPN).
Pour profiter pleinement des possibilités offertes par le cloud computing, un changement de paradigme est néanmoins nécessaire dans le fonctionnement de l'entreprise. Les entreprises américaines ont mis par exemple 30 à 40 ans pour tirer parti de l'électricité. Les chaînes de montage n'ont pas été repensées pour tirer parti des avantages de l'électricité : les moteurs à vapeur centraux ont simplement été remplacés par des moteurs électriques, puis connectés aux mêmes vieux vilebrequins et pignons. Seule la réinvention de la production a permis de réaliser le potentiel d'électrification. Il est donc important pour les entreprises de repenser leurs processus pour une adoption optimale du cloud.
Des pistes pour commencer
Maintenant que nous savons ce que c'est que le cloud, par où commence-t-on ?
Pour les entreprises
Il est important de savoir que le cloud computing n'est pas la solution-miracle à toutes les questions de déploiement d'applications et de système d'information. Il y a des entreprises pour lesquelles (à une certaine échelle) il fait moins sens de déployer ses applications dans le cloud que de les garder dans leurs propres centres de données. Le cofondateur de Basecamp, David H. Hansson en parle ici (16e minute) dans le podcast _ Screaming in the cloud_ de Corey Quinn.
Pour une entreprise souhaitant se lancer dans le cloud, la première étape est de faire un état des lieux de son système informatique. Cet exercice permet de faire le point sur les applications, le dimensionnement des ressources informatiques, leurs configurations et les liens d'interdépendance. Cet état des lieux permettra ensuite de définir une stratégie de migration de l'infrastructure et des applications dans le cloud. C'est une migration au cas par cas selon le résultat de l'inventaire. Il peut être nécessaire reprendre l'architecture de certains systèmes et d'autres peuvent être déployés en tant que tel.
Dans le cadre d'une migration dans un cloud public, le choix du fournisseur de services dépend du secteur d'activité de l'entreprise. Pour les entreprises évoluant dans des secteurs réglementés (santé, finances par exemple), il est important de connaitre les contraintes légales et les législations du pays en matière de traitement et de stockage des données, de conformité avec les normes qui régissent le secteur d'activité. Il faut avoir à l'esprit que les normes changent d'un pays à un autre. Il faut donc s'assurer que son fournisseur de services cloud réponde à ces normes.
Les entreprises pour lesquelles l'informatique n'est pas le coeur de métier, il peut être nécessaire de se faire accompagner par des entreprises spécialisées dans la migration vers le cloud; telle qu'Accenture. En fonction des systèmes à migrer, ces entreprises proposent une stratégie de migration pour un passage en douceur dans le cloud. Ils proposent également un accompagnement post-migration pour les équipes techniques de l'entreprise cible.
Pour les développeurs et les jeunes pousses
Il convient de dire aussi que si vous êtes satisfaits de votre hébergeur favori, qui s'occupe de votre site, il n'y a pas de raison de changer pour le cloud.
Comme dit plus haut, les modèles de services (IaaS, PaaS, SaaS) du cloud permettent de choisir le niveau de contrôle souhaité sur ses ressources. Pour se libérer des tâches de gestion quotidiennes de serveurs, il est préférable d'utiliser un PaaS. Le fournisseur du service s'occupera de l'infrastructure sous-jacente et de la disponibilité de votre application. Cela vous permettra de vous concentrer sur le développement des fonctionnalités de votre application. Les PaaS fournissent également des services spécialisés dont l'utilisation vous évitera de réinventer la roue ; ce qui permet d'innover encore plus rapidement.
Dans le choix de son fournisseur de services PaaS, il convient de prendre en compte la tarification, l'écosystème fourni de développement à travers les services spécialisés (authentification, distribution de charge, DNS, Content Delivery Network - CDN, …) et l'expérience utilisateur.
Il sera aisé de commencer par des fournisseurs orientés développeurs comme Heroku et DigitalOcean. La facilité de leur prise en main en fait de bonnes portes d'entrée dans le monde du cloud computing. Les concepts étant sensiblement les mêmes d'un fournisseur de services cloud à un autre, le passage aux gros fournisseurs de services (si nécessaire) se fera naturellement.
Conclusion
Les ressources déployées dans le cloud sont catégorisées selon trois niveaux d'abstraction ou modèles de services (IaaS, PaaS, SaaS). Le choix du modèle de service dépend du niveau de contrôle et de responsabilité souhaité par l'utilisatrice. Le modèle de service Ias permet un contrôle total de la ressource déployée. L'utilisatrice est également responsable de gestion quotidienne (accès, sécurité, administration.....) de sa ressource. Au niveau d'abstraction suivante, l'utilisatrice laisse la gestion quotidienne de la ressource sous-jacente au fournisseur avec le modèle de service PaaS. Elle peut se concentrer sur le développement et le déploiement de ses applications et autres services. Le modèle de service Saas permet à l'utilisatrice d'utiliser un service final. C'est cette variété de types de service qui fait du cloud un vrai moyen d'innovation.
L'utilisatrice a le choix l'interface en ligne de commande, l'API, le kit de développement de logiciels, la console (web ou mobile) pour créer ses ressources (IaaS, PaaS, SaaS). Les trois premières méthodes ont une approche incrémentale dans la création des ressources. Ce qui a une certaine échelle peut-être difficile à gérer. C'est là qu'entrent en scène les outils IaC. Ces outils permettent de définir son infrastructure cloud dans un langage déclaratif. L'Iac est une approche DevOps qui veut que le code de l'infrastructure soit géré comme tout autre (outil de gestion de code, revue de code, intégration et livraison/déploiement continue, …).
Le domaine d'activité est un facteur déterminant dans le choix d'un fournisseur cloud. Pour les secteurs d'activité réglementés, les autorités peuvent avoir des exigences en matière de stockages de données et autres questions de sécurité. Il est donc important de bien prendre en compte ces facteurs essentiels dans le choix de son fournisseur de services cloud. Le modèle de tarification des services du cloud qui sont généralement à l'utilisation, permet de changer les coûts d'investissement en coûts d'exploitation et de réduire généralement le coût des systèmes d'informations.
Pour bénéficier néanmoins des bien faits du cloud computing, il est primordial de repenser les processus internes des entreprises en matière de déploiement et de système informatique. D'où l'apparition de méthodes comme DevOps pour une meilleure efficacité dans un environnement cloud.
Pour finir, il convient d'indiquer que le cloud n'est pas la solution ultime à toutes les questions de déploiement. Le cloud computing est avant tout un moyen, un canal pour mettre à disposition de sa publique cible, son service informatique.