Das Wissensportal für IT-Professionals. Entdecke die Tiefe und Breite unseres IT-Contents in exklusiven Themenchannels und Magazinmarken.

SIGS DATACOM GmbH

Lindlaustraße 2c, 53842 Troisdorf

Tel: +49 (0)2241/2341-100

kundenservice@sigs-datacom.de

„Software Architecture: The Hard Parts“ von N. Ford et al.

Verteilte Systeme sind schwer zu verstehen und zu bauen. Die erfahrenen Autoren aus dem Thoughtworks-Umfeld geben Hinweise, was man dabei beachten soll. Sie gehen dabei auf verteilte Daten und Workflows ein und sie zeigen, wie die Wechselwirkungen zwischen den angestrebten Qualitätszielen zu analysieren und zu berücksichtigen sind. Es ist eine gute Ergänzung zu dem gerade in der zweiten Auflage erschienenen Grundlagenwerk [For22] der beiden ersten Autoren. Für die Datenkapitel wurden zwei weitere bekannte Autoren hinzugezogen.
Author Image
Frank Pientka

Principal Software Architect


  • 26.05.2023
  • Lesezeit: 4 Minuten
  • 15 Views

No more Architecture Best Practices

Am Anfang steht der wichtige Hinweis zu „Architektur Best Practices”, dass es diese gar nicht geben kann, sondern man sich immer an den bestehenden Anforderungen und Randbedingungen orientiert. Das erste Kapitel stellt wichtige Werkzeuge für Architekten, wie Fitnessfunktion und ADR (Architekturentscheidungsdokumentation) vor, die auch an anderer Stelle bereits beschrieben sind. So greift es auch Konzepte aus [For22] auf, wie zyklomatische Komplexität, Kopplung, Kohäsion, technische vs. fachliche Aufteilung, Schichten oder Dienste. Die Art der Kopplung kann entweder statisch oder dynamisch sein. Daraus lassen sich verteilte Architekturvarianten (Sagas) ableiten, die sich nach Kommunikations-, Konsistenz- und Koordinationsart unterscheiden. Als Treiber für architekturelle Modularisierungsentscheidungen werden Verfügbarkeit, Skalierung, Test-, Installierund Wartbarkeit identifiziert.

Als durchgehendes Fallbeispiel dient eine Sysops-Squad-Anwendungsgeschichte, die in jedem Kapitel die dort diskutierten Inhalte präzisiert. Die dabei getroffenen Architekturentscheidungen sind als ADRs im Anhang B noch mal zusammengefasst. Im Anhang C sind ebenfalls die Bildverweise zu den verschiedenen Wechselwirkungsentscheidungen abgedruckt, was ein späteres Nachlesen erleichtert.

Fitness Functions zur Governance der Qualitätsziele

Zur Benamung der fachlichen Komponenten wird das Muster Anwendung.Domäne.Unterdomäne.Komponente.Klasse vorgeschlagen, was später die Identifikation der Komponente und ihrer Dienste erleichtert. Das Konzept der Datendomäne wird auf die Strukturierung der Tabellen ausgedehnt, sodass dies als Schemaname der Tabellen verwendet wird.


Wie schon in den Vorgängerbüchern spielen Fitness-Funktionen zur Überprüfung der Einhaltung der Qualitätsziele eine große Rolle. Überhaupt wird das Thema Governance in verteilten Anwendungen, wo Architekturentscheidungen immer dezentraler getroffen werden, immer wichtiger, um die Einhaltung der Leitplanken und Richtlinien zu gewährleisten. Deswegen werden für die Analyse der Wechselwirkungen der Architekturentscheidungen nicht nur ADRs, sondern auch verteilte Qualitätsszenarien benötigt. Zur Risikominimierung ist die Entwicklung eines Architekturdurchstiches mit einer Minimum Viable Architecture (MVA) oft sinnvoll, um Konzepte und Technologien frühzeitig auf ihre Nutzbarkeit zu testen.

Harte Nüsse knacken

Dezentrale Datenarchitekturen und Workflows

Da Daten länger leben als Anwendungen und zu den geschäftskritischen Werten gehören, ist es gut, diese in den Mittelpunkt von Architekturen zu stellen, wenn sie vor allem am Ende des Buchs vertieft werden. Der dritte Autor, Pramod Sadalage, ist bereits bekannt von seinen beiden Standardwerken [Pra06, Pra12] zum Thema polyglotte Persistenz und Refactoring von Datenbanken. So steuert er eine gute Kategorisierung von No/NewSQL und Cloud-native Datenbanken bei und wie man bestehende RDBMS hin zu einer Domänenarchitektur umbauen kann. Für das wichtige Thema DataMesh zeigt deren Erfinderin Zhamak Dehghani im vorletzten Kapitel als vierte Autorin auf, wie man damit eine dezentrale Datenarchitektur entwerfen kann. Hier werden noch mal die verschiedenen Treiber identifiziert, um eine balancierte Servicegranularität zu erreichen.

Infos zum Buch:

Titel: Software Architecture: The Hard Parts
Autor: Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
Seiten: 464
Verlag: O'Reilly Media
Jahr: 2011
ISBN: 9781492086895

Fazit

Als Entwickler kann man nach einer geeigneten Lösung googeln und einfach ausprobieren, als Architekt muss man eine größere Transferarbeit machen, um ein System für die bestehenden und zukünftigen Anforderungen zu entwerfen. Hier gibt es keine „einfachen“ Entscheidungen! Deswegen sind spätere tiefe Korrekturen an einer Architektur aufwendig und riskant. Der Leser des Buchs lernt weniger über Technologien oder deren Verwendung, sondern bessere Architekturentscheidungen zu treffen, Servicegranularität richtig zu finden, entkoppelte Verträge zwischen den verteilten Diensten zu managen und mit dezentralen Daten und Workflows sicher umzugehen. Für die, die von den anderen Büchern von Neal Ford profitiert haben, ist dieses Buch eine gute Vertiefung der dort gelegten Grundlagen [For20] und andiskutierten Themen [For22].

Weitere Informationen

[For20]
N. Ford et al., Fundamentals of Software Architecture, O'Reilly Media, 2020

[For22]
N. Ford et al., Building Evolutionary Architectures, O'Reilly Media, 2022 (1. Aufl. wurde in JavaSPEKTRUM, 1/23 besprochen)

[Pra06]
P. J. Sadalage et al., NoSQL Distilled, Addison-Wesley, 2006

[Pra12]
P. J. Sadalage et al., Refactoring Databases: Evolutionary Database Design, Addison-Wesley, 2012

. . .

Author Image

Frank Pientka

Principal Software Architect
Zu Inhalten

Frank Pientka arbeitet als Principal Software Architect bei der MATERNA SE. Dort sorgt er für mehr Qualität in der Software und kümmert sich als Gründungsmitglied des iSAQB um eine verbesserte Ausbildung und Zertifizierung von Architekten. Seit mehr als drei Jahrzehnten unterstützt er Firmen bei der Umsetzung effizienter und innovativer Software.


Artikel teilen