type | slideOptions | ||||
---|---|---|---|---|---|
slide |
|
ein interaktiver Workshop mit Max Tharr
- Introduction
- Was meint Serverless?
- AWS Serverless Stack
- Cloud Development Kit (CDK)
- Setup for this workshop
- Contribute your own Lambdas!
A: Die Infrastruktur, die für eine Anwendung benötigt wird, wird vollständig vom Cloud-Anbieter verwaltet.
B: Wenn deine Software Geld kostet, wenn sie niemand verwendet, dann ist es nicht Serverless
Note: Der Begriff wird überall verwendet, aber was ist damit eigentlich gemeint?
*Eine Auswahl
- Serverless Computing Service
- AWS stellt eine Umgebung und ein SDK bereit, so dass man 'nur' Code schreiben muss
Note: Schnell und billig bei wenigen Aufrufen, aber teuer, wenn man seinen Gesamtworkload darüber laufen lassen will
- Asynchroner Messaging Service
- Gut zum decouplen von Workloads
- Gut integriert in andere AWS Services
- API Endpunkt
- Rest API oder generische HTTP(S) API
- Kümmert sich um SSL und validieren von Requests, leitet an andere Services weiter
- "NoSQL" Datenbank (Nicht wie MongoDB)
- Ein Key-Value-Store, der auch mit sehr vielen Einträgen sehr schnelle Antworten liefert
- Prinzip: Filtern ist schneller als ein Join
Note: Darauf basiert z.b. der Amazon Shop
Logs und Metriken
Tracing, integriert in CloudWatch
- Infrastructure-as-Code Ansatz von AWS
- Basiert auf CloudFormation
- Modulares Erstellen von Stacks in für Entwickler vertrauten Programmiersprachen
- Funktioniert u.a. mit Python, TypeScript, Java, C#
- Infrastructure-as-Code Ansatz von AWS
- Basiert auf CloudFormation
- Modulares Erstellen von Stacks in für Entwickler vertrauten Programmiersprachen
- Funktioniert u.a. mit Python, TypeScript, Java
- Funktioniert richtig gut nur mit TypeScript
Beispiel:
const entryQueue = new cdk.aws_sqs.Queue(this, 'entry-queue')
const entryFunction = new cdk.aws_lambda_nodejs.NodejsFunction(
this, 'entrypoint', {
runtime: cdk.aws_lambda.Runtime.NODEJS_18_X,
tracing: Tracing.ACTIVE,
environment: {
QUEUE_URL: entryQueue.queueUrl
}
}
)
entryQueue.grantSendMessages(entryFunction);
- Ich habe einen CDK Stack vorbereitet, der das Kinderspiel "Stille Post" mit Hilfe von Lambdas nachspielt.
- Jedes Lambda bekommt einen String als Input, soll ihn transformieren und dann an eine SQS Queue weitergeben. Dabei wird die ursprüngliche Nachricht immer weiter verfälscht, so wie bei Stille Post
Ich habe zwei Beispiele im Ordner workers
angelegt. Einmal JavaScript 🌐, einmal Python 🐍
Das Projekt auf github forken, den Ordner py-example
oder js-example
kopieren, dabei muss euer neuer Ordnername auch den prefix py-
oder js-
behalten, damit mein CDK-Code erkennt, welche Runtime benutzt wird.
Danach im Code die Lambda nach euren Wünschen verändern!