Hinweis: Dieser Blogbeitrag stammt aus der Zeit vor dem Zusammenschluss und wurde von ARS realisiert – heute Teil von ATVANTAGE. Unsere Erfahrung bleibt – nur unser Name hat sich geändert. Hier finden Sie weitere Informationen rund um die Fusion.

Lesezeit: 2 Minuten

 

Teil 5 - Einfluss von Cloud-native auf die Architekturarbeit


Wie wir gesehen haben, bieten Cloud-native Architekturen neue Möglichkeiten Dinge zu tun, bzw. anders zu tun, als dies bislang möglich war und unterliegen einer eigenen Philosophie bezüglich des Designs und bei der Umsetzung passender Software-Architekturen. Dafür betrachten wir zum einen die technischen Aspekte, müssen uns andererseits aber auch um fachliche und organisatorische Facetten kümmern, um die neuen Möglichkeiten auch wirklich gewinnbringend nutzen zu können.

Verteilte Architekturen auf dem Vormarsch

Dank des zwischenzeitlich erreichten Reifegrads in Bezug auf die Technologien, haben Softwarearchitekten einen wesentlich größeren Werkzeugkoffer zur Hand, um die Qualität eines Systems beeinflussen zu können. Aufgrund der Betriebsaufwände früher noch undenkbar, werden in diesem Umfeld zunehmend verteilte Systeme entworfen, um einzelne Systembestandteile hinsichtlich besonderer nicht-funktionaler Anforderungen optimieren zu können.

Neben der klassischen, monolithisch geprägten Architektur entstehen mehr und mehr verteilte Architekturen (Microservice Architecture) bzw. ereignisbasierte Architekturen (Event Driven Architecture).

Man wählt diese Architekturen, um sowohl neue Systeme zu implementieren, als auch um bestehende Legacy-Systeme schrittweise zu modernisieren. Letzteres erreicht man z.B. durch den Einsatz des Strangler-Fig Pattern, um einzelne Systembestandteile zu separieren und neu entwickelte Cloud-native basierte Systeme zu ersetzen.
Dabei hat sich die Vorgehensweise etabliert, bei der Modernisierung im ersten Schritt Cloud-tauglich (Cloud-ready) und im zweiten Schritt Cloud-native zu werden.

Keine Scheu vor einem Re-Design

Die Architekturarbeit birgt allerdings auch diverse Tücken, wie der zunehmende Einfluss von Lean Product Management als Vorgehensmodell zeigt.

So macht es keinen Sinn, sich in frühen Phasen des Systemdesigns (Walking Skeleton, Prototyping) zu intensiv mit der Performance und der Skalierung zu beschäftigen, wenn damit die funktionale Reifung des Produkts verlangsamt wird.

Nach dem Initial Product Release bzw. in der MVP Phase ergeben sich in der Regel aber viele neue Erkenntnisse, die häufig ein Überdenken der Architektur (und ggf. auch Technologieänderungen) unumgänglich machen.

Die Rolle des Softwarearchitekten

Früher waren Softwarearchitekten ggf. noch vorrangig mit der Modularisierung und Strukturierung monolithischer Codebasen beschäftigt (u.a. durch Einsatz des UML-Standards). In einer zunehmend agilen Umgebung und damit einhergehend mit der sich stetig verändernden fachlichen Realität, müssen sich Softwarearchitekten weiterentwickeln und sich neuer Methoden bedienen. Oft gilt es, den idealen Service-Schnitt zu finden, den der auf Cloud-Technologien ausgerichtete Softwarearchitekt mit Hilfe von folgenden Kriterien und Methoden abwägen sollte:

  • Domain-Driven-Design und Event-Storming Ziel des DDD ist der fachliche Schnitt des zu entwickelnden Softwaresystems. Damit ist in der Regel auch ein IT/Business-Alignment verbunden, dass man auch als Inverse Conway Manöver bezeichnet. Die Methode des Event-Storming dient dazu die Gemeinsame Sprache der Fachdomäne zu erschließen und wird auch dafür genutzt Subdomänen und Bounded Contexts zu identifizieren.
  • Organisatorischer Schnitt
  • Der oder die Serviceschnitte müssen zu den Teamgrößen passen. Hier lohnt es sich, sich mit Team-Topologien zu beschäftigen, um die Kognitive Last der Teams nicht zu überschreiten und sich zu überlegen, wie diese Teams dann zusammenarbeiten sollen.
  • Sonstige Rahmenbedingungen
  • Limitierungen durch die Technologiewahl, die Auswahl von 3rd Party Vendoren oder das Outsourcing mit Hilfe von APIs, usw. sind weitere Aspekte, die es abzuwägen gilt.


