Le Serverless computing est un modèle d’exécution basé sur le cloud qui permet d’héberger des applications en tant que service, sans qu’il soit nécessaire de maintenir un serveur.

Le fournisseur de services maintient l’allocation des ressources sur le serveur et l’utilisateur est facturé sur la base de l’utilisation réelle. L’accent est mis sur l’application de base que l’on crée et l’infrastructure est gérée uniquement par le fournisseur de services. Le Serverless computing est également connue sous le nom de Function as a Service (FaaS).

En d’autres termes, le PHP Serverless est la mise en œuvre du Serverless computing avec un backend PHP pour vous donner un exemple.

Dans ce guide, nous allons examiner de près ce que signifie le PHP Serverless, ses principales caractéristiques et ses avantages et inconvénients afin de vous permettre de mieux comprendre cette approche de Serverless computing dans le cloud.

Plus précisément, nous examinerons le concept de Serverless computing, ses cas d’utilisation et sa portée, ses avantages et ses inconvénients, une mise en œuvre simple du PHP Serverless avec Bref et l’état du PHP Serverless sur les trois grands noms (Amazon, Microsoft et Google).

Prêts ? Commençons !

Traditionnellement, vous aviez besoin du matériel d’un serveur pour mettre en place une application sur Internet. La ou les machines du serveur étaient physiquement connectées à l’internet pour que quelqu’un puisse accéder à votre application. La maintenance du serveur était une affaire coûteuse.

Ensuite, l’évolution des services d’hébergement a permis aux webmestres d’acheter de l’espace d’hébergement – chaque serveur pouvant contenir plusieurs applications. Cela a permis de réduire les coûts.

Avec la montée en puissance du Serverless computing dans le cloud, les économies d’échelle ont encore réduit les coûts, car il était possible de louer un espace minuscule sur une grande ferme de serveurs distants. En fait, le Serverless computing vous permet de ne payer que pour les services que vous utilisez. Lorsque vous ne l’utilisez pas, vous n’utilisez pratiquement aucun espace ou ressource sur le cloud.

Le Serverless computing simplifie le processus de développement de logiciels : elle permet à une organisation de se concentrer uniquement sur le développement sans se soucier du déploiement, de la maintenance du serveur et de l’échelle.

PHP Serverless : Les bases

Tendances pour le terme « Serverless » sur Google
Tendances pour le terme « Serverless » sur Google

Pour déployer une application PHP Serverless, vous devez d’abord explorer le concept de Serverless computing. Si le terme « Serverless » est apparu pour la première fois dans cet article sur l’avenir du développement de logiciels de 2012 sur ReadWrite, il a gagné en popularité avec le lancement d’AWS Lambda en 2014.

Dans cette section, concentrons-nous sur quelques concepts clés liés au Serverless computing, et essayons de répondre à une question commune qui entoure cette technologie : s’agit-il vraiment de serveur – « less » ?

Caractéristiques du PHP Serverless

Le déploiement est une tâche facile sans avoir à gérer le serveur. Vous téléversez simplement votre code sur le serveur et le reste est pris en charge par le fournisseur. La technologie Serverless vous permet d’avoir des fonctions de diagnostic linguistique, en interaction les unes avec les autres.

Par exemple, si vous disposez d’une application de messagerie, le module de connexion peut être codé dans une langue et la fonction qui met à jour votre statut peut être codée dans une autre langue.

Bien que cela soit encore possible sans hébergement Serverless, il est certainement plus difficile d’interagir. Chaque fois qu’une action déclenche votre fonction, une instance se crée pour la gérer.

Ce processus de création d’une instance peut être « chaud », lorsque vous utilisez une instance existante, ou « froid », lorsque vous démarrez une nouvelle instance. Il y a un léger délai dans ce processus, en particulier avec un démarrage à froid, par rapport à l’hébergement traditionnel, où votre serveur est toujours en mode veille pour traiter les requêtes.

