68% of the companies have started to adopt a cloud native infrastructure
O'Reilly 2019
Up to 10 times
faster development.
Up to 100 times less
infrastructure costs
@ Mayflower
Image By BrokenSphere - Own work, CC BY-SA 3.0,
https://commons.wikimedia.org/w/index.php?curid=3893859
Database
Monolith
Browser
Server
Highlander Setup:
Es kann nur einen geben!
Er stirbt ohnehin nicht.
Database-Master
Server
Monolith
Browser
Server
Monolith
Server
Monolith
Server
Load Balancer
Database-Slave
Server
Einfaches Basis-Setp
100% Kontrolle + Flexibilität
Minimale Network Latency
Shared-Nothing-Architecture:
quasi-lineares Skalieren über Blech
Ich muss die Hardware bezahlen
und zwar für den maximalen Bedarf
auch dann, wenn niemand sie nutzt
inklusive des ökologischen Footprints
Mit den Anwendungen wächst die Komplexität ...
Skalieren
Monitoring
Health
Backup/Recovery
Failover
...
"Marketing hat ein Ticket eingestellt, nächste Woche kommt die Fernsehwerbung. Wir brauchen 20 neue Server."
"Ich habe sie gerade bei Dell bestellt, in
2 Monaten sind sie da."
software behalten, hardware wechseln
Extern:AWS, Azure, Google, Hetzner, Ionos
Intern: OpenStack, Vmware, ...
MySQL
Vm
Monolith
Browser
ec2-VM
Monolith
ec2-VM
Monolith
ec2-VM
Load-Balancer VMs
MySQL
Vm
(Und für viele Firmen
heute der Status Quo)
Amazon
RDS
Monolith
Browser
ec2-VM
Monolith
ec2-VM
Monolith
ec2-VM
AWS ELB
24 Monate um die Lösung zu bauen
12 Monate um die Lösung aus AWS zu holen
https://gcemetery.co/
"Bitte ein Ticket ans Tec-Board für die neue VM. Die priorisieren das dann ein, und dann geht das in die Ops-Pipeline. Aktuell sind das da gerade 2 Monate,
ausser wir machen Fast Lane."
Docker, Docker Swarm
Kubernetes, Mesos, OpenStack, OpenShift, LXD
Amazon ECS, GCE
Bessere Ressourcenallocation durch gemeinsamen Kernel.
Container Image as a Deployment Unit
MySQL Container
+ Persistentvolume
Monolith
Browser
App-Container
Monolith
App-Container
Monolith
App-Container
NGINX Container
Nichts ist für immer.
Start it, Stop it, destroy it, replicate it, replace it, scale it.
AutoScale!
Endlich: vernünftige Utilization
gute Orchestrierung
+ ephemeral Container
==
Dekomposition der Application
auf Deployment- und Netzwerk-Ebene
MySQL Container
+ Persistentvolume
Monolith
App-Container
Catalog
NGINX Container
MySQL
Order
Postgres
Payment
MongoDB
(nicht Module, Libraries, bundles, GEMs)
(nicht technischen Funktionen/Layers :-) )
(you built it, you run it)
(Da ist keine Middleware, keine Workflow- oder Rules-Engine)
(Keine externe Abhängigkeit bei Entscheidungen)
(Es gibt keine gemeinsam zu koordinierende Datenbank)
(Es gibt keine koordinierten Releases)
(Es gibt keine koordinierte Fehlerbehandlung)
(Es gibt keine koordinierte Architekturstrategie)
MicroServices erlauben Skalieren
über Teams &
hohe Komplexität bei hoher Geschwindigkeit.
Wenn man das problem (noch) nicht hat,
sollte man auch keine MicroServices nutzen.
https://martinfowler.com/bliki/MonolithFirst.html
Rahmen, die Komplexität limitieren:
Move complexity to places
where you can automate it
Wäre es nicht super,
jegliche Komplexität,
die nicht Businesslogik ist,
zu automatisieren?
Automate All The Things!
Replace all the things!
Catalog
MySQL
ApiGateway
user-read
RDS
user-delete
user-write
user-update
"Ich zahle nicht für die Maximalauslastung + Reserve."
Automate All the Things - for Kubernetes!
Platform | Company | Multi-Language-Support | Serverless Framework |
---|---|---|---|
OpenWhisk | IBM | Good | Yes |
OpenFaaS | VMWare | Good | Beta |
Fn | Oracle | Medium | Yes |
Kubeless | Bitnami | Good | Yes |
Fission | Platform9 | Good | Plugin |
Vendor-agnostic cloud native/serverless plattform for kubernetes
Google, Pivotal, IBM, Red Hat, SAP
Source to Url:
Push Code to Github,
get a URL-adressable Endpoint
Vendor-agnostic cloud native/serverless plattform for kubernetes
Based on Istio
Component | |
---|---|
Serving | Auto-Scaling with scale to zero |
Build | Cloud-native from source to production |
Events | Event-infrastructure for container services and functions |
Knative as a Service: Google Cloud Run,
Gitlab Serverless, IBM, SAP
Triggermesh: Lambda!
Der Sourcecode bleibt, das Metall geht.
Rehosting: "Lift & Shift"
Replacement: "Lift-tinker-and-shift"
Containerize: Dockerize all the things
Weder Source noch Metal bleiben.
Replacement: Rewrite it all.
Using just 10% of code .
Rearchitecting: Stepwise migration of
your Software
Everybody should know:
twitter @johannhartmann
Just You and me:
hartmann@mayflower.de