Architecture Decision Records

Architecture Decision Records (ADRs): Hilfe bei der SW-Architektur-Verwaltung

vg

Die Entscheidungsfindung ist der Kern eines jeden erfolgreichen Softwareprojekts. Ganz gleich, ob Sie den richtigen Technologie-Stack auswählen, Architekturmuster definieren oder Kompromisse bewerten, jede Entscheidung hat einen tiefgreifenden Einfluss auf das Ergebnis Ihres Projekts. Wenn sich Projekte jedoch weiterentwickeln und Teammitglieder kommen und gehen, kann man leicht den Überblick darüber verlieren, warum bestimmte Entscheidungen überhaupt getroffen wurden. Hier glänzen Architecture Decision Records (ADRs) als unschätzbares Werkzeug.

Die Bedeutung der Entscheidungsfindung in Softwareprojekten

Jedes Softwareprojekt beginnt mit einer Reihe von Auswahlmöglichkeiten:

  • Architektur: Sollten Sie eine monolithische, Microservices- oder serverlose Architektur einführen?
  • Technology Stack: Welche Frameworks, Programmiersprachen und Datenbanken passen am besten zu Ihren Anforderungen?
  • Kompromisse: Legen Sie Wert auf Entwicklungsgeschwindigkeit, Leistung oder Skalierbarkeit?

Diese Entscheidungen werden oft vom jeweiligen Kontext des Projekts beeinflusst – Termine, Teamexpertise, Kundenanforderungen oder Budgetbeschränkungen. Während diese Faktoren im Moment für Klarheit sorgen, können sie mit der Zeit verblassen, so dass sich zukünftige Entwickler fragen: Warum haben wir uns für diesen Ansatz entschieden?

Herausforderungen ohne Dokumentation

Ohne eine klare Aufzeichnung von Entscheidungen können Teams vor mehreren Herausforderungen stehen:

  1. Wissensverlust: Wenn Teammitglieder das Team verlassen, gehen oft auch die Gründe für wichtige Entscheidungen mit ihnen einher.
  2. Nacharbeit: Entwickler könnten unwissentlich vergangene Debatten wieder aufgreifen und so Zeit und Mühe verschwenden.
  3. Technische Schulden: Ohne den ursprünglichen Kontext zu verstehen, können Teams Änderungen vornehmen, die zu Inkonsistenzen oder Ineffizienzen führen.
  4. Onboarding: Neue Teammitglieder haben Schwierigkeiten, sich zurechtzufinden, ohne die grundlegenden Entscheidungen des Projekts zu verstehen.

Was sind Architektur-Entscheidungsdatensätze (Architecture Decision Records, ADRs)?

Ein ADR ist ein leichtes, strukturiertes Dokument, das eine für ein Projekt getroffene Architekturentscheidung zusammen mit ihrem Kontext und ihren Konsequenzen erfasst. Jedes ADR umfasst in der Regel Folgendes:

  1. Titel: Ein prägnanter Name für die Entscheidung (z. B. „PostgreSQL für die Datenbank verwenden“).
  2. Kontext: Die Hintergrundinformationen, einschließlich des zu lösenden Problems und der Einschränkungen.
  3. Entscheidung: Die getroffene Wahl und eine kurze Beschreibung.
  4. Konsequenzen: Die Auswirkungen, Kompromisse und potenziellen Risiken der Entscheidung.
  5. Status: Gibt an, ob die Entscheidung vorgeschlagen, akzeptiert oder veraltet ist.

ADRs können als Markdown-Dateien in Ihrem Repository gespeichert werden, um sicherzustellen, dass sie zusammen mit Ihrem Code versioniert werden.

Wann sollte ich ein ADR schreiben?

Diese Workflow-Entwicklung von Spotfty hilft uns, die Erstellung von ADR-Prozessen zu verstehen:

Workflow ADR von Spotfy
Workflow ADR von Spotfy

So beginnen Sie mit der Verwendung von ADRs in Ihrem Projekt

  1. Führen Sie die Praxis ein: Beginnen Sie damit, Ihr Team über den Wert von ADRs aufzuklären.
  2. Definieren Sie eine Vorlage: Verwenden Sie aus Gründen der Konsistenz ein Standardformat. Hier ist ein Beispiel:
  3. Fangen Sie klein an: Beginnen Sie mit neuen Entscheidungen und dokumentieren Sie nach und nach bestehende.
  4. Regelmäßige Überprüfung: Überprüfen Sie die UAW regelmäßig, um sicherzustellen, dass sie noch relevant sind.
  5. Integration in Ihren Workflow: Speichern Sie ADRs im Repository Ihres Projekts und verweisen Sie bei der Planung und Codeüberprüfung darauf.

