AWS Lambda wurde 2014 eingeführt und ist eine serverlose Plattform für Function as a Service. Was bedeutet das? Was sind die wichtigsten Anwendungsfälle? Darauf werden wir in diesem Artikel näher eingehen, um die wachsende Beliebtheit des Dienstes zu erklären.
Was ist AWS Lambda ?
Das Prinzip von AWS Lambda ist im Grunde genommen sehr einfach. Es geht darum, Funktionen (d. h. Code) bereitzustellen, die auf Ereignisse reagieren, ohne sich um die zugrunde liegende Infrastruktur kümmern zu müssen.
Das bedeutet, dass du keine virtuellen Maschinen (Server) instanziieren musst, auf denen deine Anwendung laufen wird. AWS kümmert sich für dich um die Laufzeitumgebung. Aus diesem Grund spricht man auch von einem serverlosen (serverless) Dienst: Auch wenn es natürlich Server gibt, auf denen die Anwendung gehostet wird, sind sie für den Kunden völlig abstrakt.
Dies hat drei Hauptvorteile:
- Die Zeit, die für die Verwaltung von Servern aufgewendet wird, reduzieren (oder sogar eliminieren): Wartung, Updates, Sicherheitspatches, etc.
- Fast unendliche Skalierbarkeit: Egal, ob die Funktion einmal am Tag oder mehr als eine Million Mal ausgeführt wird, AWS passt den Dienst entsprechend an, ohne dass du dich um Load Balancing und Auto Scaling kümmern musst.
Beim Load Balancing werden Aufgaben (z. B. Anfragen, die bearbeitet werden müssen) auf eine Reihe von Servern statt auf einen einzelnen Server verteilt, um den Gesamtprozess effizienter zu gestalten.
Beim Auto-Scaling wird die Rechenkapazität (d. h. die Anzahl der Server hinter dem Load Balancer) automatisch an die Last angepasst (die z. B. anhand der Anzahl der Anfragen pro Minute gemessen werden kann). - Eine nutzungsabhängige Abrechnung ermöglichen: Die Abrechnung erfolgt pro Millisekunde, die die Funktion ausgeführt wird. Wenn die Funktion nicht ausgeführt wird, wird dir einfach nichts berechnet.
Da es keinen Server gibt, der ständig läuft, muss die Ausführung der Funktionen anhand von Ereignissen ausgelöst werden. Die Quellen für Ereignisse können sehr unterschiedlich sein: Du kannst die Ausführung einer Funktion auslösen, wenn eine Datei in einen S3-Bucket hochgeladen wird, wenn ein Datensatz zu einer DynamoDB-Tabelle hinzugefügt wird, als Antwort auf eine HTTP-Anfrage (über eine Integration mit dem API-Gateway-Dienst) oder einfach über ein Scheduling (du kannst beschließen, die Funktion periodisch aufzurufen, z. B. jede Minute oder jede Stunde).
💡Auch interessant:
Amazon S3 |
Amazon EC2 |
Amazon Web Services |
AWS Google Cloud |
Amazon Omics |
Amazon Quicksight |
Ein paar Fallbeispiele von AWS Lambda
Die Anwendungsfälle für AWS Lambda-Funktionen sind aufgrund der großen Anzahl von Integrationen mit anderen Diensten als Quellereignis sehr vielfältig. Dazu gehören Datenverarbeitung in Echtzeit, Dateitransformation oder sogar Backends für Web- oder Mobilanwendungen.
Erstellen von Bildvorschauen
Eines der am häufigsten genannten Beispiele für Anwendungsfälle ist die Erzeugung von Thumbnails (Vorschaubildern) beim Hochladen eines Bildes in einen S3-Bucket (Fach).
Angenommen, du entwickelst eine Anwendung, die es Nutzern ermöglicht, Bilder hochzuladen und sie mit anderen zu teilen. Du möchtest, dass der Nutzer Fotos in sehr hoher Auflösung hochladen kann, aber du möchtest Vorschauen in niedriger Auflösung auf der Bildergalerie anzeigen, damit diese schnell geladen wird.
Hierfür kannst du S3 und AWS Lambda verwenden: Ein erstes S3-Fach kann verwendet werden, um die Bilder deiner Nutzer zu speichern. Mithilfe der Ereignisbenachrichtigung kannst du jedes Mal eine Lambda-Funktion aufrufen, wenn in diesem Abteil eine Datei erstellt wird. Diese Funktion kann dann eine Vorschau aus dem Bild erzeugen und es in einem neuen Abteil speichern, das dann alle Thumbnails enthält :
Dank dieser serverlosen, ereignisgesteuerten Architektur passt sich deine Anwendung automatisch an die Anzahl der von den Nutzern durchgeführten Downloads an.
Man könnte sich leicht weitere ähnliche Anwendungen vorstellen:
- Generierung einer automatischen Transkription (über AWS Transcribe), wenn eine Audiodatei heruntergeladen wird.
- Echtzeitverarbeitung von Daten in einem Stream (Kinesis, Kafka).
Backends von Web- und Mobilanwendungen
Eine weitere häufige Anwendung von AWS-Lambda-Funktionen ist die Entwicklung von Backends für mobile oder Webanwendungen.
In der Tat ist es möglich, eine Lambda-Funktion zu verwenden, um Anfragen an API Gateway zu verarbeiten.
Wenn du auch eine Datenbank wie DynamoDB verwendest, kannst du komplett serverlose Backends (Web-, Anwendungs- und Datenbankebene) entwickeln, die je nach Nutzung perfekt skaliert werden können:
Weiterführende Informationen
Wie du gesehen hast, ermöglicht AWS Lambda eine Vielzahl von Anwendungen, was zum Teil seine wachsende Beliebtheit erklärt.
Es gibt jedoch einige Einschränkungen und Komplexitäten, die mit der Verwendung von Lambda-Funktionen einhergehen.
Zu den Einschränkungen gehört die maximale Ausführungszeit einer Funktion, die 15 Minuten beträgt: Lambda-Funktionen sind nicht dafür gedacht, lange Aufgaben zu erledigen. Wenn du zum Beispiel ein Machine-Learning-Modelltraining durchführen willst, ist AWS Lambda wahrscheinlich nicht die richtige Wahl. Der Speicher der Funktionen ist außerdem auf 10 GB und die CPU-Leistung auf 6 vCPUs beschränkt.
Eine weitere Komplexität, die man anführen kann, ist die Schwierigkeit, komplexe Anwendungen mit Lambda zu entwickeln und einzusetzen.
Aber wenn der Anwendungscode wächst, ist der Weg über die in die AWS-Konsole integrierte Entwicklungsumgebung wenig effizient oder sogar unmöglich.
In diesem Fall musst du deine Anwendung lokal auf deinem Computer entwickeln und einen wiederholbaren Prozess durchlaufen, um deinen Code zu packen und ihn auf AWS zu verteilen, was sich als kompliziert erweisen kann.
Um diese Aufgabe (und noch viel mehr) zu vereinfachen, kannst du unter anderem das Serverless-Framework verwenden, mit dem du deine Lambda-Funktionen und den dazugehörigen Code, ihre Integrationen und andere serverlose Ressourcen (z. B. DynamoDB-Tabellen) definieren kannst. Sobald du deinen Stack definiert hast, kannst du ihn mithilfe des Frameworks ganz einfach auf AWS bereitstellen.
Fazit
Wenn du mehr über die AWS Lambda-Funktionen und allgemein über die Architektur von IT-Systemen in der AWS-Cloud erfahren möchtest, kannst du dich für eine unserer Schulungen zu diesem Cloud-Anbieter anmelden.