Die richtige API-Verwaltung

Neben dem optimalen Service-Schnitt spielt auch die Wahl der passenden Kommunikationsstile (synchron vs. asynchron) und der eingesetzten Protokolle eine wichtige Rolle.

Um Kommunikationsbeziehungen stabil zu halten, ist es sinnvoll, die entsprechenden APIs und deren Lebenszyklen bewusst zu verwalten (Provider und Consumer Prozess) und Änderungen der APIs angemessen zu kommunizieren.

Die Steuerung des API-Lebenszyklus, das Exponieren der Services über Gateways, aber auch das Provisionieren von API Keys sollten ohne manuelle Aufwände innerhalb von CI/CD Toolchains erfolgen. Für komplexe Service-Landschaften gibt es den Ansatz des Service Mesh (wie z.B. Consul, Linkerd oder Istio), mit denen sich die Verwaltung deutlich vereinfachen und vor allem gut dokumentieren lässt.

Der richtige organisatorische und prozessuale Umgang mit APIs ist das A und O beim Aufbau von verteilten Systemen und ein Garant für ein schnelles Wachstum des sinnvoll genutzten Portfolios an Services.

Das sechste und letzte Kapitel "Die Architektenrolle in DevOps-Teams/Organisationen" gibt es im nächsten Blogbeitrag am 5. Januar 2023 zu lesen.

Blogautor

Peter Diefenthäler
Senior Softwarearchitekt ARS Computer und Consulting GmbH

Ihr Erfolg ist unser Ziel

Stehen Sie vor komplexen IT-Projekten? Mit unserer Expertise bieten wir Ihnen maßgeschneiderte Lösungen. Erfahren Sie mehr.

Werde Teil unseres Teams

Wir suchen ständig nach neuen Talenten. Für dich haben wir genau die richtige Stelle. Schau dir unsere offenen Positionen an.

Noch Fragen? Wir helfen Ihnen gerne!

Blog 10.11.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 2

Aufgaben von Softwarearchitekten im Cloud-native-Umfeld, benötigte Skills und ihr Arbeitsalltag zwischen Kundenanforderungen, Zieldefinition und Deadlines.

Blog 27.10.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 1

Die beschleunigte Digitalisierung und ihr Einfluss auf Softwarearchitekturen und IT-Teams beschreibt der Autor. Sind Cloud-native-Strategien sinnvoll?

Blog 08.12.22

Teil 4: Eigenschaften einer Cloud-native Architektur

Beitrag zu Cloud-native Architekturen, ihre Möglichkeiten und Zielsetzungen sowie die Philosophie und Arbeitsweise, die daraus folgt.

Blog 24.11.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 3

Gedanken zu Möglichkeiten von Cloud-native-Architekturen und Kriterien zur Auswahl der Technologie: Standard nehmen oder sich dem Cloud-Anbieter ergeben?

Blog 15.04.23

Die vielfältigen Bestandteile API-basierter Produkte

API ist technisch betrachtet ein System mit Schnittstellen, z.B. REST. Was gehört zu einem guten API-Design? Wie wird ein API-Produkt erfolgreich?

Blog 05.01.23

Teil 6 - Die Architektenrolle in DevOps-Teams/Organisationen

