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.
| 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.