Cependant, la situation entre l’hébergement Serverless et l’hébergement traditionnel devient exactement l’inverse lorsque vous avez un grand nombre de requêtes à traiter. L’évolutivité est inhérente à la technologie Serverless. Si vous avez un besoin soudain de mille requêtes simultanées, le fournisseur s’en chargera sans effort ou configuration supplémentaire de votre part.

Le PHP Serverless est-il vraiment Serverless ?

Ne laissez pas le terme « Serverless » vous troubler. Il ne signifie pas que le « serveur » n’existe pas. Lorsque vous utilisez une application Serverless, il y a un serveur en arrière-plan qui traite vos entrées et calcule les sorties nécessaires.

Le « -less » est présent dans le terme du point de vue du développeur, qui n’est jamais exposé aux différents éléments du serveur. Par conséquent, si vous déployez une application PHP Serverless, il y a un serveur réel fonctionnant sur le cloud qui répond aux requêtes.

BaaS vs architectures Serverless

Bien que l’expression « Serverless computing » ne soit pas définie de manière stricte, elle peut également désigner les applications BaaS (Backend as a Service). Le BaaS fait également référence à un modèle de Cloud computing, dans lequel les opérations des serveurs sont externalisées à un tiers et un développeur doit simplement se concentrer sur la création et la maintenance du logiciel.

La principale similitude entre BaaS et Serverless est le fait que le développeur ne se concentre pas sur la gestion du serveur. De nombreuses organisations fournissent des paquets BaaS et FaaS sous la même enseigne.

Voici les principales différences entre le BaaS et le Serverless computing :

  • Composantes : Les applications BaaS sont similaires à leurs équivalents traditionnels, un développeur ne peut pas apporter de modifications à sa structure pour s’adapter au BaaS. En mode Serverless, l’application est divisée en parties logiques appelées fonctions, et chacune de ces fonctions répond à un événement et exécute une tâche spécifique.
  • L’évolutivité : L’évolutivité est un élément crucial dans une application Serverless – plus de ressources sont allouées avec une augmentation du trafic. Ce n’est pas un module nécessaire pour les applications BaaS, bien que certains fournisseurs de services le proposent comme un complément.
  • Déclencheurs : Une application Serverless est pilotée par des événements, ce qui signifie qu’une activité particulière déclenche l’application à chaque fois qu’elle se produit. D’autre part, une application BaaS peut s’exécuter en arrière-plan en utilisant des ressources en continu comme une application traditionnelle.
  • Architecture modulaire : Dans l’architecture Serverless, il est possible que les différentes fonctions d’une application résident et s’exécutent sur différents serveurs, mais s’exécutent de manière transparente grâce à leur intégration. Une application BaaS peut ou non suivre cette structure.

PHP Serverless : Cas d’utilisation

Nous avons discuté de divers aspects du Serverless computing, et de la différence avec le BaaS. Bien que nous ayons couvert les bases du Serverless computing, nous allons explorer les situations dans lesquelles vous pourriez souhaiter utiliser une telle architecture.

Vous avez peut-être réalisé qu’il n’est pas judicieux d’héberger des applications complexes sur des technologies Serverless. Cependant, même si vous décidez de ne pas déployer une application complète par le biais de PHP Serverless, vous pouvez déployer des modules.

Dans cette section, nous examinerons deux exemples de mise en œuvre d’une pile Serverless : les bases de données et le stockage de fichiers.

Une base de données Serverless est une base de données à la demande qui vous permet d’exécuter des requêtes à tout moment. La mise à l’échelle est facile grâce à la pile Serverless et le fournisseur ne vous facture que pour le temps d’utilisation de la ressource.

