Optimisez vos dépenses et votre productivité en migrant vers le PaaS

Optimisez vos dépenses et votre productivité en migrant vers le PaaS

un cas d’utilisation concret avec Opal Solutions

Cet article évoque la migration d’un applicatif vers un environnement de Platform as a Service sur base d’un cas concret.

Date: 9 juillet 2019

Expertises:

Ingénierie des systèmes IT complexes 

Domaine: Secteur numérique 

A propos des projets

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] :

  • La couche Infrastructure-as-a-Service (IaaS) : les consommateurs peuvent accéder aux ressources du Cloud à la demande. Ces ressources peuvent être des machines virtuelles, des ressources de stockage et des ressources réseau. Le fournisseur assume la responsabilité de l’installation, de la gestion et de la maintenance de ces ressources de manière transparente.
  • La couche Platform-as-a-Service (PaaS) : les consommateurs peuvent développer, déployer et gérer leurs applications dans le Cloud en utilisant les bibliothèques, les éditeurs et les services proposés par le fournisseur. Le fournisseur assume la responsabilité du provisionnement, de la gestion et de la maintenance des ressources d’infrastructure.
  • La couche Software-as-a-Service (SaaS) : les consommateurs peuvent utiliser des applications en cours d’exécution sur un IaaS ou un PaaS via une interface unique. Ils ne sont pas responsables de la gestion ou de la maintenance des ressources Cloud fournies.
Figure 1 : Les trois niveaux du Cloud

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]

Image 2 : Les trois principales catégories de services Cloud

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 :

  • Amélioration de la productivité des développeurs : les développeurs se concentrent davantage sur la rédaction de code et la gestion efficace du cycle de vie des applications au lieu de consacrer leur temps à la gestion et à la configuration de serveurs, bases de données, etc. La majorité des solutions PaaS étant centrées sur du IaaS (c’est-à-dire fournir et gérer de manière transparente la couche IaaS), les développeurs se focalisent moins sur les problèmes de maintenance (mises à jour, résolution des problèmes d’administration, etc.) au profit de l’innovation et de l’amélioration de leurs compétences informatiques. Ainsi, l’utilisation des solutions PaaS offre aux petites entreprises et aux jeunes entreprises la possibilité de se débarrasser de tâches fastidieuses (création d’infrastructures, administration, etc.) et d’encourager leurs développeurs à renforcer leurs compétences et à maintenir leurs logiciels et produits informatiques.
  • Evolutivité et haute disponibilité : Le PaaS construit et adapte automatiquement votre application de manière dynamique en fonction de ses besoins spécifiques. Il offre également des fonctionnalités permettant d’améliorer la disponibilité, les processus de récupération d’application (détection d’échec, par exemple), la récupération automatique des instances d’application, les alertes et les notifications et bien d’autres encore grâce à l’auto-provisionnement des ressources.
  • Réduction des coûts : Grâce à son modèle économique, les utilisateurs de PaaS économisent de l’argent qui peut être utilisé pour d’autres opérations commerciales. Les utilisateurs paient généralement uniquement pour les ressources sous-jacentes utilisées et non pour le service PaaS lui-même. Mais l’avantage le plus important est qu’il y a moins de tâches opérationnelles et qu’il faut donc moins d’argent pour ces tâches.
  • Écosystème PaaS : le PaaS est souvent fourni avec de nombreux autres outils, tels que des outils d’analyse ou de surveillance, qui peuvent être couplés à l’application déployée et qui sont souvent déjà préconfigurés. Il permet aux développeurs d’obtenir des informations sur l’état de santé de leur application et d’avoir plus de contrôle.

Le modèle PaaS n’est pas la solution miracle pour résoudre tous les problèmes. Il expose certaines limitations qui sont :

  • L’utilisation d’un PaaS dans votre Cloud privé nécessite de faire appel à une équipe informatique pour installer et gérer la plate-forme.
  • L’utilisation d’une solution PaaS payante d’un fournisseur de Cloud vous vérouille envers ce fournisseur. Dans ce cas, la migration vers un autre fournisseur PaaS pourrait prendre beaucoup de temps, car tout le code et toutes les données de l’application devront être migrés.
  • Les offres PaaS fournissent généralement des plates-formes différentes des plates-formes standards. Par exemple, il peut s’agir d’un serveur d’applications Java J2E légèrement modifié, de serveurs d’applications Python ou même de PHP avec des API réduites, ce qui peut empêcher l’exécution de l’application localement ou dans un Cloud concurrent.
  • Comme seule l’application est déployée, il y a également une perte de contrôle sur le reste de l’environnement informatique, y compris les choix technologiques (versions des composants, choix du système d’exploitation, etc.).

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.

Image 3 : Vue d’implémentation de la solution Interneo

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 :

  • Le backend PHP Symfony est déployé et géré par AWS Elastic Beanstalk, qui est le PaaS d’AWS pour le déploiement et la mise à l’échelle des applications et services Web sur des serveurs Web familiers tels que Apache, Nginx, Passenger et IIS. En utilisant cette solution PaaS, les développeurs peuvent simplement télécharger le code sur leur répertoire git et Elastic Beanstalk gérera automatiquement le déploiement, depuis le provisionnement, l’équilibrage de la charge, la mise à l’échelle automatique jusqu’à la surveillance de l’intégrité des applications. Dans le même temps, l’équipe de Opal Solutions conserve le contrôle total sur les ressources AWS qui alimentent l’application et peut accéder aux ressources à tout moment. Avec AWS Beanstalk, les développeurs peuvent désormais facilement déployer, mettre à l’échelle et surveiller leurs applications.
  • La base de données PostgreSQL est déployée à l’aide d’un service AWS nommé Amazon RDS, qui offre un service de base de données complètement géré par AWS.
  • L’interface React est déployée avec AWS S3, un service de stockage d’objets, et AWS Cloudfront, qui est un service de distribution de contenu (CDN).

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.

Image 4 : Vue de déploiement de la solution Interneo

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.

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

[2Open Source PaaS Solutions Analysis : https://www.cetic.be/Analyse-des-solutions-PaaS-Open-Source

[3Image 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/

[4Le modèle “4+1” vues de l’architecture logicielle : http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf