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.
Serverlos 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, wodurch die Entwicklerproduktivität und die Vorlaufzeit gesteigert werden.
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 wird (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.
Im Folgenden 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.
Ja.. und nein. 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 (Verwendung verschiedener Sprachen, durch asynchrone Muster, Verbesserung der Skalierbarkeit durch Beseitigung der Kopplung auf Infrastrukturebene).
Wenn wir jedoch über mehrere Einzelzweckfunktionen verfügen, erfordert die Implementierung der Geschäftslogik möglicherweise eine Koordination zwischen den Funktionen. Diese Koordination kann mithilfe von zwei grundlegenden Mustern umgesetzt 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.
Lambda를 배포할 때 실행하는 데 필요한 메모리 양을 선택했습니다. 할당된 CPU는 비례합니다. 그런 다음 사용한 밀리초 수를 기준으로 비용을 지불합니다. 예를 들어 128Mb Lambda 비용은 1.7*10^-9$/ms입니다. 첫 번째 비용을 지출하기 전에 164시간 동안 컴퓨팅을 수행해야 합니다.
그리고 Lambda는 확장됩니다. 빠른. 다른 것보다 훨씬 빠릅니다. 높은 트래픽 변화로 인해 더 이상 429(또는 워크로드가 잘 보호되지 않는 경우 500) 오류가 발생하지 않습니다.
Lambda 실행 환경은 주어진 시간에 하나의 요청만 처리하며 후속 요청에 재사용됩니다. 즉, Lambda 함수를 확장하거나 Lambda 함수가 한동안 호출되지 않은 경우 Lambda는 새로운 실행 환경을 시작해야 합니다. 이것이 바로 콜드 스타트입니다.
콜드 스타트가 애플리케이션에 해로운 경우(다시 말하지만 모든 트래픽이 느리거나 429초에 도달하는 것이 더 나을 것임) 몇 가지 옵션이 있습니다. AWS에는 Lambda 워머 사용 또는 이를 해결하기 위한 프로비저닝된 동시성 설정에 대한 유용한 기사가 있습니다. 그 외에도 Java 사용자의 경우 Lambda SnapStart 기능을 사용하면 JVM 초기화 후 microVM의 스냅샷을 생성하여 우수한 콜드 스타트 성능을 제공할 수 있습니다.
공식 제품 FAQ에는 "기본적으로 Java, Go, PowerShell, Node.js, C#, Python 및 Ruby 코드를 지원하며 추가 프로그래밍 언어를 사용하여 함수를 작성할 수 있는 런타임 API를 제공합니다"라고 나와 있습니다.
이 시리즈의 다음 블로그 게시물에서는 Bref와 Lambda 웹 어댑터라는 두 가지 프레임워크를 활용하여 Lambda에서 PHP를 실행하는 방법을 설명하고 각 프레임워크가 제공하는 가능성을 비교하겠습니다.
Das obige ist der detaillierte Inhalt vonWie führe ich PHP auf einer AWS ServerLess-Architektur aus? Teil Was ist serverlos?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!