„Cloud is the new Normal”, so Andrew R. Jassy (CIO AWS). Was also liegt näher, als genau jetzt den Schritt in die Cloud zu wagen? Denn schließlich wollen wir ja alle irgendwie ein klein wenig „normal“ sein. Aber ist dieser Schritt wirklich so einfach, wie uns die verschiedenen Cloudanbieter glauben machen? Lässt sich eine klassische Enterprise-Architektur einfach so in die Cloud überführen oder bedarf es neuer Cloud-spezifischer Architekturmuster? Wie kann uns das Cloud Maturity Model dabei helfen? Und was steckt eigentlich hinter Akronymen wie IaaS, PaaS, BaaS, SaaS und FaaS?
Im Rahmen des Worskhops werde ich eine klassische Enterprise Anwendung Schritt für Schritt in die Cloud migrieren und dabei die verschiedenen Stufen / Reifegrade des Cloud Maturity Models durchlaufen. Angefangen bei "Lift & Shift" bis hin zu "Cloud Native" und "Cloud Voodoo – aka Serverless".
2. DISCLAIMER
By cloud, we mean any computing environment
in which computing, networking, and storage
resources can be provisioned and released
elastically in an on-demand, self-service
manner.*
“
* public and private/cooperate cloud Infrastructure
(Matt Stine, CTO Software Architecture, Pivotal.)
6. From idea to App
The biggest advantage of a cloud(-native)
architecture is that it takes you from idea
to app in the quikest possible time.
“
(Pavan Belagatti, Groth Marketing Manager, jfrog)
21. Road to the Cloud
Running applications on the cloud is not a
binary decision. You don‘t just move to the
cloud and call it a day.
“
(Paul Fremantle, VP Product Engineering at Weaveworks)
22. Systems for the Cloud
For systems behave well on the cloud,
they need to be written for the cloud.*
“
(Paul Fremantle, VP Product Engineering at Weaveworks)
* Applications vs. Software-as-a-Service
24. … but want to be here!
Cloud Native
You are here
…
On Premise
?
Road to the Cloud
25. … or maybe here!
Cloud Native
00
01
02
03
04
Das Cloud-Maturity Model
… or there?
Cloud Friendly
But you want to be here …
Cloud Resilient
… or maybe here ..
Cloud Ready
You are here …
On Premise
36. 00
No-Cloud
aka „WTF“
*WTF = waste the future
Legacy Apps von Client-Server bis 3-Tier auf „bare metal“
getrennte Entwicklungs- und Operation-Teams
keine zentrale IT Governance
keine zentrale IT Innovationsstrategie
kaum bis keine Automatisierung
60. „Kling soweit echt gut. Aber
wie bekomme ich meine
Anwendung in die Cloud?“
61. „Das ist ganz einfach:
• EC2 Instanz provisionieren
• App in Container
• Container in Registry
• Container auf Cloud-Instanz
• Zugriff auf Cloud-Instanz
75. „Das sind dann aber immer
recht große Deployments
durch das FAT JAR, oder?
76. „Das stimmt, daher arbeitet
man auch eher mit Layern*:
• App JAR
• App Dependencies JARs
• Server Hollo JAR
• JRE
• OS
*Don't Put Fat Jars in Docker Images:
https://phauer.com/2019/no-fat-jar-in-docker-image/
84. Warum ein Cloud Filesystem*?
• virtuelles Filesystem für beliebige Cloud Ressourcen (Art & Anzahl)
• Zugriff via On-Premises Server und EC2 Instanzen
• einfache, „sekundenschnelle“ Provisionierung (UI, CLI, API)
• dynamische Elastizität in beide Richtungen ohne Ausfallzeiten
• hoher Durchsatz / geringe Latenz unabhängig von der Größe
• AZ-übergreifende Datenbereitstellung
• Zahlmodell Pay-per-User berücksichtigt tatsächlich Nutzung
• Support von Serverless (AWS Lambda)
*Amazon Elastic File Service (EFS)
85. Alternativen zum Cloud Filesystem?
Simple Storage Service (S3)
• Object Store für „User Files“
• jedes Objekt hat eindeutigen Identifier
• automatische Versionierung inkl. Rollback
• programmativer und servicebasierter Zugriff
• Static Web Hosting Support
• hohe Data-Durability (99.999999999% aka „eleven nines“)
• Reliable Disaster Recovery via Cross-Region Replikation
86. Alternativen zum Cloud Filesystem?
Elastic Block Storage (EBS)
• Daten werden in gleich großen Blöcken gespeichert
• Provisionierung und Zuweisung zu EC2 Instanz via Size/Blöcken*
• optimierte Performanz durch 1:1 Beziehung
• schnelles Up- und Down-Scaling möglich
• Hochverfügbarkeit via Redundanz in AZs
• Snapshot für Data Backup und Region Duplicates
*vergleichbar mit der lokalen Disk einer physikalischen Machine
87. Alternativen zum Cloud Filesystem?
Amazon EBS vs EFS vs S3
https://www.missioncloud.com/blog/resource-amazon-ebs-vs-efs-vs-s3-
picking-the-best-aws-storage-option-for-your-business
Confused by AWS Storage Options?
https://dzone.com/articles/confused-by-aws-storage-options-
s3-ebs-amp-efs-explained
88. Warum ein Cloud RDBMS*?
• einfache, „sekundenschnelle“ Provisionierung (UI, CLI, API)
• manuelle oder automatische Skalierung ohne Ausfallzeiten
• Read Replica zur Entlastung der „Hauptinstanz“
• synchronisierte Standby Instanz via Multi-AZ-DB Instanzen
• verbrauchsorientierte Kosten
• zugriffsgesteuerte Sicherheit via Virtual Private Cloud
• PostgeSQL, MySql, MariaDB, Oracle DB, MS SQL Server, Amazon Aurora
*Amazon Relational Database Service (RDS)
89. Alternativen zu Cloud RDBMS?
NoSQL Database (dynamoDB)
• Key-Value und –Document DB
• konsistente Zugriffszeit im Bereich von Millisekunden
• > 10 Milliarden Zugriffe / Tag
• > 20 Millionen Zugriffe / Sekunde
• automatische Skalierung auf Tabellenebene
• Automatische Sicherung inkl. Recovery
90. Alternativen zu Cloud RDBMS?
In-Memory DB (ElastiCache)
• Key-Value in-Memory Store
• Zugriffszeiten unterhalb von Millisekunden für „Real-Time“ Use Cases
• zwei Varianten (Memcached / Redis API kompatibel)
91. Alternativen zu Cloud RDBMS?
RDS vs Redshift vs DynamoDB vs SimpleDB:
https://www.msp360.com/resources/blog/aws-database-services-
complete-overview-rds-vs-redshift-vs-dynamodb-vs-simpledb/
Amazon RDS vs DynamoDB:
https://digitalcloud.training/amazon-rds-vs-dynamodb/
92. Warum ein Cloud Message Broker*?
• einfache, „sekundenschnelle“ Provisionierung (UI, CLI, API)
• Unterstützung der Standard APIs (JMS, NMS, AMQP, STOMP, MQTT, WebSocket)
• einfache und schnelle Migration durch Aktualisieren der Endpunkte
• hohe Verfügbarkeit via Reliable Messages verteilt auf mehrere AZs
• Apache ActiveMQ, RabbitMQ
*Amazon MQ
93. Alternativen zum Cloud Message Broker?
Simple Queue Service (SQS)
• Hochverfügbarer, skalierbarer Queue Service*
• keine zusätzliche MQ Software notwendig
• Standard- und FIFO-Warteschlange
• je Nachricht mehrere Kopien in mehreren AZs
• verschlüsselte Nachrichten via Integration von AWS Key Management
• Zahlmodell Pay-per-User berücksichtigt tatsächlich Nutzung
*nur Queues, keine Topics – d.h. nur ein Abnehmer
94. Alternativen zum Cloud Message Broker?
Simpe Notification Service (SNS)
• Pub/Sub Notification an (AWS) Systeme & Personen
• Push über einen Endpunkt an beliebige Plattformen
• SMS, Mobile Push (Apple, Android, et al), eMail
• zuverlässige Nachrichtenzustellung (Notification Storage, Retry Policy, DLQ)
• Standard- und FIFO-Themen
95. Alternativen zum Cloud Message Broker?
Amazon SQS vs SNS
https://wisdomplexus.com/blogs/amazon-sqs-vs-sns/
AWS - Difference between SQS and SNS
https://medium.com/awesome-cloud/aws-difference-between-
sqs-and-sns-61a397bf76c5
97. Die 6 Cloud-Versprechen
1. einfacheres Management
2. schnellere Releases
3. verbesserte Kosteneffizienz
4. mehr Zuverlässigkeit/Sicherheit
5. beliebige Skalierbarkeit
6. besseres Kundenerlebnis
BTW: keine Lock-In Effekte mehr*
98. Die 6 Cloud-Versprechen
1. einfacheres Management
2. schnellere Releases
3. verbesserte Kosteneffizienz
4. mehr Zuverlässigkeit/Sicherheit
5. beliebige Skalierbarkeit
6. besseres Kundenerlebnis
BTW: keine Lock-In Effekte mehr*
99. Next Level EPICs
1. Automatisieren der Skalierung
2. Verbessern der Verfügbarkeit
3. Optimieren des Deployments
4. Nutzen weiterer Cloud Plattform Services*
* nice to have
103. Eine Codebase
Explizite Abhängigkeiten
Konfiguration via EnvVars
Unterstützende Dienste
Build, Release, Run
Stateless Prozesse
Bindung an Ports
Nebenläufigkeit
Elastizität & Verfügbarkeit
Dev-Prod Vergleichbarkeit
Logs als Streams
Admin-Prozesse
VII.
VIII.
IX.
X.
XI.
XII.
I.
II.
III.
IV.
V.
VI.
104. Eine Codebase
Explizite Abhängigkeiten
Konfiguration via EnvVars
Unterstützende Dienste
Build, Release, Run
Stateless Prozesse
Bindung an Ports
Nebenläufigkeit
Elastizität & Verfügbarkeit
Dev-Prod Vergleichbarkeit
Logs als Streams
Admin-Prozesse
VII.
VIII.
IX.
X.
XI.
XII.
I.
II.
III.
IV.
V.
VI.
APP
DESIGN
MANAGE
BUILD &
RELEASE
116. „Ok, und wie bekomme ich
meine 12-factor App
in die Cloud und dort dann
automatisch skaliert etc.?“
117. „Auch das ist recht einfach:
• App in Container
• Container in Cloud-Registry
• Zielbild deklarativ beschreiben
• und dann ab in den Managed
Container Service
124. DEVOPS
Elastic Container Regesty
Elastic Container Service
ok-forum via ECS - Step 04:
ECS Service definieren
(referenziert 1:1 auf Task Def)
ok/forum:2.0
Task
Cluster
Service
125. DEVOPS
Elastic Container Regesty
Elastic Container Service
ok-forum via ECS - Step 05:
ECS Service starten
(startet Container im Cluster)
ok/forum:2.0
Task
Cluster
Service
126. DEVOPS
Elastic Container Regesty
Elastic Container Service
ok-forum via ECS – Step 06:
Elastic Load Balancer
(optional)
Task
Service
Cluster
API v2.0
ok/forum:2.0
Load
Balancer
127. DEVOPS
Elastic Container Regesty
Elastic Container Service
ok-forum via ECS – Step 07:
Cluster starten
(passiert automatisch)
Task
Service
Cluster
API v2.0
ok/forum:2.0
Load
Balancer
128. DEVOPS
Elastic Container Regesty
Elastic Container Service
ok-forum via ECS:
Cluster monitoren
(e.g. via CloudWatch)
Task
Service
Cluster
API v2.0
ok/forum:2.0
Cluster, Service & Task Status
CPU & Memory Utilization
138. Warum ein Cloud Archive Service*?
• kostengünstig(er)
• 99,999999999 Data Durability via autom. Verteilung auf mind. drei AZ
• CloudTrail Integration zur Protokollierung zwecks Auditing
• 4+ verschiedende Abrufklassen
• Active Archive (1-5 Minuten)
• Standard (3-5 Stunden)
• Mass Data (5-12 Stunden)
• Deep Archive (12 – 48 Stunden)
*S3 Glacier & S3 Glacier Deep Archice
141. Warum ein Cloud IAM & User Mgmnt?
• Verwaltung von AWS-Benutzern und Nutzergruppen
• detaillierte Zugriffssteuerung für AWS-Services & Ressourcen
• Zugriffspläne und Zugriffsanalysen (z.B. least privilege)
• Active Directory Integration
• Verwaltung von App-Benutzern und Nutzerpools
• Registrierungs- und Anmelde-Flows
• Oauth 2.0 , SAML 2.0 , OpenID Connect
• 3rd Party (Apple, Facebook, Google und Amazon)
IAM
Cognito
146. Die 6 Cloud-Versprechen
1. einfacheres Management
2. schnellere Releases
3. verbesserte Kosteneffizienz
4. mehr Zuverlässigkeit/Sicherheit
5. beliebige Skalierbarkeit
6. besseres Kundenerlebnis
BTW: keine Lock-In Effekte mehr*
147. Die 6 Cloud-Versprechen
1. einfacheres Management
2. schnellere Releases
3. verbesserte Kosteneffizienz
4. mehr Zuverlässigkeit/Sicherheit
5. beliebige Skalierbarkeit
6. besseres Kundenerlebnis
BTW: keine Lock-In Effekte mehr*
148. Next Level EPICs
1. Überwachen des Systemzustands*
2. Überwachen der System-KPIs**
3. Proaktives verhindern von Fehlzuständen
4. Autom. reagieren auf Fehlzustände
* „Ist mein System gesund?“
** „Reagiert mein System wie erwartet?“
151. Ensure fault tolerance
Build without taking steps to ensure fault
tolerance, 30 dependencies each with 99.99%
uptime would result in 2+ hours downtime per
month.
“
(netflix Techblog)
158. „Du bekommst bereits etliche
HCs & Metriken automatisch.
Zusätzlich kannst du eigene
erstellen, einbinden und
natürlich überwachen:
• Alarm -> Notification
• Notification -> Action*
*e.g. trigger Auto Scaling Policy
159. DEVOPS
Elastic Container Regesty
Elastic Container Service
ok-forum via ECS:
Cluster monitoren
(e.g. via CloudWatch)
Task
Service
Cluster
API v2.0
ok/forum:2.0
Cluster, Service & Task Status
CPU & Memory Utilization
160. DEVOPS
CloudWatch
Elastic Container Service
ok-forum via ECS:
Cluster monitoren
(e.g. via CloudWatch)
Cluster
API v2.0
Status: Cluster, Service, Task
Metrics: Cpu, Memory
Logs
Alarm Synthetics
Rules
myHealth: Container, App
myMetrics: Functional, Business
163. DEVOPS
CloudWatch
Elastic Container Service
ok-forum via ECS:
Cluster monitoren
(e.g. via CloudWatch)
Cluster
API v2.0
Logs
Alarm Synthetics
Rules
trigger action, e.g. restart or scale tasks
HC & Metrics
(1x minute)
170. Die 6 Cloud-Versprechen
1. einfacheres Management
2. schnellere Releases
3. verbesserte Kosteneffizienz
4. mehr Zuverlässigkeit/Sicherheit
5. beliebige Skalierbarkeit
6. besseres Kundenerlebnis
BTW: keine Lock-In Effekte mehr*
171. Die 6 Cloud-Versprechen
1. einfacheres Management
2. schnellere Releases
3. verbesserte Kosteneffizienz
4. mehr Zuverlässigkeit/Sicherheit
5. beliebige Skalierbarkeit
6. besseres Kundenerlebnis
BTW: keine Lock-In Effekte mehr*
172. Next Level EPICs
1. Erhöhen der Unabhängigkeit*
2. Flexibilisieren der Skalierung
3. Ausweiten der (API) Nutzung
4. Vermindern der Provider-Abhängigkeit
* gilt für Entwicklung, Test und Laufzeit
202. … and you are here now!
Cloud Native
00
01
02
03
04
Congratulations!
You came from here …
On Premise
203. … and you are here now!
Cloud Native
00
01
02
03
04
But … ?
You came from here …
On Premise
aka “functions as a service”
aka “Serverless”
Cloud Voodoo
227. Mut und Willen zur Veränderung
Technologie
• fachliches Splitten der Monolithen
• fachliches Splitten der Daten
• Einführung von Containerisierung
• leichtgewichtige Prozesse*
*Choreographie wenn möglich, Orchestrierung wenn nötig
228. Mut und Willen zur Veränderung
Organisation
• Einführung Business Capability Teams
• Einführung Platform Operation Team
229. Mut und Willen zur Veränderung
Kultur
• DevOps vs Silos
• Continuous Delivery vs Releases
• Autonomie vs Governance*
• Fault Tolerant vs Static Systems
*gilt für Micro Architektur, nicht für Marco Architektur