Amazon Aurora et Google Cloud Datastore sont des exemples de bases de données Serverless disponibles sur le marché aujourd’hui. Un système de stockage de fichiers Serverless est mis en œuvre sous la forme de stockage d’objets. Les fichiers ne sont pas traités comme une hiérarchie dans un système de fichiers, mais comme des objets, qui contiennent les données du fichier lui-même et ses métadonnées. Le stockage et la récupération se font par le biais d’une API de type REST.

IBM Cloud vous offre un service de stockage d’objets. D’autres cas d’utilisation courants d’applications Serverless sont les API et les backends mobiles, dont le design repose sur de petites fonctions logiques et interdépendantes.

PHP Serverless : Avantages

Dans cette section, nous examinons les principaux avantages du Serverless computing et les raisons pour lesquelles elle gagne du terrain ces dernières années.

Réduction des coûts des serveurs

Théoriquement, le Serverless computing conduit à des coûts plus faibles par rapport à l’hébergement traditionnel. La raison en est simple : vous utilisez le service pendant une durée déterminée et il n’y a pas de frais d’entretien pendant les périodes d’inactivité. Si vous êtes confronté à du trafic constant au fil du temps, cependant, l’adoption d’une architecture Serverless n’entraînera peut-être pas une grande différence de coûts.

Un déploiement plus facile

Le déploiement d’un service Serverless n’exige pas que vous configuriez et paramétriez votre serveur. Le déploiement d’une application Serverless se fait également par le biais de fonctions simples. Il est plus facile de créer une version de l’application et de la rendre disponible sur le cloud. L’ensemble du processus de déploiement est donc plus facile et plus efficace.

Évolutivité

Dans une configuration traditionnelle, il faut faire beaucoup d’efforts pour répondre à un trafic plus important. D’autre part, le prestataire de services s’occupe de l’allocation des ressources en cas d’augmentation du trafic. Par conséquent, il est plus facile de s’adapter lorsque vous déployez une architecture Serverless.

PHP Serverless : Inconvénients

Si le Serverless computing présente de nombreux avantages, il faut être conscient de ses inconvénients potentiels avant de s’y engager.

Performance

Le principal problème que les utilisateurs mettent en évidence avec le Serverless computing est la baisse de performance. Bien qu’il soit déclenché par un événement, il faut quelques centaines de millisecondes pour qu’une micro-instance réponde à une requête.

Ce décalage peut s’avérer important pour les applications où le temps est compté. Avec l’augmentation de la complexité d’une application, les composants résidant en divers endroits ajoutent à ce décalage. Ce décalage supplémentaire peut s’avérer préjudiciable à l’expérience de l’utilisateur.

(Lecture suggérée : Introduction à la création de sites web avec Gatsby et WordPress)

Verrouillage des vendeurs

Alors que l’architecture Serverless vous permet de vous concentrer uniquement sur votre code, le vendeur obtient le contrôle total de l’infrastructure. Par conséquent, vous ne pouvez pas changer de fournisseur si vous êtes Serverless, car la migration peut être une tâche difficile.

Débogage

Les fournisseurs se chargent du déploiement de bout en bout des applications Serverless. Par conséquent, un développeur doit compter sur le vendeur pour fournir les journaux pour le débogage. Le processus de débogage d’une application Serverless pour en identifier la cause profonde est également difficile.

PHP Serverless : Démarrer avec Bref sur Lambda

Bien que nous ayons exploré l’architecture Serverless, nous allons maintenant voir ce dont vous avez besoin pour déployer une application PHP par le biais d’un service Serverless.

Comme vous l’avez peut-être déjà deviné, le déploiement d’une application Serverless est très spécifique au vendeur. C’est pourquoi cet article tente d’aborder les implémentations d’une application PHP Serverless sur Amazon AWS. Bref, est un package Composer qui permet de déployer des applications PHP sur AWS via Lambda.

Bref est en constante évolution, vous devriez donc probablement vérifier la matrice de maturité de Bref pour évaluer si c’est une bonne idée de porter votre application sur une architecture Serverless.

Pré-requis pour le PHP Serverless avec Bref

