Maison >développement back-end >tutoriel php >Comment exécuter PHP sur une architecture AWS ServerLess ? Partie Qu'est-ce que le sans serveur ?

Comment exécuter PHP sur une architecture AWS ServerLess ? Partie Qu'est-ce que le sans serveur ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-07 22:09:02474parcourir

Lambda, le service sans serveur phare d'AWS, permet d'exécuter du code sur différents environnements d'exécution. Cependant PHP n'est pas explicitement dans la description officielle du produit. Cela signifie-t-il que vous ne pouvez pas exécuter de code PHP sur Lambdas ? Non, ce n'est pas le cas !

Dans cette série (dérivée d'une conférence que j'ai donnée au groupe d'utilisateurs AWS de Poitiers), nous discuterons de ce qu'est le sans serveur et de la manière de faire fonctionner PHP (si c'est votre langage préféré) sur Lambda.

Qu'est-ce qui est sans serveur ?

Le sans serveur est un paradigme d'hébergement dans lequel le fournisseur de cloud fait évoluer de manière dynamique les ressources allouées à la charge de travail du client, tout en gérant non seulement l'infrastructure physique (serveurs, refroidissement de l'alimentation) mais également jusqu'au temps d'exécution (correctifs, ..).

How to run PHP on AWS ServerLess architecture ? Part  What

Au sens strict, le calcul est alloué à chaque requête, ce qui conduit à un modèle de tarification « à échelle nulle » (aucune ressource n'est payée à l'heure, mais uniquement proportionnellement à la demande réelle), tout en offrant une -disponibilité.

Cela s'ajoute aux autres avantages du Cloud, principalement le fait que tout est livré avec une API, ce qui rend l'automatisation possible.

La somme de ces avantages permet de disposer d'environnements éphémères de branches de fonctionnalités pratiquement gratuits, augmentant ainsi la productivité et les délais des développeurs.

How to run PHP on AWS ServerLess architecture ? Part  What

Le sans serveur n'est pas seulement une question de calcul !

Il existe de nombreuses solutions dans l'écosystème sans serveur. Lorsque le calcul sans serveur (Lambda) est apparu, en 2014, les files d'attente gérées (SQS) existaient depuis une décennie et S3 depuis 8 ans.

How to run PHP on AWS ServerLess architecture ? Part  What

Notez que dans la diapositive ci-dessus, Aurora ne correspond pas à notre définition stricte de Serverless car elle ne s'adapte pas à zéro (la v1 est mise à l'échelle à zéro mais peut ensuite prendre quelques minutes pour démarrer, avec la v2, vous devez avoir à au moins 0,5 ACU sur vos instances d'écriture et de lecture pour que la base de données soit prête à répondre aux requêtes.

Vous trouverez ci-dessous une architecture type pour héberger une application web impliquant uniquement des services sans serveur. L'hébergement d'une telle application pourrait coûter moins de 1 $/an pour un nombre limité d'utilisateurs.

How to run PHP on AWS ServerLess architecture ? Part  What

Le sans serveur est-il réservé aux microservices ?

Oui.. et non. Il a été conçu en pensant aux microservices, mais vous pouvez toujours déployer une architecture monolithique (tant que vous n'avez pas de séquence de démarrage de longue durée à chaque lancement d'un nouvel environnement).

How to run PHP on AWS ServerLess architecture ? Part  What

Options sans serveur pour résoudre les défis courants liés aux microservices : orchestration et chorégraphie

L'architecture microservices permet de réduire le couplage entre les composants des applications (en utilisant différents langages, via des modèles asynchrones, en améliorant la scalabilité en supprimant le couplage au niveau de l'infrastructure).

Cependant, lorsque nous avons plusieurs fonctions à objectif unique, la mise en œuvre de la logique métier peut nécessiter une coordination entre les fonctions. Cette coordination peut être mise en œuvre à l'aide de deux modèles fondamentaux.

  • Orchestration : dans ce pattern, on contrôle les invocations de la fonction de manière impérative. Ceci est souvent utilisé au sein d'un domaine métier, lorsque les fonctions sont fournies par une seule équipe de service. Une approche sans serveur pour cela est AWS StepFunction, un flux de travail/machine à états. Il existe un joli tutoriel sur la façon de coordonner les fonctions Lambda à l'aide de StepFunction ici.
  • Choréographie : ce modèle est plus pertinent dans des scénarios cross-domaines métiers, avec des équipes de service distinctes, pour maintenir un couplage très limité. Un bus d'événements permet à l'application de transmettre des événements et de s'abonner à des événements. Plusieurs consommateurs peuvent s'abonner au même événement et chaque consommateur peut filtrer les événements dont il a besoin. Le service AWS principal pour cela est EventBridge. Vous lirez un article de blog que j'ai écrit à ce sujet ici.

Apprendre à connaître Lambda

Lambda est la solution Function-as-a-Service d'AWS. Avec Lambda, vous pouvez déployer votre code et bénéficier d'une haute disponibilité et d'une évolutivité instantanées, sans vous soucier du déploiement des instances et des correctifs du système d'exploitation ou du runtime.

Lambda peut être utilisé avec des invocations synchrones (via une passerelle API, un Application Load Balancer ou une URL de fonction Lambda) ou des invocations asynchrones (en réponse à des événements générés par AWS ou par l'utilisateur).

Wenn Sie ein Lambda bereitstellen, wählen Sie aus, wie viel Speicher es zum Ausführen benötigt. Die zugewiesene CPU ist proportional. Sie zahlen dann basierend auf der Anzahl der genutzten Millisekunden. Beispielsweise kostet ein 128-MB-Lambda 1,7*10^-9$/ms. Das sind 164 Stunden Rechenzeit, bevor Sie Ihren ersten Dollar ausgeben.

How to run PHP on AWS ServerLess architecture ? Part  What

Und Lambda-Skalen. Schnell. Viel schneller als alles andere. Keine 429-Fehler (oder 500, wenn Ihre Arbeitslast nicht gut geschützt ist) aufgrund hoher Verkehrsschwankungen mehr.

How to run PHP on AWS ServerLess architecture ? Part  What

Die größte Herausforderung mit LambdaLiths lösen: Kaltstarts

Lambda-Ausführungsumgebungen verarbeiten jeweils nur eine einzige Anfrage und werden für nachfolgende Anfragen wiederverwendet. Das bedeutet, dass Lambda eine neue Ausführungsumgebung starten muss, damit eine Lambda-Funktion skaliert werden kann oder wenn eine Lambda-Funktion eine Zeit lang nicht aufgerufen wurde: Das ist ein Kaltstart.

Wenn Kaltstarts schädlich für Ihre Anwendung sind (auch hier ist es wahrscheinlich besser, dass der gesamte Datenverkehr langsam ist oder 429 Sekunden erreicht), gibt es einige Optionen. AWS hat einen schönen Artikel über die Verwendung von Lambda-Wärmern oder das Festlegen bereitgestellter Parallelität, um dieses Problem zu beheben. Darüber hinaus ermöglichen die Lambda SnapStart-Funktionen für Java-Benutzer eine gute Kaltstartleistung, indem nach der JVM-Initialisierung ein Snapshot der microVM erstellt wird.

Wie sieht es mit der PHP-Unterstützung aus?

In den offiziellen Produkt-FAQs heißt es: „Unterstützt nativ Java-, Go-, PowerShell-, Node.js-, C#-, Python- und Ruby-Code und stellt eine Laufzeit-API bereit, mit der Sie beliebige zusätzliche Programmiersprachen zum Erstellen Ihrer Funktionen verwenden können.“

In den nächsten Blogbeiträgen dieser Reihe erklären wir, wie Sie PHP auf Lambda ausführen können, indem wir zwei unterschiedliche Frameworks, Bref und den Lambda Web Adaptor, nutzen, und vergleichen die Möglichkeiten, die jedes dieser Frameworks bietet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn