Serverless-Funktionen in JavaScript: AWS Lambda und Alternativen für Entwickler

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Serverless in JavaScript: Wie man aufhört, über Server nachzudenken und anfängt, Code zu schreiben

\n\n

Stellen Sie sich vor: Sie haben einen tollen Dienst geschrieben, gestartet, und einen Monat später braucht ihn niemand mehr. Sie zahlen für einen Server, der ungenutzt läuft. Oder umgekehrt – der „Habraeffekt“ bricht über Sie herein, der Server stürzt ab, und Sie flicken um 3 Uhr morgens am nginx herum. Kommt Ihnen bekannt vor? Es gibt einen Weg, diese Kopfschmerzen loszuwerden – Serverless-Funktionen in JavaScript.

\n\n

Serverless (oder serverloses Rechnen) ist keine Magie, sondern ein Modell, bei dem Sie nur Code schreiben und der Anbieter (AWS, Google, Yandex) selbst entscheidet, wann, wo und wie viele Ressourcen bereitgestellt werden. Sie zahlen nur für die Ausführungszeit und die Anzahl der Anfragen. Keine „ewig eingeschalteten“ virtuellen Maschinen. Für JavaScript-Entwickler ist das besonders praktisch: Node.js ist die native Umgebung für AWS Lambda, Google Cloud Functions und Yandex Cloud Functions.

\n\n

In diesem Artikel erzählen wir nicht nur die Theorie. Wir schreiben echte Funktionen, vergleichen die Anbieter und geben eine Checkliste, damit Sie nicht in die Fallen tappen. Los geht's!

\n\n

Was ist eine Serverless-Funktion und warum braucht ein JS-Entwickler sie?

\n\n

Eine Serverless-Funktion ist ein Code-Schnipsel (normalerweise eine einzelne Funktion), der als Reaktion auf ein Ereignis ausgeführt wird. Ein Ereignis kann eine HTTP-Anfrage, das Hochladen einer Datei in S3, ein Datenbankeintrag oder sogar ein Signal von einem Timer (Cron) sein.

\n\n

Warum das für JavaScript praktisch ist:

\n
    \n
  • Schneller Start – kein Server-Setup nötig, Code einfach hochladen.
  • \n
  • Automatische Skalierung – die Funktion vervielfältigt sich bei Bedarf unter Last.
  • \n
  • Kosteneffizienz – solange niemand die Funktion aufruft, zahlen Sie keinen Cent.
  • \n
  • Ökosystem – Node.js wird von allen großen Anbietern unterstützt.
  • \n
\n\n

Typische Szenarien: Webhook-Verarbeitung, Generierung von Bildvorschauen, E-Mail-Versand, Formularvalidierung, Daten-Parsing, Erstellung von Microservices. Alles, was bei Bedarf ausgeführt werden kann.

\n\n

AWS Lambda – der König des Serverless-JavaScript

\n\n

Amazon Web Services Lambda ist der beliebteste Dienst. Er war der Erste und setzt bis heute die Standards. Schreiben wir eine einfache Funktion, die JSON empfängt und eine Antwort zurückgibt.

\n\n

Code für AWS Lambda mit Node.js 20:

\n\n
export const handler = async (event) => {\n  try {\n    const { name } = JSON.parse(event.body || '{}');\n    const message = `Hallo, ${name || 'Gast'}! Du hast erfolgreich eine Serverless-Funktion aufgerufen.`;\n    \n    return {\n      statusCode: 200,\n      headers: {\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      body: JSON.stringify({ message, timestamp: Date.now() }),\n    };\n  } catch (error) {\n    return {\n      statusCode: 400,\n      body: JSON.stringify({ error: 'Ungültiges JSON' }),\n    };\n  }\n};
\n\n

Beachten Sie: Die Funktion heißt handler. Dies ist der Standardname für den Einstiegspunkt. Der Parameter event enthält alles, was vom API Gateway kommt – Header, Body, Abfrageparameter. Sie geben ein Objekt mit statusCode und body zurück.

\n\n

Wie es funktioniert: Sie erstellen eine Funktion in der AWS-Konsole, laden den Code hoch (oder verwenden SAM/Serverless Framework), konfigurieren einen Trigger – zum Beispiel einen HTTP-Endpunkt über API Gateway. Fertig. Die Welt ist einfacher geworden.

\n\n

Kaltstart und wie man damit umgeht

\n\n

Der größte Nachteil von Lambda ist der Kaltstart. Wenn die Funktion längere Zeit nicht aufgerufen wurde, wird die Umgebung bei der ersten Anfrage neu geladen. Das kann 200-500 ms dauern. Für stark frequentierte APIs ist das kritisch. Lösungen:

\n
    \n
  • Halten Sie die Funktion mit CloudWatch Events „warm“ (alle 5 Minuten anpingen).
  • \n
  • Reduzieren Sie die Paketgröße – schleppen Sie keine unnötigen npm-Pakete mit.
  • \n
  • Verwenden Sie Provisioned Concurrency (ist aber teurer).
  • \n
\n\n

Für die meisten Microservices ist der Kaltstart kein Problem. Aber wenn Sie einen Chatbot schreiben, bei dem Geschwindigkeit wichtig ist, sollten Sie dies berücksichtigen.

\n\n

Google Cloud Functions – Einfachheit und Integration mit Firebase

\n\n

Go

Blogs

Buchempfehlungen