D’abord, allez sur Amazon AWS et créez un compte. Vous en aurez besoin pour déployer votre application. Ensuite, vous devez installer le framework Serverless pour gérer votre déploiement.

npm install -g serverless

Ensuite, générez votre paire de clés publiques-privées sur AWS, et configurez le framework Serverless localement.

serverless config credentials --provider aws --key <key> --secret <secret>

Ensuite, installez Bref via Composer :

composer require bref/bref

Avant le déploiement, vous devez installer les dépendances de Composer.

composer install --prefer-dist --optimize-autoloader --no-dev

Créer une application Hello World en PHP Serverless avec Bref

Pour créer une simple application « Hello World » avec Bref, nous allons écrire une fonction qui est déclenchée par un événement et qui renvoie la chaîne « Hello World ».

Vous devez d’abord inclure le script autoload.php de Bref, puis utiliser sa fonction lambda. Vous pouvez éventuellement déclarer une variable de contexte si vous souhaitez accéder aux données du contexte.

require __DIR__.'/vendor/autoload.php';
lambda(function ($event) {
 return 'Hello world');
});

Pendant que la fonction est prête, vous devez créer un fichier de configuration .yml Serverless. Voici un fichier de configuration de base tiré du guide de Bref.

service: app
provider:
 name: aws
 runtime: provided
plugins:
 - ./vendor/bref/bref
functions:
 hello:
 handler: index.php
 layers:
 - ${bref:layer.php-73}

Bref crée ce fichier de configuration automatiquement lorsque vous exécutez la commande suivante.

vendor/bin/bref init

Maintenant que vous êtes prêt avec votre fonction et la configuration, vous pouvez invoquer la fonction pour vérifier qu’elle fonctionne comme prévu en utilisant la commande invoke du paquet Serverless :

serverless invoke -f hello

Voici un guide sur le déploiement local d’applications Serverless à l’aide de l’outil de ligne de commande sam d’AWS. Une fois que votre projet est prêt, vous pouvez le déployer en utilisant la commande deploy de Serverless. Utilisez l’option --verbose pour obtenir des détails sur le processus de déploiement :

serverless deploy

Autres options de déploiement pour le PHP Serverles

Bref PHP sur AWS Lambda est un choix populaire. Cependant, il existe quelques autres options pour vos applications PHP Serverless.

Vapor, lancé par Laravel en juillet 2019, est une plateforme de déploiement Serverless pour Laravel sur AWS Lambda. Vapor convertit votre application Laravel en une seule fonction lambda. Alors qu’Azure Serverless ne prend pas officiellement en charge PHP, vous pouvez toujours l’essayer en utilisant cet exemple de déploiement.

Résumé

Voici les principaux aspects que vous devez retenir de ce guide sur le PHP Serverless :

  • Avant d’envisager l’utilisation de PHP Serverless pour votre application, assurez-vous de bien connaître ce qu’est le Serverless computing, ses avantages et ses inconvénients.
  • Il y a trois facteurs principaux que vous devez prendre en compte lorsque vous portez votre application sur un framework PHP Serverless. Tenez compte de la complexité de l’application, de la criticité temporelle de ses composants et de l’évolutivité future.
  • Le PHP Serverless est encore assez récent sur le marché. Assurez-vous d’effectuer un pilote avec Bref sur l’un des fournisseurs avant de vous y engager pleinement.

Bien que le Serverless devienne très populaire, il faut aussi une compréhension approfondie du fonctionnement de la technologie pour en tirer parti.

Pour tous les autres cas, l’utilisation d’un hébergement WordPress géré comme Kinsta peut simplifier énormément votre flux de travail.

Shaumik Daityari

Shaumik is a data analyst by day, and a comic book enthusiast by night (or maybe, he's Batman?) Shaumik has been writing tutorials and creating screencasts for over five years. When not working, he's busy automating mundane daily tasks through meticulously written scripts!