„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie führe ich PHP auf einer AWS ServerLess-Architektur aus? Teil Was ist serverlos?

Wie führe ich PHP auf einer AWS ServerLess-Architektur aus? Teil Was ist serverlos?

Veröffentlicht am 04.11.2024
Durchsuche:432

Lambda, der Flaggschiff-Serverlosdienst von AWS, ermöglicht die Ausführung von Code auf verschiedenen Laufzeiten. Allerdings ist PHP nicht explizit in der offiziellen Produktbeschreibung enthalten. Bedeutet das, dass Sie auf Lambdas keinen PHP-Code ausführen können? Nein, tut es nicht!

In dieser Serie (abgeleitet aus einem Vortrag, den ich vor der AWS User Group Poitiers gehalten habe) besprechen wir, was serverlos ist und wie man PHP (falls das Ihre Lieblingssprache ist) auf Lambda zum Laufen bringt.

Was ist serverlos?

Serverless ist ein Hosting-Paradigma, bei dem der Cloud-Anbieter die der Arbeitslast des Kunden zugewiesenen Ressourcen dynamisch skaliert und dabei nicht nur die physische Infrastruktur (Server, Stromkühlung), sondern auch die Ausführungslaufzeit (Patching usw.) verwaltet.

How to run PHP on AWS ServerLess architecture ? Part  What

Im engeren Sinne wird jeder Anfrage Rechenleistung zugeteilt, was zu einem „Skalierungs-zu-Null“-Preismodell führt (es werden keine Ressourcen stundenweise bezahlt, sondern nur proportional zur tatsächlichen Nachfrage) und gleichzeitig eine integrierte hohe Leistung bereitgestellt -Verfügbarkeit.

Dazu kommen weitere Cloud-Vorteile hinzu, vor allem die Tatsache, dass alles über eine API verfügt, was eine Automatisierung ermöglicht.

Die Summe dieser Vorteile ermöglicht praktisch kostenlose kurzlebige Funktionszweigumgebungen und steigert so die Entwicklerproduktivität und Vorlaufzeit.

How to run PHP on AWS ServerLess architecture ? Part  What

Bei Serverless geht es nicht nur um Rechenleistung!

Es gibt viele Lösungen im serverlosen Ökosystem. Als Serverless Compute (Lambda) im Jahr 2014 auf den Markt kam, gab es Managed Queues (SQS) bereits seit einem Jahrzehnt und S3 bereits seit acht Jahren.

How to run PHP on AWS ServerLess architecture ? Part  What

Beachten Sie, dass Aurora in der Folie oben nicht unserer strikten Definition von Serverless entspricht, da es nicht auf Null skaliert (v1 wurde auf Null skaliert, aber dann könnte es Minuten dauern, bis es startet, bei v2 müssen Sie es haben). Mindestens 0,5 ACUs auf Ihren Writer- und Reader-Instanzen, damit die Datenbank bereit ist, Abfragen zu bedienen.

Nachfolgend finden Sie eine typische Architektur zum Hosten einer Webanwendung, die nur serverlose Dienste umfasst. Das Hosten einer solchen Anwendung könnte für eine begrenzte Anzahl von Benutzern weniger als 1 US-Dollar pro Jahr kosten.

How to run PHP on AWS ServerLess architecture ? Part  What

Ist Serverless nur für Microservices geeignet?

Jein. Es wurde mit Blick auf Microservices entwickelt, aber Sie können trotzdem eine monolithische Architektur bereitstellen (solange Sie nicht jedes Mal, wenn eine neue Umgebung gestartet wird, eine langwierige Startsequenz haben).

How to run PHP on AWS ServerLess architecture ? Part  What

Serverlose Optionen zur Lösung häufiger Herausforderungen mit Microservices: Orchestrierung und Choreografie

Microservices-Architekturen ermöglichen es, die Kopplung zwischen Anwendungskomponenten zu reduzieren (durch Verwendung verschiedener Sprachen, durch asynchrone Muster, Verbesserung der Skalierbarkeit durch Beseitigung der Kopplung auf Infrastrukturebene).

Wenn wir jedoch mehrere Einzelzweckfunktionen haben, erfordert die Implementierung der Geschäftslogik möglicherweise eine Koordination zwischen den Funktionen. Diese Koordination kann mithilfe zweier grundlegender Muster implementiert werden.

  • Orchestrierung: In diesem Muster steuern wir Aufrufe der Funktion auf zwingende Weise. Dies wird häufig innerhalb einer Geschäftsdomäne verwendet, wenn Funktionen von einem einzelnen Serviceteam bereitgestellt werden. Ein serverloser Ansatz hierfür ist AWS StepFunction, eine Workflow-/Zustandsmaschine. Hier gibt es ein schönes Tutorial zum Koordinieren von Lambda-Funktionen mithilfe von StepFunction.
  • Choreografie: Dieses Muster ist in geschäftsdomänenübergreifenden Szenarien mit separaten Serviceteams relevanter, um eine sehr begrenzte Kopplung aufrechtzuerhalten. Ein Ereignisbus ermöglicht es einer Anwendung, Ereignisse zu übertragen und Ereignisse zu abonnieren. Mehrere Verbraucher können dasselbe Ereignis abonnieren und jeder Verbraucher kann die Ereignisse filtern, die er benötigt. Der zentrale AWS-Service hierfür ist EventBridge. Einen Blog-Beitrag, den ich darüber geschrieben habe, finden Sie hier.

Lambda kennenlernen

Lambda ist die Function-as-a-Service-Lösung von AWS. Mit Lambda können Sie Ihren Code bereitstellen und erhalten sofortige Hochverfügbarkeit und Skalierbarkeit, ohne sich um die Bereitstellung von Instanzen und Betriebssystem- oder Laufzeit-Patches kümmern zu müssen.

Lambda kann mit synchronen Aufrufen (über ein API-Gateway, einen Application Load Balancer oder eine Lambda-Funktions-URL) oder asynchronen Aufrufen (als Reaktion auf von AWS generierte oder benutzergenerierte Ereignisse) verwendet werden.

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 Rechenleistung, 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 Ihr Workload 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 verschiedene Frameworks, Bref und den Lambda Web Adaptor, nutzen, und vergleichen die Möglichkeiten, die jedes dieser Frameworks bietet.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/aws-builders/how-to-run-php-on-aws-serverless-architecture-part-1-whats-serverless-3j3m?1 Falls ein Verstoß vorliegt Bitte kontaktieren Sie Study_golang @163.comdelete
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3