Centre de ressources

Accueil Centre de ressources Qu’est-ce que le PaaS ?

Qu’est-ce que le PaaS ?

Définition

Le PaaS permet, à une entreprise et plus particulièrement à des développeurs, d’héberger leurs applications dans le Cloud en masquant l’infrastructure sous-jacente et en rendant les montées en charge transparentes. Les développeurs n’ont plus qu’à déployer leur application depuis leur environnement de développement en utilisant leurs outils habituels tels que Git ou en utilisant directement les outils fournis par le PaaS : une interface en ligne de commande et une interface web. Prenons l’exemple d’une application déployée sans recours au PaaS pour laquelle il faudra installer et configurer un nombre important de composants : le serveur d’application web, la base de données ainsi que l’infrastructure sur lesquels les composants reposent.
Il faudra également les reproduire dans vos différents environnements (production, pré-production, celui de test de votre équipe qualité, ...). Cela nécessite de nombreux efforts pour les équipes d’exploitation et représente des coûts importants. Le PaaS alloue aux équipes de développement une meilleure productivité et allège les coûts en termes d’infrastructure et de compétences à acquérir pour exploiter et automatiser (DevOps) l’utilisation de la plateforme.

 

Le PaaS et sa gestion économique de l’infrastructure

Le PaaS abstrait la couche Infrastructure à ses utilisateurs et encourage ainsi les équipes de développement à se concentrer sur l’architecture et la réalisation des applications. Sa gestion économique de l’infrastructure permet de réaliser de substantielles économies.

L’infrastructure est intelligemment gérée par le PaaS puisque les ressources ne sont allouées que lors des montées en charge et sont réduites lors de faibles utilisations. Il y a également une mutualisation des ressources de l’infrastructure qui contribue à l’optimisation de l’utilisation des ressources du IaaS (Infrastructure as a service).

 

Le DevOps à la portée de tous

Le PaaS permet de répondre aux besoins croissants des équipes “agiles” en outils de DevOps : il offre des cycles de livraison rapides et permet d’éviter les longs cycles conventionnels, contraignants pour les devs (équipe de développement) et les ops (équipe des opérations).

En effet, il fournit tous les éléments incontournables d'une solution complète de DevOps :

  • Il enveloppe l'application dans un conteneur et le publie dans un catalogue applicatif.
  • Le déploiement applicatif se fait de manière automatisée: l'utilisateur émet le souhait de livrer son application en production, via une interface web ou une interface en ligne de commande, et cette dernière est rendue hautement disponible à la version sélectionnée. Certains PaaS proposent également de coupler une plateforme d'intégration continue au déploiement automatisée (CI/CD) en construisant le conteneur applicatif selon un workflow personnalisable.
    Listons les étapes d’un workflow envisageable :
    • 1. Construire le conteneur applicatif dans l'environnement sécurisé de "build" du PaaS (possibilité d'exécuter les tests unitaires et de construire le conteneur uniquement s'ils sont positifs),
    • 2. Publier le conteneur dans un catalogue applicatif,
    • 3. Déployer l'application sur un environnement de "test",
    • 4. Exécuter les tests fonctionnels sur l'environnement de "test",
    • 5. Déployer l'application sur l'environnement de production.

 

 Une plateforme polyglotte et extensible

Un PaaS est polyglotte c’est à dire qu’il permet de construire et exécuter des conteneurs applicatifs de différents langages: Java, Python, Go, PHP, RoR, node JS… Et si votre langage n’est pas disponible dans la liste fournie de base par la plateforme, il est possible d’étendre la liste en fournissant votre propre “pack de langage“, autrement appelé “buildpack” sur les PaaS Heroku et CloudFoundry (ceux-ci sont constitués de scripts de configuration permettant de construire et exécuter votre application et nécessitent des notions en développement logiciel pour effectuer vos propres “pack de langages”).

 

Les évolutions récentes et à venir

Intégrer une solution de PaaS dans une entreprise n’est pas forcément une chose aisée. En effet, contrairement aux développeurs qui ont tout de suite éprouvé un vif intérêt pour les PaaS, les entreprises ont été plus réticentes, en partie à cause des restrictions imposées par les fournisseurs de ces services. Le PaaS commence à fournir des offres mieux taillées pour les entreprises et n’impose plus forcément une refonte complète des applications qui n’ont pas été architecturées pour le Cloud de façon “scalable”, c’est à dire de façon à résister aux montées de charge. Les évolutions récentes ont eu pour objectif d’améliorer la productivité du développement des applications déployables sur le PaaS, ceci en levant ces restrictions et en fournissant un meilleur couplage intégration continue - déploiement automatisé (CI/CD).

 

Les évolutions à venir concernent la portabilité des applications dans le PaaS : les prémices de ce changement sont visibles dans l’utilisation d’une technologie de conteneur applicatif commune : Docker. L’objectif étant de permettre un import/export de conteneur applicatif et donc d’initier l’interopérabilité entre les PaaS.

Les solutions actuelles Openshift et Cloud Foundry s’intègrent mal dans un IaaS et impliquent une redondance de services déjà disponibles via le IaaS. L’une des évolutions à venir est donc d’avoir un PaaS plus proche du IaaS. C’est l’un des objectifs du prometteur projet Solum, qui est le futur du PaaS dans Openstack.

 

 

pierre-padrixe

Pierre Padrixe
DevOps / Développeur

Impliqué dans le développement de solutions de Cloud Computing durant les 4 dernières années, Pierre travaille actuellement dans l'équipe PaaS de Numergy. Il est contributeur dans la fondation Open Source de Cloud OpenStack.

Suivez-moi sur LinkedIn

Suivez-moi sur twitter @undefd