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