Sie haben also gesehen, dass die Wörter „AWS Lambda“ oder „Serverless“ wieder einmal in Ihrem Lieblings-Hacker-Forum auftauchen, und Sie haben beschlossen, sich auf den Weg zu machen und herauszufinden, „was genau ist ein Lambda?“ Bei FloQast machen AWS-Lambdas einen großen Teil unserer Backend-Architektur aus. Sie haben uns erlaubt, unsere zuvor zu schneiden vollständig monolithisches Backend in überschaubarere, serverlose Portionen. Darüber hinaus waren unsere Teams in der Lage, schneller zu agieren, häufiger bereitzustellen und die Abhängigkeiten zwischen verschiedenen Teilen der App sowie den verschiedenen Teams, denen sie gehören, einfach zu verwalten. In diesem Artikel stellen wir vor, was Lambdas sind, was sie von anderen Architekturen unterscheidet, und zeigen ein Beispiel dafür, wie ein Lambda erstellt und bereitgestellt wird.
Was ist ein Lambda?
Ein Lambda ist ein Cloud-basierter Dienst, mit dem Sie Code auf einen verwalteten Server hochladen können, ohne den Server selbst bereitstellen oder verwalten zu müssen. Im Gegensatz zu herkömmlichen gehosteten Servern wird der Lambda-Prozess nur ausgeführt, wenn der Code durch ein Ereignis aufgerufen wird, wodurch die Menge ungenutzter Betriebszeiten reduziert wird. Darüber hinaus können Lambdas in der Regel auf jeden anderen Dienst zugreifen, den Ihr Cloud-Anbieter anbietet, wie Amazon und ihre S3-Speicherdienst, oder Google und ihre Datenflussanalysedienst.Lambdas werden durch „Ereignisse“ ausgelöst. Dies können Ereignisse wie ein Upload in einen S3-Bucket sein oder auch etwas, das eine traditionelle HTTP-REST-Architektur wie Ereignisse von einem API-Gateway widerspiegelt. Wenn Sie ein Lambda hochladen, laden Sie auch die Konfiguration hoch, durch welche Ereignisse dieses Lambda ausgelöst werden soll. Wenn eines dieser Ereignisse von einem anderen Dienst ausgelöst wird, wird Ihr Lambda aktiviert und der Code ausgeführt, der als Reaktion auf das Ereignis hochgeladen wurde.
Warum Lambdas verwenden?
Lambdas reduzieren den Umfang der nicht anwendungsbezogenen Wartungsarbeiten, die Entwickler verwalten müssen. Anstatt sich auf die Installation/Aktualisierung von Betriebssystemen, das Ausführen von Sicherheitspatches, das Überprüfen von Paketversionen usw. konzentrieren zu müssen, müssen sich Entwickler nur auf den eigentlichen Anwendungscode konzentrieren, wodurch die Infrastruktur entlastet wird. Das bedeutet auch, dass Entwickler keine virtuellen Maschinen oder Docker-Images installieren müssen, um zu versuchen, die Produktionsumgebung lokal auf ihrem Computer zu replizieren, was dazu beiträgt, eine ganze Reihe von Problemen zu vermeiden, die unweigerlich auftreten. Darüber hinaus können Lambdas je nach Nutzung automatisch skaliert werden. Mit anderen Worten, wenn Ihr Lambda so oft aufgerufen wird, dass Ihre aktuelle Anzahl von Recheninstanzen nicht sofort auf jeden Aufruf reagieren kann, erhöht Ihr Cloud-Anbieter automatisch die Anzahl der Recheninstanzen, auf denen Ihr Lambda als Antwort ausgeführt wird. Wenn die Anzahl der Aufrufe wieder sinkt, wird auch die Anzahl der Lambda-Instanzen wieder herunterskaliert. Automatische Skalierung ist dies zwar nicht einzigartig zu Lambdas, wasistEinzigartig ist, dass Lambdas bei Nichtgebrauch komplett heruntergeschleudert werden. Im Gegensatz zu herkömmlichen Servern, die abrechnungsfähige Zeit benötigen, solange der Server läuft, können Lambdas eine kosteneffizientere Lösung für kürzere Workloads sein. Wenn Sie jedoch eine detailliertere Kontrolle über die Systeme benötigen, auf denen Ihre Anwendung läuft, sollten Sie in Betracht ziehen, Ihre eigene Cloud-Infrastruktur zu verwalten (z. B. Amazon EC2, DigitalOcean Droplets usw.).
Beispiel
Haftungsausschluss: AWS Lambda ermöglicht 1 Million kostenlose Anfragen pro Monat; für alles, was darüber hinausgeht, fallen Gebühren an. Dieses Tutorial sollte diese Stufe an sich nicht annähernd durchbrechen, aber wenn Sie Ihre Nutzungslimits für den Monat bereits überschritten haben, sollten Sie sich bewusst sein, dass das Aufrufen der von der bereitgestellten Lambdas mit Gebühren verbunden ist. Nachdem wir nun die Grundlagen behandelt haben, schauen wir uns an, wie wir ein Lambda erstellen können. Bevor Sie fortfahren, müssen Sie ein AWS-Konto erstellen um mitzumachen. Wir erstellen eine einfache Lambda-Funktion von Node.js, die als Kristallkugel fungiert und auf alle gestellten Ja-oder-Nein-Fragen reagiert!
Lambda einrichten
Um ein Lambda zu erstellen, navigieren Sie zum AWS Lambda-Konsole und klicken Sie auf „Funktion erstellen“.

