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
(and a lot of other things :-) )
Database
Monolith
Browser
Server
Highlander Configuration:
There is only one server,
and it does not die anyway.
Database-Master
Server
Monolith
Browser
Server
Monolith
Server
Monolith
Server
Load Balancer
Database-Slave
Server
Everything under control
100% flexibility
Your very own security
Minimal network latency
shared-nothing-architecture:
Just add more metal to scale
You have to pay for the hardware.
for the maximum capability you'll need
even if nobody uses it right now
including the ecological footprint
you have to deal with...
scaling
monitoring
health
backup
failover
...
"Marketing did not tell us about our TV ads for Xmas.
Obviously we need more capacity, like 10 servers."
"Ok, i ordered them.
They will be delivered in February."
Keep the software, change the hardware
External:AWS, Azure, Google, Hetzner, Ionos
Internal: OpenStack, Vmware, ...
MySQL
Vm
Monolith
Browser
ec2-VM
Monolith
ec2-VM
Monolith
ec2-VM
Load-Balancer VMs
MySQL
Vm
Amazon
RDS
Monolith
Browser
ec2-VM
Monolith
ec2-VM
Monolith
ec2-VM
AWS ELB
24 months to build
12 months to move from AWS to Facebook
https://gcemetery.co/
It looks a lot like the original metal, but it's owned by large companies.
"Please file an ops ticket to get a new VM. As soon as they get an Ack from the Board they will file an internal ticket, and with a bit of luck you'll get your new VM within a month."
Docker, Docker Swarm
Kubernetes, Mesos, OpenStack, OpenShift, LXD
Amazon ECS, GCE
Better Resource Allocation due to shared kernel
Container Image as a Deployment Unit
MySQL Container
+ Persistentvolume
Monolith
Browser
App-Container
Monolith
App-Container
Monolith
App-Container
NGINX Container
Everything is temporary.
Start it, Stop it, destroy it, replicate it, replace it, scale it.
AutoScale!
Finally: proper Utilization
proper orchestration
+ ephemeral containers
==
decompose your application
on deployment and network level.
MySQL Container
+ Persistentvolume
Monolith
App-Container
Catalog
NGINX Container
MySQL
Order
Postgres
Payment
MongoDB
(Not Bundles :-) )
(Not technical layers :-) )
(you built it, you run it)
(there is no service workflow engine or dispatcher)
(You don't have to wait for a decision)
(There is no shared database)
(There is no coordinated release)
(Your service isn't down just because another service is down.)
(Services will be replaced by
more services when they grow )
MicroServices allow to deal with scaling &
high complexity while moving fast.
If that's not your problem (yet),
you shouldn't need to use Microservices.
https://martinfowler.com/bliki/MonolithFirst.html
Constraints that limit complexity:
Move complexity to places
where you can automate it
Wouldn't it be great to
automate everything
that is
not actual business logic?
Automate All The Things!
Catalog
MySQL
ApiGateway
user-read
RDS
user-delete
user-write
user-update
"If nothing happens, you
don't need to pay anything."
Since November 2018 proper support via
"Bring Your Own Runtime" Lambda Layers.
Automate All the Things - for Kubernetes!
Platform | Company | PHP-Support | Serverless Framework |
---|---|---|---|
OpenWhisk | IBM | Yes | Yes |
OpenFaaS | VMWare | Yes | Beta |
Fn | Oracle | 1 Developer | Yes |
Kubeless | Bitnami | Yes | Yes |
Fission | Platform9 | Yes | 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!
Cloud Migration
vs
Cloud Native
Your source stays, the metal goes.
Rehosting: "Lift & Shift"
Replacement: "Lift-tinker-and-shift"
Containerize: Dockerize all the things
Neither your source nor your metal stays.
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