SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
PER ANHALTER
DURCH DEN
CLOUD NATIVE
STACK
1
Mario-Leander Reimer
Cheftechnologe
Kontakt
Mail: mario-leander.reimer@qaware.de
Twitter: @LeanderReimer
• Vollblut Entwickler && Architekt
• #CloudNativeNerd
• Open Source Enthusiast
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Let’s talk about Cloud Native Applications
3
#GIFEE Google’s
(and Facebook’s, Twitter’s, Airbnb’s, ...)
Infrastructure
For
Everyone
Else
CONTINUOUS

DELIVERY & DEVOPS
ANTIFRAGILITY
HYPERSCALE 

TRAFFIC, DATA, FEATURES
OPEX SAVINGS

(automation & utilization)
CLOUD NATIVE APPLICATIONS
DISRUPTINDUSTRIALIZE
PACKAGED AND
DISTRIBUTED AS CONTAINERS
BUILD AND COMPOSED
AS MICROSERVICES
DYNAMICALLY
EXECUTED IN THE CLOUD
CLOUD NATIVE APPLICATIONS
3KEYPRINCIPLES
„There ain’t no such thing as a free lunch.“
Robert A. Heinlein, 1966, The Moon Is a Harsh Mistress
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Die 5 Gebote der Cloud.
1. Everything Fails All The Time.
2. Focus on MTTR and not on MTTF.
3. Know the Eight Fallacies of Distributed Computing.
4. Scale out, not up.
5. Treat resources as cattle, not pets.
8
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Design Prinzipien Cloud-nativer Anwendungen
• Design for Performance: responsive; concurrency; efficiency.
• Design for Automation: automate dev tasks & ops tasks.
• Design for Resiliency: fault-tolerant; self-healing.
• Design for Elasticity: dynamically scale; be reactive.
• Design for Delivery: short roundtrips; automated delivery.
• Design for Diagnosability: cluster-wide logs, traces, metrics.
9
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Maturity Model Cloud-nativer Anwendungen
10
https://www.opendatacenteralliance.org/docs/architecting_cloud_aware_applications.pdf
Level 0: Virtualized
Level 1: Loosely Coupled
Level 2: Abstracted
Level 3: Adaptive
Cloud Native
- Skaliert elastisch abhängig von Stimuli.
- Dynamische Migration auf andere Infrastruktur

ohne eine Service Downtime.
Cloud Resilient
- Fehler-tolerant und resilient entworfen.
- Metriken und Monitoring eingebaut.
- Runs anywhere. Infrastruktur agnostisch.
Cloud Friendly
- Besteht aus lose gekoppelten Diensten.
- Dienste können über Namen gefunden werden.
- 12-Factor App Principles.
Cloud Ready
- Keine Anforderungen an das Datei-System.
- Läuft auf virtualisierter Hardware.
- Self-contained, kann als Image ausgeführt werden.
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Die Anatomie des Cloud Native Stack
11
Application Platform Cloud Native App
Cluster Orchestrator Applications
Cluster Scheduler Containers
Cluster Virtualization Resources
Cluster Operating System
Entkoppelt
von physischer
Hardware.
Verwaltet
Ressourcen für
die Ausführung
von Containern
Führt
Applikationen
auf dem
Cluster aus.
Stellt Ablauf-
Umgebung und
APIs für Apps
bereit.
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Cloud Native Stack mit Spring Cloud und K8S.
13
Application Platform Cloud Native App
Cluster Orchestrator Applications
Cluster Scheduler Containers
Cluster Virtualization Resources
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Orchestration
Composition
Die 4 Schritte zur Cloud-nativen Anwendung
1. MICROSERVICES
2. CONTAINERIZATION
3. COMPOSITION
4. ORCHESTRATION
14
Containerization
Microservices
docker
compose
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
MICROSERVICES
15
3
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
2002
17
Items
Registration
Buying
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
2008
18
Additional
Services
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
2011
19
Additional
Services
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Bad News.
20
§ “[…] it was unable to scale for 6 million pageviews per minute and was down
for most of the day during peak events.”
§ “This is the multi-million dollar question which the IT Department of Walmart
Canada had to address after they were failing to provide to their users on Black
Fridays for two years in a row.”
https://blog.risingstack.com/how-enterprises-benefit-from-microservices-architectures
Walmart auf http://www.oneops.com
Sehr lange
Release-Zyklen
Mangelnde
Skalierbarkeit
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
2016
21
Additional
Services
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Good News.
22
Walmart auf http://www.oneops.com
“They wanted to prepare for the world by 2020, with 4 billion people connected, 25+
million apps available, and 5.200 GB of data for each person on Earth.
Walmart replatformed […] with the intention of achieving close to 100% availability with
reasonable costs.”
https://blog.risingstack.com/how-enterprises-benefit-from-microservices-architectures
§ “In fact, the organization reports thatsome 3,000 engineers […] drive 30,000
changes per month to Walmart software.”
§ “Those new applications,which span everything from mobile devices to the
Internet of things (IoT), are crucial weapons in a global e-commerce contest
that pits Walmart againstthe likes of Amazon and Alibaba,as well as a host of
other rivals that are emerging as the cost of entry into the online retail sector
continues to decline in the age of the API economy.”
http://www.baselinemag.com/enterprise-apps/walmart-embraces-microservices-to-get-
more-agile.html
§ “The Walmart […] servers […] were able to handle all mobile Black Friday
traffic with about10 CPU cores and 28Gb RAM.”
§ “On Thanksgiving weekend,Walmartservers processed 1.5 billion requests
per day. 70 percent of which were delivered through mobile.”
http://techcrunch.com/2014/12/02/walmart-com-reports-biggest-cyber-monday-in-
history-mobile-traffic-at-70-over-the-holidays
1000 deployments a day …
… triggered by dev teams.
~ 100% availability
Resource efficiency
Suitable scalability
Enabled new kinds of
applications ( IoT, mobile, APIs)
to compete globally
3
WHAT DID THEY DO?
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Die Antwort: Dekomposition.
24
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
• Planning unit
• Team assignment unit
• Development unit
• Integration unit
Komponenten entlang des Software-Lebenszyklus
25
DESIGN BUILD RUN
Design Components Dev Components Ops Components
• Complexity unit
• Data integrity unit
• Cohesive feature unit
• Decoupled unit
• Release unit
• Deployment unit
• Runtime unit
• Scaling unit
?:11:1
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware26
System
Subsystem
Komponenten
Services
Monolith
Macroservices
Microservices
Nanoservices
Good starting point
Dev Components Ops Components?:1
Decomposition Trade-Offs
+ More flexible to scale
+ Runtime isolation (crash, slow-down, …)
+ Independent releases, deployments, teams
+ Higher resources utilisation
- Distribution debt: Latency
- Increased infrastructure complexity
- Increased troubleshooting complexity
- Increased integration complexity
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Zwitscher Microservice in 10 Minuten
27
Zwitscher
Controller
Zwitscher
Repository
/tweets
ZwitscherServiceApp
search(…)
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
CONTAINERIZATION
28
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
$ docker build -t zwitscher-service:1.0.1 .
$ docker run --name zwitscher-service -d 
-p 8080:8080 zwitscher-service:1.0.1
$ docker tag zwitscher-service:1.0.1 hitchhikersguide/zwitscher-service:latest
$ docker push hitchhikersguide/zwitscher-service
Der Containerization Workflow mit Docker
29
3. Tag & Push
2. Run
Dockerfile
1. Build
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Beispiel Dockerfile für Zwitscher Service
30
FROM qaware/alpine-k8s-ibmjava8:8.0-3.10

