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.
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, ..).
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.
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.
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.
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).
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.
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.
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.
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.
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!