Warum benötigen Sie Apache APISIX bei der Verwendung von Amazon Lambda?

Xiaolan Cheng

December 9, 2022

Ecosystem

Serverless und Amazon Lambda

Was ist Serverless?

Serverless Computing, oder einfach Serverless, ist ein beliebter Trend im aktuellen Softwaremarkt. Immer mehr Unternehmen migrieren ihre Betriebe von der traditionellen serverorientierten Architektur zu einer schnelleren und kosteneffizienteren Serverless-Architektur.

Serverless-Architektur ist eine Möglichkeit, Anwendungen zu erstellen und auszuführen, ohne die Infrastruktur zu verwalten. Sie stellt die erforderliche Infrastruktur in den Cloud-Anbietern oder auf einer selbst bereitgestellten Serverless-Plattform für die Verwaltung bereit. Dadurch können sich die Ingenieure auf die Geschäftslogik der Anwendung konzentrieren, ohne viel Aufwand für den Aufbau, die Verwaltung und die Skalierung der Infrastruktur zu betreiben. Die drei großen Cloud-Anbieter (Amazon Web Services, Microsoft Azure und Google Cloud) zeigen großes Interesse daran, die besten Serverless-Dienste anzubieten. Zum Beispiel ist Amazon Lambda der zentrale Serverless-Computing-Dienst für AWS (Amazon Web Services).

Wie im folgenden Bild gezeigt, unterscheidet sich Amazon Lambda von der traditionellen Bereitstellungsmethode. Sie müssen lediglich die Quelldatei hochladen, die Ausführungsumgebung auswählen und ausführen. Dann erhalten Sie das Betriebsergebnis. Sie befreien sich von den Schritten des Hochladens und Kompilierens auf einem Server. In diesem Prozess werden die Serverbereitstellung, die Laufzeitinstallation und die Kompilierung alle von der Amazon Serverless-Computing-Plattform verwaltet und ausgeführt. Die Ingenieure müssen lediglich ihren Quellcode und die relevanten Konfigurationen der Ausführungsumgebung pflegen.

Die damit verbundene Technologie ist BaaS (Backend as a Service), was bedeutet, dass wir keine serverbasierten Komponenten mehr schreiben und verwalten und alle Teile der Anwendung vollständig auslagern. Serverless ist eine neue Hosting-Umgebung, in der der Code ausgeführt wird.

Architekturdiagramm

Warum brauchen wir Serverless?

Serverless hat einige Vorteile:

  • Für Entwickler ist Serverless freundlicher. Es kann die Details der Serververwaltung abstrahieren, sodass sich die Ingenieure auf den Geschäftscode selbst konzentrieren können.
  • In Bezug auf die Kosten folgt Serverless einem Pay-per-Usage-Modell.
  • In Bezug auf die Leistung kann es sich automatisch nach dem Anforderungsverkehr skalieren.
  • Es kann auch die Codeausführung und die Antwortzeit optimieren, indem die Menge des Speichers, die der Funktion zugewiesen wird, angepasst wird.

Warum brauchen wir ein API-Gateway, wenn wir Serverless verwenden?

Serverless hat auch seine Schwächen:

  • Die Funktions-URL ist fest in die Anwendung codiert.
  • Umständliche Autorisierungs- und Authentifizierungslogik.
  • Hohe Abhängigkeit vom Cloud-Anbieter: Wenn der Cloud-Anbieter ausfällt, fällt auch der Dienst aus.
  • Unterschiedliche Cloud-Anbieter haben sehr unterschiedliche Schemata ohne spezifische Standards, sodass die Migration von einem zum anderen in der Regel kostspielig ist.

API-Gateways können diese Probleme von Natur aus lösen. Zusammen kombiniert kann Serverless zu einer robusten Architektur werden. Das folgende Bild beschreibt, wie man schnell einen einfachen Webdienst mit Amazon Serverless-Diensten zusammenstellt. Das API-Gateway ist entscheidend für die Bereitstellung von Autorisierung, Routendefinition und Proxy-Anfragen. Nehmen wir Apache APISIX als Beispiel, es bietet Serverless-Unterstützung für AWS und Azure. Sie können eine Route definieren, um ein Serverless-Plugin zu aktivieren, anstatt Funktions-URLs in Anwendungen fest zu codieren. Mit der Flexibilität des Hot-Updates von Funktions-URIs wird die Aktualisierung auf verschiedene FaaS-Cloud-Dienstanbieter (Function as a Service) einfach. Darüber hinaus lindert dieser Ansatz den Schmerz der umständlichen Autorisierung und Authentifizierung.

Zusammenstellen eines Webdienstes mit Amazon Serverless-Diensten

Apache APISIX

