Serverless in JavaScript: Wie man aufhört, über Server nachzudenken und anfängt, Code zu schreiben
\n\nStellen 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\nServerless (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\nIn 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\nWas ist eine Serverless-Funktion und warum braucht ein JS-Entwickler sie?
\n\nEine 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\nWarum 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
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\nAWS Lambda – der König des Serverless-JavaScript
\n\nAmazon 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\nCode für AWS Lambda mit Node.js 20:
\n\nexport 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\nBeachten 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.
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\nKaltstart und wie man damit umgeht
\n\nDer 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
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\nGoogle Cloud Functions – Einfachheit und Integration mit Firebase
\n\nGo