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");

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.

  • 324