Apache APISIX ist ein Cloud-natives API-Gateway unter der Apache Software Foundation (ASF). Als dynamisches, Echtzeit- und Hochleistungs-API-Gateway bietet APISIX Funktionen wie Lastenausgleich, dynamisches Upstream, Canary-Release, Circuit Breaking, Authentifizierung und Beobachtbarkeit. Wir können Apache APISIX verwenden, um den traditionellen Nord-Süd- und Ost-West-Datenverkehr zwischen Diensten zu handhaben. Gleichzeitig kann es auch als K8s Ingress Controller verwendet werden. APISIX erweitert sein Ökosystem durch integrierte Plugins, die verschiedene Anwendungsfälle von API-Gateways abdecken, wie Authentifizierung, Sicherheit, Beobachtbarkeit, Verkehrsmanagement, Multi-Protokoll-Zugriff usw. Natürlich gehören dazu auch viele Serverless-bezogene Plugins.

aws-lambda Plugin

Das aws-lambda Plugin integriert AWS Lambda mit APISIX als dynamisches Upstream, um alle Anfragen für eine bestimmte URI an die AWS-Cloud zu proxen. Wenn es aktiviert ist, beendet das Plugin die laufende Anfrage der konfigurierten URI und initiiert eine neue Anfrage an die AWS Lambda Gateway-URI im Namen des Clients. Diese neue Anfrage trägt die zuvor konfigurierten Autorisierungsdetails, einschließlich Anfrage-Header, Body und Parameter (alle drei werden von der ursprünglichen Anfrage übergeben). Es gibt die Antwort mit Headern, einem Statuscode und dem Body an den Client zurück, der die Anfrage mit APISIX initiiert hat. Dieses Plugin unterstützt die Autorisierung über den AWS API-Schlüssel und AWS IAM-Geheimnisse.

Weitere Informationen finden Sie unter APISIX oder in diesem Blog.

Serverless-bezogene Plugins in Apache APISIX

Neben Amazon Lambda unterstützt Apache APISIX auch die Integration mit Serverless-bezogenen Ökosystemen wie Azure Function, Lua-Funktion und Apache OpenWhisk und bietet die entsprechenden Serverless-Plugins.

Tabelle 1 Apache APISIX Serverless-bezogene Plugins

Plugin-NameBeschreibung
serverlessBenutzer können über das Serverless-Plugin benutzerdefinierte Lua-Skripte hochladen und die Codeausführungsphase gemäß der Konfiguration angeben. Zum Beispiel können sie in der Zugriffsphase Zugriffskontrollen auf Anfragen durchführen, in der Header-Filter- und Body-Filter-Phase den Antwort-Header oder den Antwort-Body ändern, in der Log-Phase personalisierte Logs drucken usw. Da das Serverless-Plugin hot-reloaded ist, können die Änderungen sofort wirksam werden, ohne Apache APISIX neu zu starten.
azure-functionsWird verwendet, um APISIX mit Azure Serverless Function als dynamisches Upstream zu integrieren, um alle Anfragen für eine bestimmte URI an die Microsoft Azure-Cloud zu proxen. Wenn es aktiviert ist, beendet das azure-functions Plugin die laufende Anfrage an die konfigurierte URI und initiiert eine neue Anfrage an Azure Functions im Namen des Clients. Die neue Anfrage trägt die zuvor konfigurierten Autorisierungsdetails, einschließlich Anfrage-Header, Body und Parameter (alle drei werden von der ursprünglichen Anfrage übergeben). Dann gibt es die Antwort mit Headern, Statuscode und Body an den Client zurück, der die Anfrage mit APISIX initiiert hat.
openwhiskWird verwendet, um APISIX mit der Open-Source-Serverless-Plattform Apache OpenWhisk zu integrieren. Wenn es aktiviert ist, beendet das Plugin die laufende Anfrage an die konfigurierte URI und initiiert eine neue Anfrage an den API-Host-Endpunkt von OpenWhisk im Namen des Clients, und das openwhisk Plugin gibt die Antwortinformationen an den Client zurück.
openfunctionWird verwendet, um APISIX mit der Open-Source-Serverless-Plattform CNCF OpenFunction als dynamisches Upstream zu integrieren. Wenn es aktiviert ist, beendet das Plugin die laufende Anfrage für die konfigurierte URI und initiiert eine neue Anfrage an die OpenFunction-Funktion im Namen des Clients, und dann gibt das openfunction Plugin die Antwortinformationen an den Client zurück.

Die Beziehung zwischen Apache APISIX und Serverless-bezogenen Produkten

Zusammenfassung

In den letzten Jahren, mit dem Aufkommen der Microservice-Architektur, migriert alles in die Cloud, und viele Cloud-Dienstanbieter bringen auch Serverless-bezogene Produkte auf den Markt. Die Entwicklung auf Basis von Serverless ist zu einem sehr bequemen Entwicklungsmodell geworden. Im Einklang mit den Cloud-nativen Trends unterstützt APISIX Serverless-Computing durch die Bereitstellung von Serverless-, Azure-Functions-, OpenWhisk- und OpenFunction-Plugins.

Wenn Sie mehr über API-Gateways und ihre Serverless-Funktionen erfahren möchten, kontaktieren Sie uns unter https://api7.ai/contact.

Tags: