Heim >Backend-Entwicklung >PHP-Tutorial >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?

Linda Hamilton
Linda HamiltonOriginal
2024-10-07 22:09:02475Durchsuche

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?

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.

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, wodurch die Entwicklerproduktivität und die Vorlaufzeit gesteigert werden.

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 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.

How to run PHP on AWS ServerLess architecture ? Part  What

Ist Serverless nur für Microservices geeignet?

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

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 (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.

  • 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.

Lambda를 배포할 때 실행하는 데 필요한 메모리 양을 선택했습니다. 할당된 CPU는 비례합니다. 그런 다음 사용한 밀리초 수를 기준으로 비용을 지불합니다. 예를 들어 128Mb Lambda 비용은 1.7*10^-9$/ms입니다. 첫 번째 비용을 지출하기 전에 164시간 동안 컴퓨팅을 수행해야 합니다.

How to run PHP on AWS ServerLess architecture ? Part  What

그리고 Lambda는 확장됩니다. 빠른. 다른 것보다 훨씬 빠릅니다. 높은 트래픽 변화로 인해 더 이상 429(또는 워크로드가 잘 보호되지 않는 경우 500) 오류가 발생하지 않습니다.

How to run PHP on AWS ServerLess architecture ? Part  What

LambdaLiths를 통한 주요 과제 해결: 콜드 스타트

Lambda 실행 환경은 주어진 시간에 하나의 요청만 처리하며 후속 요청에 재사용됩니다. 즉, Lambda 함수를 확장하거나 Lambda 함수가 한동안 호출되지 않은 경우 Lambda는 새로운 실행 환경을 시작해야 합니다. 이것이 바로 콜드 스타트입니다.

콜드 스타트가 애플리케이션에 해로운 경우(다시 말하지만 모든 트래픽이 느리거나 429초에 도달하는 것이 더 나을 것임) 몇 가지 옵션이 있습니다. AWS에는 Lambda 워머 사용 또는 이를 해결하기 위한 프로비저닝된 동시성 설정에 대한 유용한 기사가 있습니다. 그 외에도 Java 사용자의 경우 Lambda SnapStart 기능을 사용하면 JVM 초기화 후 microVM의 스냅샷을 생성하여 우수한 콜드 스타트 ​​성능을 제공할 수 있습니다.

PHP 지원은 어떻습니까?

공식 제품 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn