In diesem Vortrag wird eine leichtgewichtige Methode zur Dokumentation von Softwarearchitektur vorgestellt. Diese hält Architekturentscheidungen in Architecture Decision Records (ADR) fest. Ein kompaktes Format, angereichert mit wichtigen Zusatzinformationen, wie Kontext, Alternativlösungen und Randbedingungen. Nicht funktionale Anforderungen werden als Qualitätsszenarien beschrieben und deren Erfüllung durch die ADRs geprüft werden kann. So wird die Dokumentation ein effizientes Instrument zur Kommunikation mit allen Stakeholdern.
2. Johannes Dienst (@JohannesDienst)3
Was ist eine Entwurfsentscheidung?
Code-Ebene
Bubble-Sort
statt
Merge-Sort
Solution-Ebene
Circuit Breaker
Applikations-Ebene
Hystrix
8. Architecture Decision Record (ADR)
Johannes Dienst (@JohannesDienst)10
Titel
Kontext / Hintergrund
Alternativen
Entscheidung
Status
Konsequenz(en)
9. Johannes Dienst (@JohannesDienst)11
ADR-3: Staging-Umgebung für CMS
Kontext
Es wird eine Lösung gesucht um Skalierbarkeit für das gesamte System sicherzustellen.
Alternativen
Cluster-Lösung
• Betrieb des CMS im Cluster
Push Publishing
• Verwendung für mehrere Stages
Entscheidung
Wir verwenden kein Push-Publishing bzw. verschiedene Staging Umgebungen.
Status
BESCHLOSSEN
Konsequenz
Änderung der System-Architektur notwendig
• Abbau der beiden Public Instanzen
• Dekonfigurieren von Push Publishing
Es wird keine Umgebung zur Verfügung gestellt, auf der Content gepushed wird
16. Qualitätsszenarien – Allgemeiner Fall
Johannes Dienst (@JohannesDienst)18
Mess-
kriteriumArtefakt
Umgebung
Stimulus Antwort
Quelle
17. Qualitätsszenarien – Konkreter Fall
Johannes Dienst (@JohannesDienst)19
Keine
DowntimeProzess
Normal-
betrieb
Quelle:
Heartbeat
Stimulus:
Server
unerreichbar
Antwort:
Cockpit
informieren
18. Schriftliche Form
Johannes Dienst (@JohannesDienst)20
Barkeiten Stimulus Systemzustand Messkriterium
Performanz Anfrage aus dem Internet
an den API-Gateway
System ist unter
Normallast (Load < 0.8)
80% der Anfragen werden
unter 100ms beantwortet
Automatisierbarkeit Codeänderung im
Kernsystem einspielen
System ist im
Normalzustand
Keine Downtime /
Auswirkung auf den
Benutzer sichtbar
19. Änderungsszenarien
Johannes Dienst (@JohannesDienst)21
Barkeiten Stimulus Reaktion Zielwert
Canary Releases Eine neue Version der Software
ist verfügbar
Die neue Version kann
schrittweise in den
Produktivbetrieb
übernommen werden
Ein neues Artefakt kann
kontrolliert schrittweise
ausgerollt werden
20. Zusammenbringen mit ADRs
Johannes Dienst (@JohannesDienst)22 Icons made by Freepik and Smashicons from www.flaticon.com
Qualitätsattribute Qualitätsszenarien
ADR
24. Learnings
Johannes Dienst (@JohannesDienst)26
ADRs als probates Mittel Entwurfsentscheidungen zu dokumentieren
Qualitätsszenarien als Kommunikationsmittel für alle Stakeholder
Diese sind anfangs schwer zu formulieren
Management von Qualitätsrisiken möglich
25. Wie geht es weiter?
Johannes Dienst (@JohannesDienst)27
Docs as Code mit AsciiDoc
Lightweight ADRs im Code
Qualitätsszenarien als ausführbare
Dokumentation
26. Welche zwei Fragen sind noch offen?
Johannes.Dienst@DeutscheBahn.com
@JohannesDienst