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