Erfahren Sie in diesem Blogbeitrag mehr über die Rolle der Architekten in DevOps-Teams und wie sich die Architekturarbeit im cloud-native Umfeld verändert hat.

Blog 18.04.24

Cloud-Native Netzwerksouveränität mit Cilium und Kubernetes

Erfahren Sie alles über die revolutionäre Cloud-Native Netzwerksouveränität mit Cilium und Kubernetes. Optimieren Sie Ihre Netzwerkinfrastruktur für mehr Sicherheit und Leistung.

Blog 02.02.23

Computer Aided Cloud Transformation

Was bedeutet Computer aided cloud transformation? Warum ist Enterprise Architecture Management wichtig? Wie gelingt das Asset- und Ressourcenmanagement?

Blog 16.02.23

Keine Angst vor Komplexität

Wie kann man die Komplexität der Organisation u. Technologie, die neue Plattformen, Architekturen und neue Entwicklerkultur mit sich bringen, beherrschen?

Blog 16.03.23

Bedeutung von APIs als Interaktionsmodell

APIs sind mehr als Schnittstellen, sie sind Teil der Interaktion zwischen Geschäftspartnern. Eine API First Strategie schafft echte Wertschöpfung.

Blog 30.03.23

Eine API kommt selten allein - APIs in der freien Wildbahn

API's als Produkt zu verstehen ist ein Merkmal agiler Arbeitsweise. API's sind immer im Kontext des geplanten Services und des Ökosystems zu betrachten.

Blog 19.01.23

Digitalisierung und das richtige Mindset

Digitalisierung erfordert Umdenken weg von Projekten hin zu Produkten. DevOps und offene Fehlerkultur bestimmen moderne IT-Organisationen - auch bei Ihnen?

Blog 01.08.24

Migration von HOST-Anwendungen zu AWS: Modernisierung

Lernen Sie, wie moderne AWS-Services nahtlos in bestehende Host-Landschaften integriert werden und profitieren Sie von den Vorteilen von Serverless-Technologien.

Blog 22.06.23

Cloud Landing Zones: Sicher landen in der Public Cloud

Was sind Cloud Landing Zones? Lesen Sie, wie Sie mit Hilfe von CLZ Ihre Cloud-Strategie definieren und wichtige Learnings für die Transformation gewinnen.

Blog 08.06.23

Fünfzehn vor zwölf: Der Gang in die Cloud

Was sind die Erfolgsfaktoren einer Cloud-Transformation? Diese 15 Punkte von A wie Abhängigkeiten bis T wie Telemetrie - von Praktikern für IT-Entscheider.

Blog 26.04.24

Team Topology: Ein Wegweiser für effektive DevOps-Kultur

Erfahren Sie, wie Team Topology und effektive Kommunikationsmodi die DevOps-Kultur fördern und die Softwareentwicklung revolutionieren. Ein Wegweiser für erfolgreiches Teammanagement.

Blog 12.01.24

Infrastructure as Code (IaC)

Infrastructure as Code (IaC) und die neuesten Entwicklungen in der Cloud-Infrastrukturverwaltung mit Tools wie Terraform und Crossplane. Ein Blick auf die Zukunft des Infrastrukturmanagements.

Blog 02.02.24

So kommt Ordnung in den Infrastructure as Code-Werkzeugkaste

Ordnung im IaC-Dschungel: Welches Tool passt? Dieser Artikel gibt Überblick über die wichtigsten Werkzeuge für Infrastructure as Code.

Blog 07.09.23

Platform as a Service vs. Infrastructure as a Service

Die Cloud-Transformation stellt Sie vor die Frage: Platform as a Service oder Infrastructure as a Service? Beitrag über Vor- und Nachteile von PaaS und IaaS.

Blog 22.09.23

Optimierung von Serverless Funktionen

Entdecken Sie die Unterschiede zwischen Serverless-Technologie und Container-Technologie und erfahren Sie, wie AWS Lambda und AWS Fargate von Amazon Web Services diese Ansätze unterstützen.