Beispiel für eine Vorlage

# Title

## Context
- Describe the problem to solve.
- Highlight constraints and influencing factors.

## Decision
- State the chosen solution.

## Consequences
- Detail the trade-offs and potential impacts.

## Status
- Indicate whether the decision is active or deprecated.

Beispiel aus der Praxis

Stellen Sie sich vor, Ihr Team muss eine Datenbank für eine neue Microservices-Anwendung auswählen. Nach der Bewertung der Optionen entscheiden Sie sich aufgrund der starken ACID-Konformität, Skalierbarkeit und des robusten Ökosystems für PostgreSQL. Ein ADR würde wie folgt aussehen:

# Use PostgreSQL for the Database

## Context
We need a relational database to support our microservices application. Key requirements include strong ACID compliance, scalability, and support for complex queries.

## Decision
We chose PostgreSQL due to its proven performance, active community, and compatibility with our existing tools.

## Consequences
- Positive: Ensures data integrity and supports complex queries.
- Negative: Requires more setup and management compared to NoSQL options.

## Status
Accepted

Vorteile der Verwendung von ADRs

  1. Bewahrt den Kontext: ADRs stellen sicher, dass jede Entscheidung gut dokumentiert ist und der Kontext für zukünftige Referenzen erhalten bleibt
  2. Erleichtert die Zusammenarbeit: Durch die Schaffung eines gemeinsamen Verständnisses helfen ADRs den Teams, Optionen effektiver zu diskutieren und zu bewerten
  3. Verbessert das Onboarding: Neue Entwickler können die architektonische Geschichte und die Argumentation des Projekts schnell verstehen
  4. Unterstützt das Change Management: Wenn Teams Entscheidungen überdenken, können sie diese anhand ihrer ursprünglichen Begründung bewerten, um festzustellen, ob sich die Umstände wirklich geändert haben
  5. Reduziert technische Schulden: Teams können Ad-hoc-Änderungen vermeiden, die nicht mit der ursprünglichen Architektur übereinstimmen

Unternehmen, die ADRs verwenden

Viele führende Unternehmen haben ADRs als Teil ihrer Software-Entwicklungspraktiken eingeführt, um Klarheit und Konsistenz in ihren Projekten zu wahren. Einige Beispiele sind:

  1. Spotify: Verwendet ADRs, um die teamübergreifende Zusammenarbeit und den Wissensaustausch zu erleichtern. (https://engineering.atspotify.com/2020/04/when-should-i-write-an-architecture-decision-record/)
  2. Amazon: Nutzt ADRs, um Architekturentscheidungen für ihre komplexen und umfangreichen Systeme zu dokumentieren. (https://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/architectural-decision-records/architectural-decision-records.pdf)
  3. Google: Verwendet ADR-ähnliche Praktiken, um die Kontinuität in globalen Teams zu gewährleisten. (https://cloud.google.com/architecture/architecture-decision-records?utm_source=chatgpt.com&hl=pt-br)

Diese Unternehmen zeigen, wie ADRs selbst in den anspruchsvollsten und dynamischsten Umgebungen effektiv skaliert werden können.

Fazit

Architecture Decision Records sind mehr als nur Dokumentation – sie sind eine leistungsstarke Möglichkeit, die Architektur Ihres Projekts zu verwalten und die Kontinuität im Laufe der Zeit zu gewährleisten. Durch die Einführung von ADRs befähigen Sie Ihr Team, fundierte Entscheidungen zu treffen, kritisches Wissen zu bewahren und die Ausrichtung zu wahren, während sich Ihr Projekt weiterentwickelt. Beginnen Sie noch heute mit dem Einsatz von ADRs und richten Sie Ihr Projekt auf langfristigen Erfolg aus.

Mehr zum Lesen: 4 Tipps, die Entwickler befolgen sollten, um sauberen Code zu schreiben

com

Newsletter Anmeldung

Bleiben Sie informiert! Wir informieren Sie über alle neuen Beiträge (max. 1 Mail pro Woche – versprochen)