Dmitry Nikolaev - stock.adobe.co

Support für Node.js in AWS Lambda nimmt Fahrt auf

AWS hängt mit seinem Node.js-Support in Lambda hinterher. Die Gründe sind zwar nachvollziehbar, doch für die Entwickler ist es häufig ein großes Problem.

Softwareentwickler, die die neueste Version von Node.js für eine Serverless-Plattform benötigen, bevorzugen dafür nicht unbedingt AWS Lambda. Doch Amazon Web Services (AWS) beschleunigt mittlerweile die Node.js-Unterstützung von Lambda – zumindest teilweise.

Amazon hinkt bei der Unterstützung der neuesten Versionen von Node.js in AWS Lambda dem allgemeinen Markt hinterher. Obwohl der Cloud-Anbieter berechtigte Gründe für diese schleppende Unterstützung hat, zum Beispiel eine gründliche Überprüfung des Open-Source-Codes, sind die Verzögerungen bei der Node.js-Unterstützung noch immer ein Problem für Entwickler.

Die Version 8 von Node.js, also der JavaScript-Laufzeitumgebung, wurde offiziell im Mai 2017 frei gegeben, aber in Lambda wurde sie erst ab April 2018 unterstützt. Zwar freuen sich Entwickler, dass inzwischen Node.js 8.10 für Serverless-Plattformen unterstützt wird. Doch das ist noch immer nicht die neueste Version, denn seit seiner Veröffentlichung hat es mehrere Sicherheits- und Bug-Patches gegeben.

Leider können Entwickler nur diejenige Node.js-Version verwenden, die von AWS Lambda unterstützt wird. Sie können diese aber nicht aktualisieren, um neue Funktionen zu nutzen. Dazu gehören auch Leistungssteigerungen oder Sicherheitsfixes, die von der Community ständig veröffentlicht werden.

Bei jeder Freigabe einer Hauptversion produziert Node.js eine so genannte LTS-Version (Long Term Support). Dies ist eine Version, die die Node.js-Community weiterhin unterstützt und für die sie Fixes und Sicherheits-Updates auch dann noch für frühere Versionen bereitstellen (Backporting), wenn die neue Version als stabil eingestuft wird. Zum jetzigen Zeitpunkt ist die neueste LTS-Version von Node.js 8.11 (Carbon), wogegen die neueste aktuelle Version bereits 9.10 ist.

Nachdem von der Community Version 10 entwickelt wurde, wird sie diese Version auf die neueste LTS-Version im Oktober 2018 hochstufen. Das ist dann rund sechs Monate nach der Unterstützung der Version 8 von Node.js in AWS Lambda.

Die Node.js-Community arbeitet schnell

Ein Jahr ist eine lange Zeit in der Node.js-Community, denn alles entwickelt sich rasend schnell. Andererseits ist ein Jahr eine relativ kurze Zeit bei den meisten anderen Programmiersprachen, wenn man sich deren Release-Zyklen anschaut. Beispielsweise wurde Python 2.6 im Oktober 2008 veröffentlicht, doch erst vor kurzem wurde die offizielle Unterstützung eingestellt. Im Vergleich dazu wurde Node.js 6 im April 2016 veröffentlicht, doch die Community wird es bereits ab April 2019 nicht mehr unterstützen.

Warum die AWS-Unterstützung hinterherhinkt

Bei Lambda muss Amazon bestimmte Aufgaben erledigen, die bei den meisten Unternehmen nicht notwendig sind. Zum Beispiel muss der Cloud-Anbieter alle unterstützten Programmiersprachen vollständig prüfen. Damit soll sichergestellt werden, dass die Entwickler nicht auf etwas zugreifen können, worauf sie keinen Zugriff haben dürfen, beispielsweise Zugriffe auf das Netzwerk oder auf Elemente, die die Lambda-Anwendung eines anderen Benutzers beeinträchtigen könnten. Amazon muss den Code der Node.js Foundation gründlich überprüfen, und das braucht Zeit.

Der Cloud-Provider muss auch ältere Versionen von Node.js in AWS unterstützen, da die Community einige Node-Package-Manager-Module nicht aktualisiert, um die neuesten Versionen zu unterstützen. Außerdem haben Unternehmen, die Lambda für Produktionsaufgaben einsetzen, oft nicht die Zeit oder die Möglichkeit, ihre Anwendungen auf neuere Versionen zu migrieren. AWS muss Unternehmen viel Zeit geben, bevor es eine unterstützte Laufzeit erreicht, unabhängig von den Plänen der Open Source Community.

Workarounds für Entwickler

Es gibt einige Möglichkeiten, wie Entwickler auch neuere Versionen von Node.js in AWS Lambda ausführen können. Hierzu gehören unter anderen die Wrapper-Funktionen, wie Apex Go. Dies wird jedoch generell nicht empfohlen.

Entwickler, die unbedingt eine neuere Node.js-Version benötigen, sollten stattdessen AWS Fargate for Elastic Container Service verwenden, was sie durch eine AWS Lambda-Funktion auslösen können. Alternativ können sie ihre Anwendungen auch auf traditionellen Systemen wie Elastic Beanstalk ausführen. Für Entwickler, die nicht unbedingt die neueste Version von Node.js benötigen, gibt es aber nur eine Lösung: Warten auf das Upgrade in AWS Lambda.

Module von Drittanbietern funktionieren eventuell nicht

Es gibt eine Menge neuer Features in Node.js 8, einschließlich einer neuen Form des Async Hooks, von dem einige Module abhängen. Während die Community Node.js 6 noch offiziell bis 2019 unterstützen will, werden einige Anbieter diese ältere Version nicht mehr so lange unterstützen. Das bedeutet, dass die Entwickler auf neuere Versionen wechseln müssen, wenn sie weiterhin Bibliotheken von Drittanbietern wie Chromeless verwenden wollen, das nur mit Node.js Version 8 und neuer funktioniert.

Mit der Konkurrenz mithalten

Die größte Gefahr für AWS Lambda ist im Moment, dass viele Konkurrenten neuere Versionen von Node.js unterstützen, einschließlich Microsoft Azure Functions und Heroku. Zusätzlich unterstützen einige dieser Plattformen weitere Sprachen, zum Beispiel TypeScript, die Entwickler in Node.js kompilieren können. Obwohl dies bedeutet, dass Entwickler TypeScript für AWS Lambda technisch nutzen können, schafft die native Unterstützung für die Sprache in Azure ein nahtloseres Erlebnis.

AWS hat jedoch die Geschwindigkeit seiner Releases deutlich verbessert. So benötigte der Cloud-Anbieter fast drei Jahre, um von Node.js 0.10 auf Node.js 4 zu aktualisieren. Um von Node.js 6 auf Node.js 8 zu aktualisieren, dauerte es aber nur noch ein Jahr. Das ist ein deutlicher Fortschritt, der beweist, wie sehr Amazon auf den Druck der Community reagieren kann.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Mit C# Multi-Plattform-Anwendungen auf AWS Lambda entwickeln.

Native AWS-Tools und Lambda erweisen sich bei Performance-Tests als nützlich.

Mit diesen Tricks lassen sich AWS Lambda-Probleme vermeiden.

Erfahren Sie mehr über Cloud Computing