Appearance
ADRs (Architecture Decision Records) β
Notizen β
Ein Architekturentscheidungseintrag (Architecture Decision Record, ADR) ist einer der wichtigsten Lieferumfang eines LΓΆsungsarchitekten. Dieser Datensatz dokumentiert Architekturentscheidungen, die Sie wΓ€hrend des gesamten Entwurfsprozesses treffen. Sie enthΓ€lt auch kontextspezifische BegrΓΌndungen und Auswirkungen fΓΌr jede Entscheidung. Der ADR dokumentiert alle wichtigen Entscheidungen, einschlieΓlich Alternativen, die Sie ausgeschlossen haben, fΓΌr architektonisch signifikante Anforderungen. Das Protokoll enthΓ€lt Anforderungen und EinschrΓ€nkungen in die dokumentierten Auswirkungen einer Entscheidung.
Ich verstehe ADR's als Tool fΓΌr Softwarearchitekten in Projekten oder Projekt-ΓΌbergreifend entscheidungen und Richtlinien zu etablieren.
ADR'S erstrecken sich ΓΌber mehrere DatensΓ€tze. Diese Form kann ein einfaches Markdown Dokument sein oder ein Word Dokument. Etwas um geschriebenes zu verarbeiten. Empfohlen fΓΌr ADRS wird eine konsistente, DateiΓΌbergreifende Vorlage, welcher folgende Elemente enthΓ€lt:
- Problem-Anweisung mit Kontext
- In Betracht gezogene Optionen
- Entscheidungsergebnise
- Darunter auch Kompromisse die mit dieser Entscheidung kommen
- Konfidenzniveau: Wie sicher sind sie sich mit der Entscheidung: Das kΓΆnnte fΓΌr RΓΌckwirkende Analysen hilfreich sein.
Eine Entscheidung sollte in mehrere Phasen unterschieden werden: kurzfristige, mittelfristige und langfristige AnsΓ€tze. Es sollte vermieden werden das Folgen von Entscheidungen absichtlich oder versehentlich ausgeblendet werden: Beispiel:
Schlecht dokumentiert
- Entscheidung: Wir nutzen Framework X
- Konsequenzen: Schnellere Entwicklung
Ausgeblendete RealitΓ€t
- Framework X ist schwer zu warten
- starke Vendor-Lock-in AbhΓ€ngigkeit
- hΓΆhere Infrastrukturkosten
ADRs sollten kurz, klar, themenbezogen und faktenbasiert formuliert sein, sodass Entscheidungen und ihre BegrΓΌndungen schnell verstΓ€ndlich und nachvollziehbar bleiben.
Entscheidungen fΓΌr ADR'S sollten selbststΓ€ndig getroffen werden. Material kann genutzt und sollte verlinkt werden um bei Entscheidungen unterstΓΌtzend zu wirken, aber eine Entscheidung sollte nicht basierend auf Anderer Quellen gemacht werden.
Workloaddokumentations-Repository: Ein Workloaddokumentations-Repository ist ein zentrales Ablage-Repository (meist in Git), in dem die Dokumentation zu Workloads eines Systems gesammelt und versioniert wird.
Workload Bezeichnet in der IT die Arbeitslast eines Systems, also z. B.:
- Anwendungen oder Services
- Datenverarbeitung
- Jobs oder Prozesse
- Container / Microservices
- Datenbankoperationen
Interview-Fragen β
Was ist ein Architecture Decision Record (ADR)? β
Ein ADR ist ein Dokument, das eine wichtige Architekturentscheidung, den Kontext der Entscheidung, die betrachteten Alternativen sowie die Konsequenzen dieser Entscheidung festhΓ€lt. Ziel ist es, Entscheidungen langfristig nachvollziehbar zu dokumentieren.
Warum sind ADRs wichtig? β
ADRs schaffen Transparenz ΓΌber Architekturentscheidungen und deren BegrΓΌndungen. Sie helfen neuen Teammitgliedern, Entscheidungen nachzuvollziehen, verhindern wiederholte Diskussionen ΓΌber bereits getroffene Entscheidungen und dienen als historische Dokumentation der Architekturentwicklung.
Wann sollte ein ADR geschrieben werden? β
Ein ADR sollte erstellt werden, wenn eine architektonisch signifikante Entscheidung getroffen wird, zum Beispiel bei:
- Auswahl einer zentralen Technologie
- ArchitekturΓ€nderungen
- EinfΓΌhrung neuer Frameworks oder Plattformen
- Γnderungen an Systemgrenzen oder Integrationsmustern
Welche typischen Bestandteile hat ein ADR? β
Typischerweise enthΓ€lt ein ADR folgende Elemente:
- Kontext / Problemstellung
- In Betracht gezogene Optionen
- Entscheidung
- BegrΓΌndung
- Konsequenzen (positiv und negativ)
Optional kΓΆnnen auch das Konfidenzniveau, das Datum oder der Status (Proposed, Accepted, Deprecated) enthalten sein.
Was sind typische Fehler bei ADRs? β
Typische Fehler sind:
- Entscheidungen werden zu spΓ€t dokumentiert
- Konsequenzen werden nicht vollstΓ€ndig beschrieben
- nur Vorteile werden genannt
- Dokumente werden zu lang oder zu technisch
- ADRs werden nicht aktualisiert, wenn sich Entscheidungen Γ€ndern
Wie detailliert sollte ein ADR sein? β
Ein ADR sollte prΓ€gnant und fokussiert sein. Es soll genug Kontext liefern, damit die Entscheidung nachvollziehbar bleibt, aber nicht so umfangreich sein, dass es schwer zu lesen ist.
Wo werden ADRs normalerweise gespeichert? β
ADRs werden hΓ€ufig in einem versionskontrollierten Repository gespeichert, zum Beispiel in einem Git-Repository zusammen mit der Projektdokumentation. Oft werden sie als Markdown-Dateien verwaltet.
Wie unterscheidet sich ein ADR von normaler Dokumentation? β
Ein ADR dokumentiert konkrete Entscheidungen und deren BegrΓΌndung, wΓ€hrend allgemeine Dokumentation eher beschreibt wie ein System funktioniert.
Wie geht man mit veralteten ADRs um? β
ADRs werden normalerweise nicht gelΓΆscht. Stattdessen wird ihr Status angepasst, zum Beispiel:
- Proposed
- Accepted
- Superseded
- Deprecated
So bleibt die Entscheidungs-Historie erhalten.