Moderne Software Architekturen
im Cloud Native Context

Speaker
Alexander Troppmann
Senior Software Craftsman
- Agile Software Developer
- Web Solutions Architect
- Backend & Frontend
- Kubernetes & DevOps


6376 5011
Mentimeter
Wenn du ”Cloud Native” hörst, woran denkst du dann zuerst?
app.mentimeter.input("6376 5011");
Mentimeter
Seid ihr bereits auf einer der bekannten großen Cloud Plattformen wie AWS, Google oder Azure unterwegs?
app.mentimeter.input("6376 5011");
Was ist Cloud Native Computing?

Programmiersprachen
- Typischer Stack zur Umsetzung von Web Applications:
- HTML, CSS
- JavaScript / TypeScript
- Node.js
- .Net
- Go
- PHP
- Python
- Ruby
- Stichwort: ”polyglotte” Services

Elastizität
- Lastspitzen durch zusätzliche Ressourcen abfangen
- Workload verteilt sich auf mehrere Service-Instanzen
- Load Balancing:
-
- System Level
- Auto-Scaler für Hosts und Service Instanzen
- Down Time minimieren
- Content Delivery Network

Continuous Delivery
- kontinuierliche Updates mit neuen Features und Services ausliefern
- Software Updates mit Zero Downtime einspielen
- Rollback einzelner Services im Falle eines fehlerhaften Deploys
- starkes Decoupling von Services
- Support für Scripting & GitOps
- Stichwort: ”CI/CD Pipelines”

Mandatenfähigkeit
- Upscaling eines gesamten Softwaresystems für mehrere Mandaten
- Chinese Walls:
- Wiederverwendung gemeinsam geteilter Ressourcen
- zugleich strikte Trennung mandanten-spezifischer Daten

Re-Platforming
- Cloud Native Applications fügen sich in ihre Umgebung ein:
- Netzwerke werden dynamisch provisioniert
- Storage wird skalierbar und passt sich an
- Datenbanken werden austauschbar, skalierbar, bieten Betriebssicherheit

Modulares Design
- Einzelne Services die zusammen ein System bilden:
- Microservices
- Miniservices
- Macroservices
- Kleinere Einheiten sind leichter im Deployment zu managen als ein grosser Monolith

Infrastruktur Services
- Fertige Lösungen für Szenarien, die in den meisten Software Systemen enthalten sind:
- Authentifizierung
- Role Model / Permissions
- Encryption as a Service
- Datenbanken / Storage
- Message & Event Bus
- Service Mesh & Discovery
- Ingress / Egress

Architektur Patterns
- Durchdachte Lösungen für Use Cases, die man in den meisten Software-Systemen antrifft:
- Health Probe
- Managed Lifecycle
- Batch Processing
- Reactive Processing
- System Warm-Up
- Sidecar
- Ambassador / Proxy
- Configuration

Automatisierung
- On-premise Applications häufig manuell gewartet und langsam
- Cloud Native:
- Application Management per Scripting und Infrastruktur automatisiert
- schnelleres Deployment
- höhere Zuverlässigkeit
- klare Abläufe und Prozesse

Stateless
- Cloud Native Applications sind nicht fix an eine Infrastruktur gebunden
- State wird in Datenbanken, Storage oder Message Bus (Event Sourcing) gehalten
- unterstützt Skalierung, Verfügbarkeit und Resilienz

Summary

Mentimeter
Schon Lust bekommen auf Cloud Technologien?
app.mentimeter.input("6376 5011");
Mentimeter
Wie oft wird in deinen Softwareprojekten ein Update oder ein neues Release auf Produktion deployed?
app.mentimeter.input("6376 5011");
Mentimeter
Wie lange dauert es für gewöhnlich, bis ein Change Request in deinem Softwareprojekt umgesetzt und live gestellt wird?
app.mentimeter.input("6376 5011");

Nachlese – State of DevOps Report 2021 (presented by puppet)

Container Orchestrierung
Kubernetes Cluster
- Laufzeitumgebung für Software Komponenten, deployed in Docker Containern:
- Application
- Cloud Native Services
- Infrastruktur


Kubernetes Cluster
- Umfangreiche API
- Standard Tooling
- Sehr hohe Flexibilität
- Support für Scripting und Automatisierung
- Skalierung und Resilienz
- Rate Limits
- Backups / Rollbacks
- Cloud: AWS, GKE, AKS
- On Premise: Bare Metal, VMware vSphere, Rancher

Kubernetes Cluster
- Programmierung von Hardware Ressourcen, Infrastructure as Code:
- AWS CloudFormation
- Hashicorp Terraform
- RedHat Ansible


Polygot Software Developers
Polyglotte Services
- Jede Programmiersprache hat ihre Vor- und Nachteile
- Performance: Interpreter, Transpiler, Compiler
- Konzepte: prozedural, funktional, objektorientiert
- Ökosysteme der Sprachen
- Framework-Auswahl kann entscheidend sein für Fortschritt im Projekt

Polyglotte Services
- Fachkräftemangel:
- Verfügbarkeit von Entwicklern auf dem Arbeitsmarkt
- Attraktivität für neue Software-Entwickler
- Onboarding von Entwicklern aus Legacy Projekten


Reaktive Software Architekturen

CI/CD Pipelines

Continuous Integration

Continuous Delivery


You Build It – You Run It

Migrationspfad
Migration Patterns
- Geeignete Subsysteme identifizieren und als neuen Service herauslösen
- Bestandsdaten in neues Softwaresystem replizieren
- Datenupdates per Messages Bus asynchron an neue Services verteilen
- Proxy Komponenten anlegen
- Facades aufbauen
- Inkrementelle Migration vs. Big Bang ”Strategie”

Cloud Native Landscape
Mentimeter
Mit welchen Begriffen würdest du nun selbst ”Cloud Native” am ehesten assozieren?
app.mentimeter.input("6376 5011");
Mentimeter
Bist du bereit für Cloud Native?
app.mentimeter.input("6376 5011");
Copy of Moderne Software Architekturen im Cloud Native Context
By Johann-Peter Hartmann
Copy of Moderne Software Architekturen im Cloud Native Context
Slides für das WueWW Agile XXL Meetup zum Thema Software-Modernisierung am 26. Oktober 2021.
- 602