Cet article évoque la migration d’un applicatif vers un environnement de Platform as a Service sur base d’un cas concret.
Introduction
Le Cloud computing est devenu un mot à la mode dans le monde des applications Web. Il est défini comme un modèle permettant un accès à distance et à la demande à un ensemble partagé de ressources informatiques configurables pouvant être disponibles aussi rapidement qu’elles ont été fournies aux utilisateurs. Ces ressources sont disponibles en libre-service et sans l’intervention humaine des fournisseurs de services Cloud. Ce dernier permet aux utilisateurs de consommer des ressources informatiques à la demande. Les services Cloud sont fournis sous trois couches bien discutées [1] :
Si à ce niveau la différence entre les différents types de services Cloud est difficile à identifier, nous vous recommandons de lire cet article Pizza as a Service.
Au cours des dernières années, les entreprises ont dû faire face à la complexité de produire des applications qui doivent être hautement disponibles et évolutives. Une couche IaaS offre des avantages incontestables tels que le gain de temps, l’évolutivité et les économies d’utilisation du matériel. Cependant, la création d’une application de sa conception à son déploiement implique de nombreuses tâches fastidieuses, coûteuses en temps et en personnel. Ces tâches consistent à configurer des serveurs d’applications, des machines virtuelles, des équilibreurs de charge, des outils de surveillance,... Pour surmonter ces tâches et simplifier ce processus, la couche PaaS peut constituer une solution efficace. Cette catégorie de Cloud s’ajoute aux avantages fournis par la couche IaaS, notamment l’utilisation de l’infrastructure sous-jacente, telle que les serveurs, le réseau, le stockage ou les systèmes d’exploitation.
Cet article de blog vise à expliquer la couche PaaS et quels sont ses avantages et ses inconvénients. Afin de motiver l’utilisation de ce niveau de Cloud, un cas d’utilisation réel industriel présentant Opal Solutions est donné. En effet, le CETIC a aidé ce partenaire industriel en accompagnant ses développeurs à faire migrer leur application vers une solution PaaS et à être plus productifs en améliorant les cycles de mise en production de logiciels.
Le PaaS, c’est quoi exactement ?
Le PaaS est conçu pour offrir les meilleurs avantages aux développeurs et les débarrasser de la lourde tâche de gestion du cycle de vie des applications. En effet, il permet une grande évolutivité et le provisionnement de services Cloud à la demande en automatisant son allocation / désallocation afin de prendre en charge de manière optimale les exigences d’une application. En outre, il garantit un haut niveau de disponibilité et de fiabilité grâce à l’équilibrage de la charge et au basculement des capacités des services en tenant compte des exigences de l’application. Il se caractérise également par l’automatisation des tâches d’opérations afin d’assurer un support de bout en bout pour le cycle de vie des applications. Enfin et surtout, il permet aux développeurs d’utiliser plusieurs systèmes d’exploitation, plusieurs environnements d’exécution et infrastructures, ainsi que plusieurs bases de données pour collaborer avec d’autres développeurs.
Le PaaS permet aux entreprises d’éviter des investissements d’infrastructure lors de l’utilisation ou du provisionnement d’applications Cloud. Il permet aux entreprises de se concentrer entièrement sur le développement d’applications Cloud sans se soucier des tâches fastidieuses, telles que l’installation et la configuration du serveur, nécessaires à la mise en place d’une plate-forme adaptée. Le PaaS fournit des services de middleware, un conteneur d’exécution et un système d’exploitation appropriés pour une application, minimise les coûts d’indisponibilité et abstrait les applications aux dépendances de l’infrastructure. De plus, cela permet également l’exécution d’applications qui ne s’exécutent pas nécessairement sur le même serveur. En effet, la solution PaaS sélectionnée peut distribuer l’application sur un ensemble de machines, ce qui garantit l’évolutivité des applications en cours d’exécution. La distribution de l’application est automatiquement gérée par le PaaS et de manière transparente pour les développeurs, qui ne doivent plus s’en préoccuper au niveau IaaS.
La couche PaaS est également de plus en plus répandue dans le monde informatique. "En 2019, le marché total des PaaS comptait plus de 360 fournisseurs, offrant plus de 550 services de plate-forme Cloud dans 21 catégories", selon Gartner. Gartner s’attend à ce que le marché double presque la valeur du marché de 2018 d’ici 2022 et que le PaaS devienne le modèle Cloud dominant.
Il existe de nombreuses solutions PaaS. Certaines sont open source telles que OpenShift OKD, Dokku, PaaSTA ou même DC/OS que vous devez installer sur un site ou sur un Cloud public et le maintenir. Certaines autres solutions PaaS sont proposées par des fournisseurs de Cloud, tels que Elastic Beanstalk de AWS ou Heroku. Celles-ci sont entièrement gérées par le fournisseur de Cloud et l’utilisations des ressources est facturées à la demande.
Choisir une solution PaaS peut s’avérer une tâche fastidieuse. Dans ce contexte, nous avons rédigé un article qui peut être trouvé sur le blog du CETIC [2]. Cet article passe en revue les solutions open source les plus populaires et analyse chacune d’elles en fonction d’un ensemble de critères que nous avons fixés et en tenant compte des exigences communes des partenaires industriels. [3]
PaaS : Opportunités et défis
Le PaaS offre des avantages supplémentaires par rapport à la catégorie IaaS. Les entreprises utilisent généralement le PaaS pour les raisons suivantes :
Le modèle PaaS n’est pas la solution miracle pour résoudre tous les problèmes. Il expose certaines limitations qui sont :
Migrer vers un PaaS, un cas d’utilisation concret
Le CETIC aide actuellement Opal Solutions à migrer leur application - appelée Interneo - d’un environnement IaaS vers le PaaS. En effet, Interneo est un logiciel de gestion de stages destiné aux écoles et aux hôpitaux. Lorsque nous avons rejoint le projet, Opal Solutions déployait manuellement leur solution sur des serveurs OVH, ce qui prenait beaucoup de temps et était prédictif aux erreurs pour les développeurs. Afin de combler cette lacune, nous avons proposé de migrer leur projet vers AWS en utilisant la solution PaaS Elastic Beanstalk afin de réduire ces tâches d’opération. Nous utilisons également l’outil d’intégration continue et de déploiement continu (CI / CD) de GitLab pour tester et déclencher automatiquement le déploiement de leur application sur plusieurs environnements.
La solution Interneo comprend trois composants techniques : un backend PHP Symfony, une base de données PostgreSQL et une interface écrite avec le framework ReactJS (voir Image 3). Pour héberger ces composants, nous avons proposé d’utiliser les services AWS suivants :
Nous utilisons également GitLab CI pour exécuter des suites de tests afin d’obtenir un retour immédiat et pour automatiser l’intégration (compilation, tests) et déclencher le déploiement des différents composants. Ainsi, lorsqu’un développeur effectue une nouvelle validation dans le SCM (Gestionnaire de versions du code source) Gitlab, l’application est automatiquement testée, générée et déployée sur AWS. Une fois qu’elle est déployée, l’application est surveillée en permanence par le service AWS Cloudwatch. Pour exécuter le script Gitlab CI, nous devions configurer le projet Interneo afin qu’il utilise un “Gitlab runner”, qui est essentiellement un serveur qui exécute les instructions répertoriées dans le fichier de script et renvoie le résultat à GitLab.
La vue de déploiement actuelle [4] est illustrée dans l’image 4.
Ce que nous faisons au CETIC à propos du PaaS
Au CETIC, nous sommes également familiers avec les technologies PaaS grâce à certains projets de recherche auxquels nous avons participé au cours des dernières années. Par exemple, nous avons travaillé sur un projet de recherche appelé "ModePaaS". Ce projet vise à créer un outil open source basé sur un modèle qui aide les développeurs à déployer automatiquement des solutions logicielles sur plusieurs solutions PaaS. Il permet de décrire de manière déclarative les exigences de l’application et les capacités des solutions PaaS. Ensuite, cela permet de déployer l’application sur différentes cibles PaaS. Plus d’informations peuvent être trouvées sur le site web du CETIC (ModePaas). Les résultats du projet ont permis d’automatiser les étapes de découverte des services PaaS et de déploiement d’applications dans un environnement multi-PaaS. Ce projet a également permis de renforcer l’expertise du CETIC afin d’aider les partenaires industriels à choisir les technologies Cloud et les offres commerciales les plus adéquats à leurs exigences.
Ensuite, grâce aux projets de recherche MOBITS et CloudMedia, nous avons installé l’une des solutions PaaS open source les plus utilisées à l’aide de conteneurs : OpenShift. Avec la plate-forme OpenShift, nous soulignons les avantages de l’utilisation d’une solution PaaS dans l’industrie. Nous l’utilisons également pour déployer facilement certains services internes et faire avancer nos travaux de recherche. Dans ce contexte, nous avons écrit un article [5] dans le magazine ADMIN Linux Magazine dans lequel nous expliquons comment la combinaison OpenShift avec l’outil CI/CD de GitLab peut aider les développeurs à être plus productifs en améliorant les cycles de publication des logiciels.
Enfin, nous aidons et accompagnons en permanence les entreprises partenaires industriels (1) à sélectionner la solution PaaS la plus adaptée à leurs besoins, (2) à mettre en place des solutions PaaS, (3) à organiser des ateliers de travail sur l’utilisation d’une solution PaaS donnée et (4) pour les aider à migrer leur solution vers le PaaS.
[1] Cloud computing services : taxonomy and comparison : https://link.springer.com/article/10.1007/s13174-011-0027-x
[2] Open Source PaaS Solutions Analysis : https://www.cetic.be/Analyse-des-solutions-PaaS-Open-Source
[3] Image des trois principales catégories de services de Cloud computing : https://mycloudblog7.wordpress.com/2013/06/19/who-manages-cloud-iaas-paas-and-saas-services/
[4] Le modèle “4+1” vues de l’architecture logicielle : http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf
[5] OpenSHift et Gitlab CI : http://www.admin-magazine.com/Archive/2018/47/Automatic-build-and-deploy-with-OpenShift-and-GitLab-CI