1. Weniger ist mehr.
Go serverless!
Simon Fleischer
Senior Softwareengineer
22.10.2019
2. Weniger ist mehr. Go serverless! Folie 2
Agenda
• Wenn das Team einen neuen Server braucht…
• Was bedeutet „serverless“?
• Serverless Services
• Serverless und DevOps
• Vorteile und Nachteile von serverless
• Architekturbeispiele
3. Weniger ist mehr. Go serverless! Folie 3
Wenn das Team
einen neuen
Server braucht…
4. Weniger ist mehr. Go serverless! Folie 4
Wenn das Team
einen neuen
Server braucht…
5. Weniger ist mehr. Go serverless! Folie 5
Wenn das Team
einen neuen
Server braucht…
6. Weniger ist mehr. Go serverless! Folie 6
Wenn das Team
einen neuen
Server braucht…
7. Weniger ist mehr. Go serverless! Folie 7
Währenddessen
im
Rechenzentrum
…
8. Weniger ist mehr. Go serverless! Folie 8
Wenn das Team
einen neuen
Server braucht…
9. Weniger ist mehr. Go serverless! Folie 9
Wenn das Team einen neuen Server braucht…
1. Der Verantwortliche wird gefragt
2. Gespräche mit Operations werden geführt (Größe, Standort, Betriebssystem…)
3. Formulare werden ausgefüllt
4. Passierschein 25b wird benötigt…
5. Server wird bestellt
6. …Warten…
7. …Warten…
8. Server wird eingerichtet und Zugangsdaten versendet
9. …
10.Entwicklungsteam bemerkt, dass benötigte Rechte fehlen…
11.…
10. Weniger ist mehr. Go serverless! Folie 10
Versuchen wir‘s mal ohne Server…
Was bedeutet also „serverless“?
Was können wir dagegen tun?
11. Weniger ist mehr. Go serverless! Folie 11
Hardware und OS
sind uns egal
Wir müssen und wollen davon
nichts wissen.
Server wird
„versteckt“
Wir arbeiten auf einer höheren
Abstraktionsebene.
Nutzung von
Diensten
Wir beziehen keine Hardware oder
VMs von internen oder externen
Dienstleistern, sondern Dienste.
TEAM – Toll, ein Anderer macht‘s!
12. Weniger ist mehr. Go serverless! Folie 12
Vergleich IaaS, PaaS und serverless
You manage Service Provider Managed
Networking
Storage
Serves
O/S
Virtualization
Middleware
Runtime
Data
Application
Customization; higher costs; slower time to value
On-Premise
Networking
Storage
Servers
O/S
Virtualization
Middleware
Runtime
Data
Application
IaaS
Networking
Storage
Serves
O/S
Virtualization
Middleware
Runtime
Data
Application
PaaS
Networking
Storage
Servers
O/S
Virtualization
Middleware
Runtime
Data
Application
Flexibility
Error tolerance
Scalability
Capacity planning
Functions
Business Logic
Serverless
Standardization; lower costs; faster time to value
13. Weniger ist mehr. Go serverless! Folie 13
Beispiele für serverless Services
• Funktionen
• Speicher
• Datenbanken
• Anwendungshosting
• Messaging
14. Weniger ist mehr. Go serverless! Folie 14
Funktionen
Beispielprodukte
• AWS Lambda
• Google Cloud Functions
• Azure Functions
Anwendungsfälle
• Funktion nimmt Währungsumrechnung vor (z.B.
über API Gateway als Webservice)
• Funktion generiert thumbnails
• Lambda reagiert auf AWS-Ereignisse und führt
Aktionen aus
15. Weniger ist mehr. Go serverless! Folie 15
Speicher
Beispielprodukte
• AWS S3
• Google Cloud Storage
• Azure Storage
Anwendungsfälle
• Hosting von statischen Webseiten
• Ablage von Dateien von "serverless" Applikationen
16. Weniger ist mehr. Go serverless! Folie 16
Datenbanken
Beispielprodukte
• AWS RDS
• Google Firestore
• Azure Cosmos DB
Anwendungsfälle
• Klassische relationale Datenbanken als Dienst
• NoSQL-Datenbanken
• Möglichkeit, ungenutzte Datenbanken
automatisiert "schlafen zu legen"
17. Weniger ist mehr. Go serverless! Folie 17
Anwendungshosting
Beispielprodukte
• AWS Elastic Beanstalk
• Google App Engine
• Azure App Service
Anwendungsfälle
• Betrieb von Applikationen "mit einem Klick" (z.B.
Spring Boot)
18. Weniger ist mehr. Go serverless! Folie 18
Messaging
Beispielprodukte
• AWS Simple Queue Service (SQS)
• Google Cloud Pub/Sub
• Azure Queue Storage
Anwendungsfälle
• Implementierung von Publisher / Subscriber
Pattern
• Lose Kopplung von Services
• Asynchrone Verarbeitung von Nachrichten
• Benachrichtigung bei Fehlern
19. Weniger ist mehr. Go serverless! Folie 19
You built it,
you run it!
Serverless und
DevOps
• Kein „Über den Zaun werfen“
• Verantwortung kann in einem
einzigen Team bleiben
• Kein spezielles "Ops-Wissen" im
Team nötig
20. Weniger ist mehr. Go serverless! Folie 20
Vorteile (1/2)
• Schnell verfügbar
• Hohe Verfügbarkeit
• Keine Engpässe bei kurzfristigen Lastspitzen (Bsp.: Beginn Kartenvorverkauf David Hasselhoff)
• Keine Wartung von Betriebssystem und Hardware nötig
• Weniger Monitoring nötig
• Kein Aufwand für Sicherheitsupdates des Betriebssystems und Middleware
• Rechtevergabe setzt an entscheidenden Punkten an
(z.B. Aufruf von Funktionen), nicht am Betriebssystem
• Backupkonzept kann leichtgewichtiger ausfallen und ist
einfach einzurichten
* Anm.: Das Konzert am 6.10. war nicht ausverkauft.
*
21. Weniger ist mehr. Go serverless! Folie 21
Vorteile (2/2)
• Zahlung nach Nutzung
• z.B. Funktionsaufrufe
• Keine ungenutzten, „sich langweilenden“ Ressourcen
• Kein ungenutzter Speicherplatz „auf Vorrat“
• Datenbank kann automatisch hoch- und heruntergefahren werden
• Oft kostenlose Kontingente verfügbar
(z.B. 1 Mio (!) Aufrufe von Lambda-Funktionen pro Monat)
• Der Kopf ist frei für das Wesentliche: Ihre Businesslogik
Freiheit für Ihr Business!
22. Weniger ist mehr. Go serverless! Folie 22
Nachteile (1/2)
• Weniger Freiheitsgrade
• Erschwertes oder unmögliches Profiling, Debugging, Monitoring
• Ggf. ungeeignet für High-Performance-Anwendungen
(z.B. einmalig hohe Latenz, wenn Lambda initialisiert wird)
• Nicht auszuschließende (Sicherheits-) Probleme durch Multimandantennutzung
23. Weniger ist mehr. Go serverless! Folie 23
Nachteile (2/2)
• Erhöhtes Lock-In-Risiko
(Allerdings: Standardisierung von Cloud-Diensten wird derzeit vorangetrieben)
• Falsch gewählte Services und Architekturen können zu hohen Kosten führen
• Oftmals Umdenken bei Entwicklung nötig
24. Weniger ist mehr. Go serverless! Folie 24
Einfacher
Webservice auf
Basis von API
Gateway und
Lambda
AWS Cloud
API Gateway Lambda
REST - Client
25. Weniger ist mehr. Go serverless! Folie 25
Dynamische
Webseite auf
Spring Boot -
Basis
AWS Cloud
Elastic Beanstalk
Spring
Boot
Application
Benutzer
(Browser)
Route 53
26. Weniger ist mehr. Go serverless! Folie 26
Dynamische
Webseite
auf Basis von S3,
Lambda, API
Gateway und
RDS
AWS Cloud
S3
LambdaAPI Gateway DynamoDB
Statische Inhalte (HTML, CSS, Bilder…)
Dynamische Inhalte, abgerufen über AJAX
Benutzer
(Browser)
27. Weniger ist mehr. Go serverless! Folie 27
Wenn das Team
eine Datenbank
braucht…
28. Weniger ist mehr. Go serverless! Folie 28
Wenn das Team
eine Datenbank
braucht…
29. Weniger ist mehr. Go serverless! Folie 29
Währenddessen
im
Rechenzentrum
…
30. CloudNative
Function as a Service
ElasticBeanstalk
Serverless
Lambda
Google Cloud
InfrastructreasaService
App Engine
Google Firestore
DevOps
IT
Cloud Pub/Sub
Cosmos DB
API Gateway
AppService
AWS
Platform as a Service
CloudCloud Functions Automation
BaaS
Hosting
Simple Queue Service
Scaling
I‘vebeenlookingforfreedom
Queue Storage
AWS S3
Azure
CI / CD
Dynamo DB
Cloud Storage
Cosmos DB
RDS
Payasyougo