Geben Sie im unten stehenden Formular den „Funktionsnamen“ als „CrystalBall“ ein und lassen Sie alles andere unverändert. Nachdem Sie den Funktionsnamen eingegeben haben, klicken Sie unten auf der Seite auf die Schaltfläche „Funktion erstellen“.

Nachdem die Seite vollständig geladen ist, sollten Sie zur Verwaltungsseite Ihres neuen Lambda weitergeleitet werden, auf der Sie den ausgeführten Code, Konfigurationen, Testeingaben und vieles mehr ändern können.

Wenn Sie unten auf der Seite feststellen, dass es eine Schaltfläche „Testen“ gibt. Mit dieser Schaltfläche können wir ein Test- „Ereignis“ an unser neues Lambda senden, was dasselbe ist Veranstaltung
Variable, die im Code-Editor unten zu sehen ist. Bevor wir jedoch Testdaten senden können, müssen wir ein Testereignis durchführen. Klicken Sie auf den Abwärtspfeil neben der Schaltfläche „Test“ und wählen Sie „Testereignis konfigurieren“. Fügen Sie im Popup-Menü einen Eventnamen hinzu. Erstellen Sie dann im JSON-Datentextfeld eine Ja-oder-Nein-Testfrage, die Sie an Ihre „Kristallkugel“ -Lambda senden möchten. Wenn Sie an eine Frage gedacht haben, klicken Sie auf die Schaltfläche „Erstellen“.

Jetzt, da wir ein Testevent haben, benötigen wir Code, um dieses Ereignis zu verarbeiten! Wenn Sie jetzt im Code-Editor nachschauen, werden Sie einen Boilerplate-Code bemerken, der „Hallo von Lambda!“ ausgibt. Wenn Sie die Taste „Test“ drücken, erhalten Sie ein Ausführungsergebnis, das dieses Ergebnis tatsächlich ausgibt. Lassen Sie uns den Code ändern, um etwas Interessanteres zu machen! Ersetzen Sie den Code im Editor durch Folgendes:
exports.handler = async (event) => {
// Get the "question" from the event JSON
const { question } = event;
const crystalBallResponses = [
"Without a doubt!",
"Answer hazy; ask again.",
"Doesn't look promising."
];
// Select a random reply from the array of responses
const reply = crystalBallResponses[Math.floor(Math.random() * crystalBallResponses.length)];
const response = {
statusCode: 200,
body: JSON.stringify(`You asked "${question}". The crystal ball shows you the answer to your question: ${reply}`),
};
return response;};
Versuchen Sie nun erneut, den Test auszuführen. Sie sollten ein Ergebnis wie das unten gezeigte Bild erhalten:

Herzlichen Glückwunsch, Sie haben gerade Ihr erstes Lambda geschrieben und bereitgestellt!
Abriss
Um das Lambda abzubauen, navigieren Sie zurück zur Seite „Funktionen“ und klicken Sie auf das Kontrollkästchen neben Ihrer Lambda-Funktion. Klicken Sie dann auf das Drop-down-Menü „Aktionen“ und wählen Sie „Löschen“. Bestätigen Sie im folgenden Bestätigungs-Popup den Löschvorgang, indem Sie erneut auf „Löschen“ klicken.
Fazit
In diesem Artikel haben wir einige Grundlagen von Lambdas und die Bereitstellung einer Lambda-Funktion vorgestellt. Viele Funktionen wurden durch den UI-Setup-Flow verdeckt, aber genau das ist der Sinn von Lambdas! Wir müssen uns nicht unbedingt damit befassen, wie Server bereitgestellt, verwaltet oder unser Code so verpackt wird, dass er auf diese Server übertragen wird. Im obigen Beispiel haben wir ein Lambda bereitgestellt, das auf eine Frage mit Daten reagiert, die als Ereignis übergeben wurden. Diesem Lambda könnten weitere Funktionen hinzugefügt werden, z. B. das Hinzufügen einer Datenbank, das Hinzufügen von Dateispeichern/Abrufen oder sogar das Verketten mehrerer Lambdas miteinander, um komplexe Datenverarbeitungspipelines zu erstellen.
Bei FloQast Wir verwenden interne Tools, um unsere Lambdas automatisiert einzusetzen das ermöglicht es uns sogar, Lambdas zu erstellen und zu testen mehr schnell. Täglich ändern wir unseren Lambda-Code, rufen unsere Lambdas lokal auf, um sie zu testen, ohne sie bereitstellen zu müssen, und stellen unsere Lambdas dann über unsere CI/CD-Pipelines bereit, die automatisierte Tests, Bereitstellung nach Bedarf und Bereitstellungen beinhalten. Wenn die Idee einer serverlosen Architektur für Sie interessant klingt, wir stellen derzeit ein!