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.
- 390