Einführung in Serverless Computing mit AWS Lambda

Skalierbare Infrastruktur in der Cloud als Basis für Anwendungen und gleichzeitige Minimierung von Kosten ist nichts Neues. Da öffentliche Cloud-Anbieter ihre Ressourcen für Unternehmen zugänglich machen ist in der Cloud gehostete Infrastruktur heute State-of-the-art. Function as a Service (FaaS) ist die natürliche Weiterentwicklung dieses Konzepts, welches über das bloße Starten und Nutzen einer Instanz hinausgeht. FaaS bietet dem Benutzer sehr viel mehr Freiheit, da er sich auf den Code einer Anwendung konzentrieren kann, ohne sich überhaupt um die Verwaltung der Infrastruktur kümmern zu müssen. Dies gilt für alle serverlosen Anwendungen, zumindest bei AWS.

AWS Lambda ist das Herzstück der serverlosen Plattform bei Amazon Web Services. Es ist ein integraler Bestandteil von serviceorientierten Architekturen und wird durch Ereignisse ausgelöst. Es skaliert proportional zur Nachfrage und bietet integriertes Monitoring und Logging. Zudem ist Lambda mit einer Vielzahl von Diensten in AWS kompatibel. Lambda unterstützt viele gängige Programmiersprachen: Java, Go, PowerShell, Node.js, C#, Python und Ruby (Stand 15.05.2020). Ähnliche Konzepte findet sich bei jedem öffentlichen Cloud-Anbieter. Google Functions und Azure Functions gehören zur gleichen Klasse von Diensten und verwenden intern wahrscheinlich ähnliche Technologien.

Warum sollten Sie AWS Lambda in Betracht ziehen und wann sollten Sie es einsetzen?

Allein die Möglichkeit sich rein auf geschäftliche Herausforderungen und den Code zu konzentrieren, welcher diese löst ist aus Entwicklersicht ein großer Vorteil. Aber es gibt noch einen weiteren Vorteil bei der Verwendung von AWS Lambda: Kostenoptimierung. Üblicherweise wird eineEC2-Instanz gestartet, welche pro Rechenkapazität pro Stunde oder Sekunde abgerechnet wird. Dies kann sehr schnell teuer werden. Zwar gibt es verschiedene Arten von Instanzen und Betriebskosten können gesenkt werden, indem Sie Reserved Instances (RIs) nutzen. Für unkritische Anwendungen sind Spot Instances eine Möglichkeit kosten zu reduzieren.

Aber in vielen Fällen soll Code aber nur ab und zu ausgeführt werden, der Workload rechtfertigt keine Reserved Instances oder die Anwendung eignet sich nicht für Spot Instances. In solchen Fällen stellt AWS Lambda eine Alternative dar, da sich Kosten aus Laufzeit des Codes und absoluter Menge der Funktionsaufrufe berechnet. Bleibt eine Anwendung innerhalb der Grenzen von AWS Free-Tier kann es vorkommen, dass die Nutzung von AWS Lambda kostenfrei ist. Vorausgesetzt Kosten für Entwicklung und Pflege des Codes werden ignoriert. AWS Free-Tier für Lambda umfasst 1.000.000 kostenlose Anfragen pro Monat und 400.000 GB-Sekunden Rechenzeit pro Monat. Zudem stellt AWS sicher, dass Lambda-Funktionen innerhalb von Millisekunden einsatzbereit sind!

Bestandteile von Lambda-Funktionen

Eine Lambda-Funktion besteht aus drei Teilen. Function Policies steuern, welche Dienste die Lambda-Funktion aufrufen können. Dies können Datenspeicher, Endpunkte, Repositories oder Nachrichtendienste sein. Tabelle 1. zeigt Beispiele für jede mögliche Kategorie.

EventquelleBeispiel
EndpunkteAlexa, API Gateway, AWS Step Function, Amazon IoT
RepositoriesCloudWatch, CloudFormation, CloudTrail, CodeCommit
DatenpseicherS3, Dynamo DB, Kinesis, Cognito, Aurora
NachrichtendiensteSQS, SNS, SES, Cron Events

Die IAM Execution Policy legt fest, was die Funktion tun darf. Und schließlich der Code, der die Geschäftslogik implementiert.

Anwendungsszenarien für serverlose Funktionen

Serverless Web-Anwendungen

Serverlose Web-Anwendungen repräsentieren eine spannende Möglichkeit Lambda-Funktionen zu verwenden, da mehrere serverlose Dienste von AWS kombiniert werden. Abbildung 1 zeigt eine High-Level-Architektur. Amazon S3 wird verwendet, um statische Inhalte einer Website zu hosten. Die dynamische Funktionalität wird durch das API-Gateway bereitgestellt, welches Endpunkte für das Frontend bereitstellt. Das API-Gateway schützt standardmäßig vor DDoS-Angriffen und bietet Caching-Fähigkeiten. Schließlich wird AWS Lamda zur Implementierung der Logik verwendet und als interner Endpunkt für das API-Gateway genutzt. All diese Dienste skalieren bei Bedarf und sind hochverfügbar, sodass Sie sich nie wieder um Ausfallzeiten kümmern müssen.

Abbildung 1: Beispielarchitektur einer serverlosen Webapplikation.

Datentransformation in Echtzeit

Sie können AWS Lambda und Amazon Kinesis verwenden, um Echtzeitdaten-Streams zu verarbeiten. Abbildung 2 stellt einen IoT-Anwendungsfall dar, bei dem ein (oder auch mehrere) internetfähige Geräte ihre Daten in die AWS-Cloud streamen. Amazon Kinesis streamt diese Daten direkt zu Lambda, wo diese weiterverarbeitet werden. Dabei kann es sich um die Berechnung von Metadaten, die Bereinigung der Daten oder die Überprüfung der Daten vor dem Schreiben in eine Datenbank handeln.

Abbildung 2: Beispielarchitektur für serverlose Datentransformation in Echtzeit

Andere Anwendungen können eine Echtzeit-Log-Analyse, die Verarbeitung von Uploads auf S3 oder die Verwendung von AWS Lambda als IoT-Backend sein.

Hier bei PROTOS Technologie sind wir spezialisierte Cloud-Ingenieure, die Sie bei der Nutzung von serverloser Technologie und serviceorientierten Architekturen unterstützen können.