MAINTAINER QAware GmbH <qaware-oss@qaware.de>



RUN mkdir -p /app



COPY build/libs/zwitscher-service-1.0.1.jar /app/zwitscher-service.jar

COPY src/main/docker/zwitscher-service.conf /app/



EXPOSE 8080

CMD /app/zwitscher-service.jar
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Wichtige Tips für den Umgang mit Docker
• Kenne dein Base-Image! Auf die Größe kommt es an.
• Ein Docker Build muss wiederholbar sein.
• Jeder RUN Befehl erzeugt ein Layer. Nutze Mehrfachbefehle!
• Entferne temporäre Dateien.
• Veröffentliche wichtige Ports mit EXPOSE.
• Definiere Umgebungs-Variablen für wichtige Parameter.
• Nutze ein Image für alle Umgebungen.
• Versioniere deine Images.
• Verwende Tools zur QS von Dockerfiles und Images.
31
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
COMPOSITION
32
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware33
Cluster-weite
Konfiguration und
Konsensus
Überwachung und
Fehler-Diagnose
Geregelter Zugriff 

auf Service 

Endpoints von Außen
Registrierung und
Suche von Service
Endpoints
Laufzeit-Umgebung
für Service Endpoints
Resistenter Aufruf
von anderen
Service Endpoints
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware34
Zwitscher
Controller
Zwitscher
Repository
/tweets
ZwitscherServiceApp
/zwitscher-service/*
Discovery
Configure
Actuator
/admin/health
Register
Read
K/V
Get Services
/prometheus
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Beispiel docker-compose.yml
35
version: '2'
services:
zwitscher-consul:
...
zwitscher-traefik:
...
zwitscher-service:
image: hitchhikersguide/zwitscher-service:1.0.1
environment:
- CONSUL_HOST=zwitscher-consul
- CONSUL_PORT=8500
- TWITTER_APP_ID=${TWITTER_APP_ID}
- TWITTER_APP_SECRET=${TWITTER_APP_SECRET}
depends_on:
- zwitscher-consul
links:
- zwitscher-consul
ports:
- "8080:8080"
networks:
- zwitscher-net
$ docker-compose -p zwitscher up -d
$ docker-compose -p zwitscher ps
$ docker-compose -p zwitscher logs -f
$ docker-compose -p zwitscher down
docker
compose
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
ORCHESTRATION
36
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware37
zwitscher-traefik
Kubernetes DNS
zwitscher-consul
zwitscher-service
Manage
Manage
Manage
Resolve
Ops
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Einfaches K8S Setup in der Cloud oder Lokal
38
echo "- Use Vagrant for local K8s setup"
export KUBERNETES_PROVIDER=vagrant
export NUM_NODES=1
echo "- The default provider is GCE"
export KUBERNETES_PROVIDER=gce
export KUBE_GCE_ZONE=europe-west1-d
export NUM_NODES=4
echo "- Another possible provider is AWS"
export KUBERNETES_PROVIDER=aws
export KUBE_AWS_ZONE=eu-central-1a
export NODE_SIZE=t2.small
curl -sS https://get.k8s.io | bash
Minikube
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Die Kubernetes Bausteine im Überblick
39
Master
Minion
API Server
Controller Manager
Scheduler
etcd kubelet
kube-proxy
Container Engine

(Docker / rkt)
PodPodPod C1 … Cn
Users
Admin
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Die wichtigsten K8S Konzepte und Begriffe
• Services sind eine Abstraktion für
eine logische Sammlung von Pods
• Pods sind die kleinste deploybare
Compute Einheit in K8S
• Deployments dienen der Deklaration
von Pods, Volumes und RCs
• Replica Sets stellen die geforderte
Anzahl an Replicas sicher
• Labels sind Key/Value Paare die zur
Identifikation verwendet werden
40
Deployment
Service
Replica
Set


Pod
Container
Container
DNS Name
Labels:<K,V>
Port
Volume
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Kubernetisierung: Single oder Multi-Container Pod?
POD DeploymentPOD Deployment
41
POD Deployment
POD Deployment
POD Deployment
ZWITSCHER-BOARD
ZWITSCHER-TRAEFIK
ZWITSCHER-CONSUL
ZWITSCHER-MONITORZWITSCHER-SERVICE
Service Service Service
Service
Service
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Deployment Definition für Zwitscher Service
42
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: zwitscher-service
spec:
replicas: 3
template:
metadata:
labels:
zwitscher: service
spec:
containers:
- name: zwitscher-service
image: "hitchhikersguide/zwitscher-service:1.0.1"
ports:
- containerPort: 8080
env:
- name: CONSUL_HOST
value: zwitscher-consul
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
K8s Service Definition pro Deployment
43
apiVersion: v1
kind: Service
metadata:
name: zwitscher-service
labels:
zwitscher: service
spec:
# use NodePort here to be able to access the port on each node
# use LoadBalancer for external load-balanced IP if supported
type: NodePort
ports:
- port: 8080
selector:
zwitscher: service
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Vorsicht bei Definition von Resource Constraints
44
resources:
# Define resources to help K8S scheduler
# CPU is specified in units of cores
# Memory is specified in units of bytes
# required resources for a Pod to be started
requests:
memory: "128Mi"
cpu: "250m"
# the Pod will be restarted if limits are exceeded
limits:
memory: "192Mi"
cpu: "500m"
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Liveness und Readiness Probes über Actuator
45
# container will receive requests if probe succeeds
readinessProbe:
httpGet:
path: /admin/info
port: 8080
initialDelaySeconds: 30
timeoutSeconds: 5
# container will be killed if probe fails
livenessProbe:
httpGet:
path: /admin/health
port: 8080
initialDelaySeconds: 90
timeoutSeconds: 10
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Aufbau einer K8S-only Deployment Variante.
46
zwitscher-service
Manage
Manage
Ops
zwitscher-board
Ingress
DNS
ConfigMap
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Auch der Spaß kommt nicht zu kurz.
• Standard MIDI Controller
• Visualisiert Deployments und Pods
• Skaliert Deployments
• Funktioniert auch für DC/OS
• http://github.com/qaware/kubepad/
47
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Keine Magie. Aber komplexe Technologie.
• Building Distributed Systems is hard!
• Der Cloud Native Stack macht die Komplexität beherrschbar.
• Die hohe Abstraktion ist Segen und Fluch zugleich.
• Entwickler und Architekten brauchen zusätzliche Skills und Know-
How in etlichen neuen Technologien.
49
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
Code und Artikel zum Nachlesen unter …
• https://github.com/qaware/hitchhikers-guide-cloudnative
• Der Cloud Stack: Mesos, Kubernetes und Spring Cloud 

https://goo.gl/U5cJAU
• Spring Cloud und Netflix OSS: Cloud-native Anwendungen bauen

https://goo.gl/edNlUK
• Cloud-native Anwendungen mit Kubernetes

https://goo.gl/dVkoyR
• Eine Einführung in Apache Mesos: Das Betriebsystem der Cloud

https://goo.gl/7SnMZA
50
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware51
CompletableFuture<SoftwareArchitektIn> ich =
CompletableFuture.supplyAsync(()
-> erfindergeist()
.handwerksstolz()
);
CompletableFuture<Projekthaus> qaware =
CompletableFuture.supplyAsync(()
-> professionalität()
.lässigkeit()
);
Erfolg start = qaware.thenCombine(ich,
(i, q) -> i.sendeBewerbung(q))
.join();
Weiter Details unter http://www.qaware.de/karriere/#jobs
| OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware
42.
THE ANSWER TO LIFE, UNIVERSE,
THE CLOUD AND EVERYTHING.
52
https://www.qaware.de
https://slideshare.net/qaware/
https://github.com/qaware/
&

Weitere ähnliche Inhalte

Was ist angesagt?

Enterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue SchwarzEnterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue SchwarzQAware GmbH
 
Oracle Cloud
Oracle CloudOracle Cloud
Oracle CloudTim Cole
 
Mit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
Mit LoRaWAN und Serverless zur eigenen Smart-Office-LösungMit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
Mit LoRaWAN und Serverless zur eigenen Smart-Office-LösungQAware GmbH
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessOPEN KNOWLEDGE GmbH
 
Automotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrAutomotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrQAware GmbH
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!OPEN KNOWLEDGE GmbH
 
Clusterless mit AWS Fargate
Clusterless mit AWS FargateClusterless mit AWS Fargate
Clusterless mit AWS FargateQAware GmbH
 
AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...
AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...
AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...Amazon Web Services
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_Roo
2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_Roo2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_Roo
2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_RooKai Wähner
 
Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten SystemenOPEN KNOWLEDGE GmbH
 

Was ist angesagt? (13)

Enterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue SchwarzEnterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue Schwarz
 
Serverless: The Missing Manual
Serverless: The Missing ManualServerless: The Missing Manual
Serverless: The Missing Manual
 
Oracle Cloud
Oracle CloudOracle Cloud
Oracle Cloud
 
Mit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
Mit LoRaWAN und Serverless zur eigenen Smart-Office-LösungMit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
Mit LoRaWAN und Serverless zur eigenen Smart-Office-Lösung
 
Serverless Survival Guide
Serverless Survival GuideServerless Survival Guide
Serverless Survival Guide
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu Serverless
 
Automotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrAutomotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache Solr
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!
 
Clusterless mit AWS Fargate
Clusterless mit AWS FargateClusterless mit AWS Fargate
Clusterless mit AWS Fargate
 
AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...
AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...
AWS Initiate Berlin - Digitale Transformation - Warum Kunden aus dem öffentl...
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_Roo
2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_Roo2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_Roo
2011_Herbstcampus_Rapid_Cloud_Development_with_Spring_Roo
 
Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten Systemen
 

Ähnlich wie Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017

A Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native StackA Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native StackQAware GmbH
 
Der Cloud Native Stack in a Nutshell
Der Cloud Native Stack in a NutshellDer Cloud Native Stack in a Nutshell
Der Cloud Native Stack in a NutshellQAware GmbH
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalQAware GmbH
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionQAware GmbH
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
Cloud Computing ­- eine Revolution? by Hartmut Streppel
Cloud Computing ­- eine Revolution? by Hartmut StreppelCloud Computing ­- eine Revolution? by Hartmut Streppel
Cloud Computing ­- eine Revolution? by Hartmut StreppelMedien Meeting Mannheim
 
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...QAware GmbH
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.QAware GmbH
 
Per Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysPer Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysQAware GmbH
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionQAware GmbH
 
Technologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von CitrixTechnologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von CitrixDigicomp Academy AG
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Josef Adersberger
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?QAware GmbH
 
Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...
Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...
Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...Univention GmbH
 
Migration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud PlattformMigration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud PlattformQAware GmbH
 
Der Weg von API First zur Cloud Initiative
Der Weg von API First zur Cloud InitiativeDer Weg von API First zur Cloud Initiative
Der Weg von API First zur Cloud InitiativeMichael Frembs
 
50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdfQAware GmbH
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sQAware GmbH
 

Ähnlich wie Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017 (20)

A Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native StackA Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native Stack
 
Der Cloud Native Stack in a Nutshell
Der Cloud Native Stack in a NutshellDer Cloud Native Stack in a Nutshell
Der Cloud Native Stack in a Nutshell
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue Normal
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen Evolution
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Cloud Konzepte und Strategien
Cloud Konzepte und StrategienCloud Konzepte und Strategien
Cloud Konzepte und Strategien
 
Cloud Computing ­- eine Revolution? by Hartmut Streppel
Cloud Computing ­- eine Revolution? by Hartmut StreppelCloud Computing ­- eine Revolution? by Hartmut Streppel
Cloud Computing ­- eine Revolution? by Hartmut Streppel
 
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
Cloud Native Migration: Wie IT-Landschaften ihren Weg auf eine Cloud-Native-P...
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Per Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API GatewaysPer Anhalter zu Cloud-nativen API Gateways
Per Anhalter zu Cloud-nativen API Gateways
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen Evolution
 
Technologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von CitrixTechnologien 2011 Einblick in die Zukunft von Citrix
Technologien 2011 Einblick in die Zukunft von Citrix
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
 
Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...
Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...
Enterprise-IT in the multi and hybrid cloud area (Steve Janata, COO Crisp-Res...
 
Migration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud PlattformMigration von Aftersales Systemen auf eine Cloud Plattform
Migration von Aftersales Systemen auf eine Cloud Plattform
 
Der Weg von API First zur Cloud Initiative
Der Weg von API First zur Cloud InitiativeDer Weg von API First zur Cloud Initiative
Der Weg von API First zur Cloud Initiative
 
50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf
 
Peter Hanke (Netapp Austria)
Peter Hanke (Netapp Austria)Peter Hanke (Netapp Austria)
Peter Hanke (Netapp Austria)
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
 

Mehr von Mario-Leander Reimer

Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.Mario-Leander Reimer
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEMario-Leander Reimer
 
Steinzeit war gestern! Die vielfältigen Wege der Cloud-nativen Evolution
Steinzeit war gestern! Die vielfältigen Wege der Cloud-nativen EvolutionSteinzeit war gestern! Die vielfältigen Wege der Cloud-nativen Evolution
Steinzeit war gestern! Die vielfältigen Wege der Cloud-nativen EvolutionMario-Leander Reimer
 
Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....
Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....
Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....Mario-Leander Reimer
 
Das kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecDas kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecMario-Leander Reimer
 
Polyglot Adventures for the Modern Java Developer #javaone2017
Polyglot Adventures for the Modern Java Developer #javaone2017Polyglot Adventures for the Modern Java Developer #javaone2017
Polyglot Adventures for the Modern Java Developer #javaone2017Mario-Leander Reimer
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayMario-Leander Reimer
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconMario-Leander Reimer
 
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPLA Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPLMario-Leander Reimer
 
Everything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPLEverything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPLMario-Leander Reimer
 
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17Mario-Leander Reimer
 
Everything-as-code. Ein polyglottes Abenteuer. #jax2017
Everything-as-code. Ein polyglottes Abenteuer. #jax2017Everything-as-code. Ein polyglottes Abenteuer. #jax2017
Everything-as-code. Ein polyglottes Abenteuer. #jax2017Mario-Leander Reimer
 
Everything-as-code. Eine vielsprachige Reise. #javaland
Everything-as-code. Eine vielsprachige Reise. #javalandEverything-as-code. Eine vielsprachige Reise. #javaland
Everything-as-code. Eine vielsprachige Reise. #javalandMario-Leander Reimer
 
Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017
Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017
Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017Mario-Leander Reimer
 
Secure Architecture and Programming 101
Secure Architecture and Programming 101Secure Architecture and Programming 101
Secure Architecture and Programming 101Mario-Leander Reimer
 
Automotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrAutomotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrMario-Leander Reimer
 
Automotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrAutomotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrMario-Leander Reimer
 
Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.Mario-Leander Reimer
 
Lightweight Developer Provisioning with Gradle
Lightweight Developer Provisioning with GradleLightweight Developer Provisioning with Gradle
Lightweight Developer Provisioning with GradleMario-Leander Reimer
 

Mehr von Mario-Leander Reimer (20)

Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Vielfältige Wege der Cloud-nativen Evolution.
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
Steinzeit war gestern! Die vielfältigen Wege der Cloud-nativen Evolution
Steinzeit war gestern! Die vielfältigen Wege der Cloud-nativen EvolutionSteinzeit war gestern! Die vielfältigen Wege der Cloud-nativen Evolution
Steinzeit war gestern! Die vielfältigen Wege der Cloud-nativen Evolution
 
Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....
Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....
Everything-as-code: DevOps und Continuous Delivery aus Sicht des Entwicklers....
 
Das kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSecDas kleine Einmaleins der sicheren Architektur @heise_devSec
Das kleine Einmaleins der sicheren Architektur @heise_devSec
 
Polyglot Adventures for the Modern Java Developer #javaone2017
Polyglot Adventures for the Modern Java Developer #javaone2017Polyglot Adventures for the Modern Java Developer #javaone2017
Polyglot Adventures for the Modern Java Developer #javaone2017
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
 
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPLA Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
 
Everything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPLEverything-as-code. A polyglot adventure. #DevoxxPL
Everything-as-code. A polyglot adventure. #DevoxxPL
 
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
 
Everything-as-code. Ein polyglottes Abenteuer. #jax2017
Everything-as-code. Ein polyglottes Abenteuer. #jax2017Everything-as-code. Ein polyglottes Abenteuer. #jax2017
Everything-as-code. Ein polyglottes Abenteuer. #jax2017
 
Everything-as-code. Eine vielsprachige Reise. #javaland
Everything-as-code. Eine vielsprachige Reise. #javalandEverything-as-code. Eine vielsprachige Reise. #javaland
Everything-as-code. Eine vielsprachige Reise. #javaland
 
Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017
Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017
Everything as-code. Polyglotte Entwicklung in der Praxis. #oop2017
 
Secure Architecture and Programming 101
Secure Architecture and Programming 101Secure Architecture and Programming 101
Secure Architecture and Programming 101
 
Automotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrAutomotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache Solr
 
Automotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache SolrAutomotive Information Research driven by Apache Solr
Automotive Information Research driven by Apache Solr
 
Kubernetes 101 and Fun
Kubernetes 101 and FunKubernetes 101 and Fun
Kubernetes 101 and Fun
 
Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.Everything-as-code. A polyglot journey.
Everything-as-code. A polyglot journey.
 
Lightweight Developer Provisioning with Gradle
Lightweight Developer Provisioning with GradleLightweight Developer Provisioning with Gradle
Lightweight Developer Provisioning with Gradle
 

Per Anhalter durch den Cloud Native Stack (Extended Edition) #oop2017

  • 1. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware PER ANHALTER DURCH DEN CLOUD NATIVE STACK 1
  • 2. Mario-Leander Reimer Cheftechnologe Kontakt Mail: mario-leander.reimer@qaware.de Twitter: @LeanderReimer • Vollblut Entwickler && Architekt • #CloudNativeNerd • Open Source Enthusiast
  • 3. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Let’s talk about Cloud Native Applications 3
  • 4. #GIFEE Google’s (and Facebook’s, Twitter’s, Airbnb’s, ...) Infrastructure For Everyone Else
  • 5. CONTINUOUS
 DELIVERY & DEVOPS ANTIFRAGILITY HYPERSCALE 
 TRAFFIC, DATA, FEATURES OPEX SAVINGS
 (automation & utilization) CLOUD NATIVE APPLICATIONS DISRUPTINDUSTRIALIZE
  • 6. PACKAGED AND DISTRIBUTED AS CONTAINERS BUILD AND COMPOSED AS MICROSERVICES DYNAMICALLY EXECUTED IN THE CLOUD CLOUD NATIVE APPLICATIONS 3KEYPRINCIPLES
  • 7. „There ain’t no such thing as a free lunch.“ Robert A. Heinlein, 1966, The Moon Is a Harsh Mistress
  • 8. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Die 5 Gebote der Cloud. 1. Everything Fails All The Time. 2. Focus on MTTR and not on MTTF. 3. Know the Eight Fallacies of Distributed Computing. 4. Scale out, not up. 5. Treat resources as cattle, not pets. 8
  • 9. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Design Prinzipien Cloud-nativer Anwendungen • Design for Performance: responsive; concurrency; efficiency. • Design for Automation: automate dev tasks & ops tasks. • Design for Resiliency: fault-tolerant; self-healing. • Design for Elasticity: dynamically scale; be reactive. • Design for Delivery: short roundtrips; automated delivery. • Design for Diagnosability: cluster-wide logs, traces, metrics. 9
  • 10. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Maturity Model Cloud-nativer Anwendungen 10 https://www.opendatacenteralliance.org/docs/architecting_cloud_aware_applications.pdf Level 0: Virtualized Level 1: Loosely Coupled Level 2: Abstracted Level 3: Adaptive Cloud Native - Skaliert elastisch abhängig von Stimuli. - Dynamische Migration auf andere Infrastruktur
 ohne eine Service Downtime. Cloud Resilient - Fehler-tolerant und resilient entworfen. - Metriken und Monitoring eingebaut. - Runs anywhere. Infrastruktur agnostisch. Cloud Friendly - Besteht aus lose gekoppelten Diensten. - Dienste können über Namen gefunden werden. - 12-Factor App Principles. Cloud Ready - Keine Anforderungen an das Datei-System. - Läuft auf virtualisierter Hardware. - Self-contained, kann als Image ausgeführt werden.
  • 11. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Die Anatomie des Cloud Native Stack 11 Application Platform Cloud Native App Cluster Orchestrator Applications Cluster Scheduler Containers Cluster Virtualization Resources Cluster Operating System Entkoppelt von physischer Hardware. Verwaltet Ressourcen für die Ausführung von Containern Führt Applikationen auf dem Cluster aus. Stellt Ablauf- Umgebung und APIs für Apps bereit.
  • 12.
  • 13. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Cloud Native Stack mit Spring Cloud und K8S. 13 Application Platform Cloud Native App Cluster Orchestrator Applications Cluster Scheduler Containers Cluster Virtualization Resources
  • 14. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Orchestration Composition Die 4 Schritte zur Cloud-nativen Anwendung 1. MICROSERVICES 2. CONTAINERIZATION 3. COMPOSITION 4. ORCHESTRATION 14 Containerization Microservices docker compose
  • 15. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware MICROSERVICES 15
  • 16. 3
  • 17. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware 2002 17 Items Registration Buying
  • 18. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware 2008 18 Additional Services
  • 19. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware 2011 19 Additional Services
  • 20. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Bad News. 20 § “[…] it was unable to scale for 6 million pageviews per minute and was down for most of the day during peak events.” § “This is the multi-million dollar question which the IT Department of Walmart Canada had to address after they were failing to provide to their users on Black Fridays for two years in a row.” https://blog.risingstack.com/how-enterprises-benefit-from-microservices-architectures Walmart auf http://www.oneops.com Sehr lange Release-Zyklen Mangelnde Skalierbarkeit
  • 21. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware 2016 21 Additional Services
  • 22. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Good News. 22 Walmart auf http://www.oneops.com “They wanted to prepare for the world by 2020, with 4 billion people connected, 25+ million apps available, and 5.200 GB of data for each person on Earth. Walmart replatformed […] with the intention of achieving close to 100% availability with reasonable costs.” https://blog.risingstack.com/how-enterprises-benefit-from-microservices-architectures § “In fact, the organization reports thatsome 3,000 engineers […] drive 30,000 changes per month to Walmart software.” § “Those new applications,which span everything from mobile devices to the Internet of things (IoT), are crucial weapons in a global e-commerce contest that pits Walmart againstthe likes of Amazon and Alibaba,as well as a host of other rivals that are emerging as the cost of entry into the online retail sector continues to decline in the age of the API economy.” http://www.baselinemag.com/enterprise-apps/walmart-embraces-microservices-to-get- more-agile.html § “The Walmart […] servers […] were able to handle all mobile Black Friday traffic with about10 CPU cores and 28Gb RAM.” § “On Thanksgiving weekend,Walmartservers processed 1.5 billion requests per day. 70 percent of which were delivered through mobile.” http://techcrunch.com/2014/12/02/walmart-com-reports-biggest-cyber-monday-in- history-mobile-traffic-at-70-over-the-holidays 1000 deployments a day … … triggered by dev teams. ~ 100% availability Resource efficiency Suitable scalability Enabled new kinds of applications ( IoT, mobile, APIs) to compete globally
  • 24. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Die Antwort: Dekomposition. 24
  • 25. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware • Planning unit • Team assignment unit • Development unit • Integration unit Komponenten entlang des Software-Lebenszyklus 25 DESIGN BUILD RUN Design Components Dev Components Ops Components • Complexity unit • Data integrity unit • Cohesive feature unit • Decoupled unit • Release unit • Deployment unit • Runtime unit • Scaling unit ?:11:1
  • 26. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware26 System Subsystem Komponenten Services Monolith Macroservices Microservices Nanoservices Good starting point Dev Components Ops Components?:1 Decomposition Trade-Offs + More flexible to scale + Runtime isolation (crash, slow-down, …) + Independent releases, deployments, teams + Higher resources utilisation - Distribution debt: Latency - Increased infrastructure complexity - Increased troubleshooting complexity - Increased integration complexity
  • 27. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Zwitscher Microservice in 10 Minuten 27 Zwitscher Controller Zwitscher Repository /tweets ZwitscherServiceApp search(…)
  • 28. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware CONTAINERIZATION 28
  • 29. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware $ docker build -t zwitscher-service:1.0.1 . $ docker run --name zwitscher-service -d -p 8080:8080 zwitscher-service:1.0.1 $ docker tag zwitscher-service:1.0.1 hitchhikersguide/zwitscher-service:latest $ docker push hitchhikersguide/zwitscher-service Der Containerization Workflow mit Docker 29 3. Tag & Push 2. Run Dockerfile 1. Build
  • 30. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Beispiel Dockerfile für Zwitscher Service 30 FROM qaware/alpine-k8s-ibmjava8:8.0-3.10
 MAINTAINER QAware GmbH <qaware-oss@qaware.de>
 
 RUN mkdir -p /app
 
 COPY build/libs/zwitscher-service-1.0.1.jar /app/zwitscher-service.jar
 COPY src/main/docker/zwitscher-service.conf /app/
 
 EXPOSE 8080
 CMD /app/zwitscher-service.jar
  • 31. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Wichtige Tips für den Umgang mit Docker • Kenne dein Base-Image! Auf die Größe kommt es an. • Ein Docker Build muss wiederholbar sein. • Jeder RUN Befehl erzeugt ein Layer. Nutze Mehrfachbefehle! • Entferne temporäre Dateien. • Veröffentliche wichtige Ports mit EXPOSE. • Definiere Umgebungs-Variablen für wichtige Parameter. • Nutze ein Image für alle Umgebungen. • Versioniere deine Images. • Verwende Tools zur QS von Dockerfiles und Images. 31
  • 32. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware COMPOSITION 32
  • 33. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware33 Cluster-weite Konfiguration und Konsensus Überwachung und Fehler-Diagnose Geregelter Zugriff 
 auf Service 
 Endpoints von Außen Registrierung und Suche von Service Endpoints Laufzeit-Umgebung für Service Endpoints Resistenter Aufruf von anderen Service Endpoints
  • 34. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware34 Zwitscher Controller Zwitscher Repository /tweets ZwitscherServiceApp /zwitscher-service/* Discovery Configure Actuator /admin/health Register Read K/V Get Services /prometheus
  • 35. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Beispiel docker-compose.yml 35 version: '2' services: zwitscher-consul: ... zwitscher-traefik: ... zwitscher-service: image: hitchhikersguide/zwitscher-service:1.0.1 environment: - CONSUL_HOST=zwitscher-consul - CONSUL_PORT=8500 - TWITTER_APP_ID=${TWITTER_APP_ID} - TWITTER_APP_SECRET=${TWITTER_APP_SECRET} depends_on: - zwitscher-consul links: - zwitscher-consul ports: - "8080:8080" networks: - zwitscher-net $ docker-compose -p zwitscher up -d $ docker-compose -p zwitscher ps $ docker-compose -p zwitscher logs -f $ docker-compose -p zwitscher down docker compose
  • 36. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware ORCHESTRATION 36
  • 37. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware37 zwitscher-traefik Kubernetes DNS zwitscher-consul zwitscher-service Manage Manage Manage Resolve Ops
  • 38. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Einfaches K8S Setup in der Cloud oder Lokal 38 echo "- Use Vagrant for local K8s setup" export KUBERNETES_PROVIDER=vagrant export NUM_NODES=1 echo "- The default provider is GCE" export KUBERNETES_PROVIDER=gce export KUBE_GCE_ZONE=europe-west1-d export NUM_NODES=4 echo "- Another possible provider is AWS" export KUBERNETES_PROVIDER=aws export KUBE_AWS_ZONE=eu-central-1a export NODE_SIZE=t2.small curl -sS https://get.k8s.io | bash Minikube
  • 39. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Die Kubernetes Bausteine im Überblick 39 Master Minion API Server Controller Manager Scheduler etcd kubelet kube-proxy Container Engine
 (Docker / rkt) PodPodPod C1 … Cn Users Admin
  • 40. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Die wichtigsten K8S Konzepte und Begriffe • Services sind eine Abstraktion für eine logische Sammlung von Pods • Pods sind die kleinste deploybare Compute Einheit in K8S • Deployments dienen der Deklaration von Pods, Volumes und RCs • Replica Sets stellen die geforderte Anzahl an Replicas sicher • Labels sind Key/Value Paare die zur Identifikation verwendet werden 40 Deployment Service Replica Set 
 Pod Container Container DNS Name Labels:<K,V> Port Volume
  • 41. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Kubernetisierung: Single oder Multi-Container Pod? POD DeploymentPOD Deployment 41 POD Deployment POD Deployment POD Deployment ZWITSCHER-BOARD ZWITSCHER-TRAEFIK ZWITSCHER-CONSUL ZWITSCHER-MONITORZWITSCHER-SERVICE Service Service Service Service Service
  • 42. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Deployment Definition für Zwitscher Service 42 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: zwitscher-service spec: replicas: 3 template: metadata: labels: zwitscher: service spec: containers: - name: zwitscher-service image: "hitchhikersguide/zwitscher-service:1.0.1" ports: - containerPort: 8080 env: - name: CONSUL_HOST value: zwitscher-consul
  • 43. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware K8s Service Definition pro Deployment 43 apiVersion: v1 kind: Service metadata: name: zwitscher-service labels: zwitscher: service spec: # use NodePort here to be able to access the port on each node # use LoadBalancer for external load-balanced IP if supported type: NodePort ports: - port: 8080 selector: zwitscher: service
  • 44. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Vorsicht bei Definition von Resource Constraints 44 resources: # Define resources to help K8S scheduler # CPU is specified in units of cores # Memory is specified in units of bytes # required resources for a Pod to be started requests: memory: "128Mi" cpu: "250m" # the Pod will be restarted if limits are exceeded limits: memory: "192Mi" cpu: "500m"
  • 45. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Liveness und Readiness Probes über Actuator 45 # container will receive requests if probe succeeds readinessProbe: httpGet: path: /admin/info port: 8080 initialDelaySeconds: 30 timeoutSeconds: 5 # container will be killed if probe fails livenessProbe: httpGet: path: /admin/health port: 8080 initialDelaySeconds: 90 timeoutSeconds: 10
  • 46. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Aufbau einer K8S-only Deployment Variante. 46 zwitscher-service Manage Manage Ops zwitscher-board Ingress DNS ConfigMap
  • 47. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Auch der Spaß kommt nicht zu kurz. • Standard MIDI Controller • Visualisiert Deployments und Pods • Skaliert Deployments • Funktioniert auch für DC/OS • http://github.com/qaware/kubepad/ 47
  • 48.
  • 49. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Keine Magie. Aber komplexe Technologie. • Building Distributed Systems is hard! • Der Cloud Native Stack macht die Komplexität beherrschbar. • Die hohe Abstraktion ist Segen und Fluch zugleich. • Entwickler und Architekten brauchen zusätzliche Skills und Know- How in etlichen neuen Technologien. 49
  • 50. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware Code und Artikel zum Nachlesen unter … • https://github.com/qaware/hitchhikers-guide-cloudnative • Der Cloud Stack: Mesos, Kubernetes und Spring Cloud 
 https://goo.gl/U5cJAU • Spring Cloud und Netflix OSS: Cloud-native Anwendungen bauen
 https://goo.gl/edNlUK • Cloud-native Anwendungen mit Kubernetes
 https://goo.gl/dVkoyR • Eine Einführung in Apache Mesos: Das Betriebsystem der Cloud
 https://goo.gl/7SnMZA 50
  • 51. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware51 CompletableFuture<SoftwareArchitektIn> ich = CompletableFuture.supplyAsync(() -> erfindergeist() .handwerksstolz() ); CompletableFuture<Projekthaus> qaware = CompletableFuture.supplyAsync(() -> professionalität() .lässigkeit() ); Erfolg start = qaware.thenCombine(ich, (i, q) -> i.sendeBewerbung(q)) .join(); Weiter Details unter http://www.qaware.de/karriere/#jobs
  • 52. | OOP 2017 | A Hitchhiker’s Guide to the Cloud Native Stack | @adersberger @LeanderReimer #cloudnativenerd #qaware 42. THE ANSWER TO LIFE, UNIVERSE, THE CLOUD AND EVERYTHING. 52