Read in English · Leer en español · Lire en français
Abschnitt 1.6 von 1.8 · Mittelstufe · 20 Min. Lesezeit
Architekturentscheidungen und Abwägungen: Umkehrbarkeit und Zeitpunkt
Videolektion
5 Min. · auf Englisch gesprochen, mit UntertitelnNur anhören (Audio)
Transkript lesen
Architekten treffen ständig Entscheidungen, und keine davon ist umsonst. Diese Lektion zeigt, wie man Abwägungen trifft, welche Entscheidungen Sorgfalt verdienen, wann man entscheidet und wie man seine Überlegungen offenlegt.
Die Wahl eines Autos ist eine Abwägung. Ein größerer Motor verbraucht mehr Kraftstoff; ein kleineres Auto lässt sich leichter einparken, transportiert aber weniger. Niemand bekommt alles. Manche Entscheidungen sind leicht rückgängig zu machen, etwa eine Lackfarbe, die man später ändern kann. Andere, wie der Kauf eines Hauses direkt an der Autobahn, sind sehr schwer rückgängig zu machen. Gute Architekten treffen die leichten Entscheidungen schnell, gehen mit den schweren sorgfältig um, entscheiden zum richtigen Zeitpunkt und schreiben auf, warum.
Das erste Gesetz von Mark Richards und Neal Ford: In der Softwarearchitektur ist alles eine Abwägung. Caching gewinnt Geschwindigkeit und bezahlt mit veralteten Daten. Wenn Sie glauben, etwas gefunden zu haben, das keine Abwägung ist, haben Sie sie wahrscheinlich nur noch nicht entdeckt. Ihr zweites Gesetz: Das Warum ist wichtiger als das Wie. Wie ein System gebaut ist, kann jeder sehen. Was der Code Ihnen nicht sagen kann, ist das Warum: welche Alternativen erwogen und welche Risiken in Kauf genommen wurden. Und ein drittes: Die meisten Entscheidungen sind nicht binär. Selten wählen Sie zwischen Monolith und Microservices; Sie wählen, wie viele deploybare Einheiten es gibt und entlang welcher Linien geschnitten wird.
Eine gut aufgebaute Entscheidung hat sechs Teile. Links stehen drei Eingaben: der Kontext, also die Kräfte und Randbedingungen; mindestens zwei echte Optionen; und die Kriterien, abgeleitet aus den Anliegen der Stakeholder. Sie fließen in die eigentliche Entscheidung und ihre Begründung ein: warum die gewählte Option die anderen geschlagen hat. Dann die Konsequenzen, also Nutzen, Kosten, Risiken und nun verbaute Optionen, und der Status, etwa vorgeschlagen, akzeptiert oder abgelöst. Beachten Sie den gestrichelten Pfeil. Konsequenzen werden zum Kontext für spätere Entscheidungen. Wählen Sie asynchrones Messaging, müssen Sie als Nächstes entscheiden, wie Sie mit doppelten Nachrichten umgehen.
Die nützlichste Eigenschaft einer Entscheidung ist, wie billig sie sich rückgängig machen lässt. Jeff Bezos nannte umkehrbare Entscheidungen Zweiwegtüren. Treffen Sie sie schnell, in kleinen Gruppen, denn Sie können durch die Tür zurückgehen. Eine Logging-Bibliothek hinter Ihrer eigenen Schnittstelle ist eine solche. Einwegtüren sind nahezu unumkehrbar, etwa das Datenmodell eines System of Record oder eine öffentliche API, die Hunderte von Partnern nutzen. Sie verdienen langsame, sorgfältige Abwägung mit denen, die die Konsequenzen tragen. Und die Umkehrbarkeit verändert sich mit der Zeit. Je mehr Code, Daten und Menschen von einer Entscheidung abhängen, desto schwerer lässt sie sich rückgängig machen.
Wann sollten Sie also entscheiden? Im Verlauf eines Projekts steigt, was Sie wissen, während die noch offenen Optionen abnehmen. Entscheiden Sie zu früh, raten Sie. Die Datenbank in der ersten Woche festzulegen, bevor Sie die Struktur der Daten verstehen, ist geraten. Der Last Responsible Moment ist der Punkt, an dem eine ausbleibende Entscheidung eine wichtige Option zunichtemachen würde. Wer dann entscheidet, nutzt das meiste Wissen, ohne sich die Entscheidung abnehmen zu lassen. Warten Sie zu lange, fällt die Entscheidung implizit, zum Beispiel wenn bereits Code um eine unausgesprochene Annahme herum geschrieben wurde. Das ist kein Freibrief zum Aufschieben. Wissen Sie, welche Entscheidungen anstehen und wann jede fallen muss, und nutzen Sie die Zeit bis dahin, um zu lernen.
Hier ist ein ausgearbeitetes Beispiel. Ein Essenslieferunternehmen braucht eine Datenbank für einen neuen Bestellservice. Zahlungen dürfen nie verloren gehen oder doppelt abgerechnet werden. Das sechsköpfige Team kennt PostgreSQL gut, hat aber keinen Datenbankadministrator. Es gibt drei Optionen: einen verwalteten PostgreSQL-Dienst, die eigene Dokumentendatenbank des Cloud-Anbieters oder PostgreSQL, das das Team selbst betreibt. Zuerst vereinbaren sie sechs Kriterien und deren Gewichte, etwa transaktionale Integrität und betrieblichen Aufwand, und bewerten dann jede Option. Verwaltetes PostgreSQL erreicht neunundsiebzig von fünfundneunzig Punkten, vor dreiundsiebzig und siebenundsechzig. Dann eine Sensitivitätsprüfung: Was, wenn das Wachstum viel höher wäre oder jemand anderes die Datenbanken betriebe? Option A bleibt auf Platz eins oder gleichauf an der Spitze. Das Ergebnis hängt vor allem davon ab, dass dem Team die Kapazität für den Datenbankbetrieb fehlt. Also wählen sie verwaltetes PostgreSQL und halten die Nachteile ehrlich fest: eine höhere Monatsrechnung und Wartungsfenster, die der Anbieter festlegt. Die Zahlen treffen nicht die Entscheidung; sie machen die Überlegungen sichtbar.
Weil das Warum am wichtigsten ist, muss es aufgeschrieben werden. Das übliche Format ist ein Architecture Decision Record, kurz ADR: eine kurze Textdatei mit Titel, Status, Kontext, Entscheidung und Konsequenzen. Es liegt beim Code und wird nie bearbeitet, um die Geschichte zu ändern. Eine spätere Entscheidung löst es ab und verweist zurück, sodass das Protokoll die Geschichte erzählt. Und vermeiden Sie die typischen Fehler: nur eine Option zu betrachten, die Nachteile zu verschweigen und eine Entscheidung nie zu überprüfen, wenn sich ihre Annahmen ändern.
Das waren Entscheidungen und Abwägungen. Der vollständige Abschnitt enthält eine Hilfe für die Frage „jetzt oder später entscheiden“, die kognitiven Fallen, auf die Sie achten sollten, und ein Beispiel-ADR. Als Nächstes sehen wir uns in Abschnitt eins Punkt sieben technische Schulden an. Bis gleich.
Was Sie wissen müssen
- Jede bedeutsame Architekturentscheidung ist eine Abwägung: Sie verbessert manche Qualitäten auf Kosten anderer, und die Nachteile müssen gefunden und benannt werden.
- Eine gut aufgebaute Entscheidung hält ihren Kontext fest, die betrachteten Optionen, die Kriterien, die Entscheidung mit ihrer Begründung, die Konsequenzen und ihren Status.
- Umkehrbarkeit ist die entscheidende Eigenschaft einer Entscheidung: Über Zweiwegtüren sollte schnell und vor Ort entschieden werden, über Einwegtüren mit Bedacht und gemeinsam mit denen, die die Konsequenzen tragen.
- Der Last Responsible Moment ist der Zeitpunkt, ab dem ein Aufschub eine wichtige Option zunichtemachen würde; wer dann entscheidet, nutzt das meiste Wissen, ohne die Entscheidung dem Zufall zu überlassen.
- Abstraktionen an Grenzen, Feature-Flags, schrittweise Migration und Spikes machen Entscheidungen umkehrbarer, zu Kosten, die sich nur lohnen, wo sowohl die Unsicherheit als auch die Kosten einer Umkehr hoch sind.
- Gewichtete Entscheidungsmatrizen und Architecture Decision Records machen Überlegungen sichtbar und angreifbar; vereinbaren Sie Kriterien und Gewichte vor der Bewertung und prüfen Sie, wie empfindlich das Ergebnis auf sie reagiert.
Alles ist eine Abwägung
Jede bedeutsame Architekturentscheidung gewinnt etwas, indem sie etwas anderes aufgibt. Wer ein System in unabhängig deploybare Services aufteilt, gewinnt Autonomie der Teams und unabhängige Skalierung und bezahlt mit Netzwerklatenz, betrieblicher Komplexität und schwierigerer Datenkonsistenz. Caching gewinnt Geschwindigkeit und bezahlt mit veralteten Daten und Invalidierungslogik. Eine verwaltete Cloud-Datenbank befreit von Patches und Backups und kostet dafür Geld und Abhängigkeit von einem Anbieter. Mark Richards und Neal Ford stellen dies an den Anfang von Fundamentals of Software Architecture (2020; zweite Auflage 2025), als ihr erstes Gesetz: Alles in der Softwarearchitektur ist eine Abwägung.
Als Folgerung leiten sie ab: Wenn Sie glauben, etwas gefunden zu haben, das keine Abwägung ist, haben Sie die Abwägung wahrscheinlich nur noch nicht erkannt.
Ihr zweites Gesetz lautet, dass das Warum wichtiger ist als das Wie. Jeder kann sich ein laufendes System ansehen und erkennen, wie es gebaut ist: drei Services, ein Message Broker, eine Dokumentendatenbank. Was sich aus dem Code nicht rekonstruieren lässt, ist das Warum: welche Alternativen erwogen wurden, welche Anliegen sich durchsetzten, welche Risiken in Kauf genommen wurden. Ohne das Warum bewahren spätere Entwickler entweder Entscheidungen, die keinen Sinn mehr ergeben, oder sie machen Entscheidungen rückgängig, deren Gründe weiterhin gelten. Die zweite Auflage fügt ein drittes Gesetz hinzu: Die meisten Architekturentscheidungen sind nicht binär, sondern liegen auf einem Spektrum zwischen Extremen. Selten wählen Sie zwischen „Monolith“ und „Microservices“; Sie wählen, wie viele deploybare Einheiten es gibt, entlang welcher Linien geschnitten wird und was geteilt wird.
In Abwägungen zu denken ist die Gewohnheit, die architektonisches Denken am deutlichsten von Begeisterung unterscheidet. Wenn jemand eine Technologie vorschlägt, lauten die nützlichen Fragen nicht „Ist sie gut?“, sondern „Was kostet sie, was erschwert sie, und sind diese Kosten angesichts unserer Anliegen akzeptabel?“ Der vorige Abschnitt hat gezeigt, woher diese Anliegen kommen.
Die Anatomie einer Entscheidung
Eine Architekturentscheidung ist mehr als ihr Ergebnis. Eine Entscheidung, die sich erklären, prüfen und überdenken lässt, hat sechs Teile, und sie zu benennen ist der erste Schritt zu guten Entscheidungen.
Kontext: die wirkenden Kräfte. Das zu lösende Problem, die Anforderungen an Qualitätsmerkmale, die es betreffen, die Randbedingungen (Budget, Fristen, Vorschriften, bestehende Systeme, Fähigkeiten des Teams) und die getroffenen Annahmen. Optionen: mindestens zwei echte Alternativen, oft einschließlich „nichts tun“ oder „aufschieben“. Eine Entscheidung, bei der nur eine Option betrachtet wurde, ist eine Ankündigung, keine Entscheidung. Kriterien: wie die Optionen beurteilt werden, abgeleitet aus den Anliegen der Stakeholder und nach Wichtigkeit gewichtet. Entscheidung und Begründung: die gewählte Option und, ganz wesentlich, warum sie die anderen bei den Kriterien geschlagen hat. Konsequenzen: was leichter wird, was schwerer wird, welche neuen Risiken entstehen und welche künftigen Optionen nun verschlossen sind. Status: vorgeschlagen, akzeptiert, veraltet oder abgelöst, dazu, wer die Entscheidung wann getroffen hat.
Die Konsequenzen verdienen besondere Aufmerksamkeit, denn an ihnen wird die Ehrlichkeit geprüft. Jede Option hat Nachteile; wer sie aufschreibt, schützt das Team vor Überraschungen und gibt der nächsten Person, die entscheidet, eine faire Darstellung. Die Konsequenzen einer Entscheidung werden zudem Teil des Kontexts für die nächste: Sobald Sie sich für asynchrones Messaging entschieden haben, müssen Sie entscheiden, wie Sie mit doppelten und in falscher Reihenfolge eintreffenden Nachrichten umgehen.
Anatomie einer Architekturentscheidung
Einwegtüren und Zweiwegtüren
Die nützlichste einzelne Eigenschaft einer Entscheidung ist ihre Umkehrbarkeit: wie billig und sicher sie sich rückgängig machen lässt. In seinem Brief an die Amazon-Aktionäre von 2015 unterschied Jeff Bezos Entscheidungen vom Typ 1, die folgenreich und unumkehrbar oder nahezu unumkehrbar sind („Einwegtüren“), von Entscheidungen vom Typ 2, die änderbar und umkehrbar sind („Zweiwegtüren“). Typ-1-Entscheidungen verdienen langsame, sorgfältige Abwägung und Beratung. Typ-2-Entscheidungen sollten schnell von Einzelnen oder kleinen Gruppen mit gutem Urteilsvermögen getroffen werden, denn wenn sie sich als falsch erweisen, können Sie durch die Tür zurückgehen. Er warnte, dass große Organisationen dazu neigen, den schwerfälligen Typ-1-Prozess auf alles anzuwenden, was sie langsam und zaghaft macht.
Die Idee lässt sich direkt auf Architektur übertragen. Eine Einwegtür in Software ist eine Entscheidung, deren Rücknahme erfordern würde, große Teile des Systems neu zu schreiben, große Datenmengen zu migrieren, Verträge neu zu verhandeln oder viele Menschen umzuschulen: die Hauptprogrammiersprache einer großen Codebasis, das Datenmodell eines System of Record, die öffentliche API, an die Hunderte von Partnern angebunden sind, eine mehrjährige Cloud-Verpflichtung. Zu den Zweiwegtüren gehören die Wahl einer Logging-Bibliothek hinter Ihrer eigenen Schnittstelle, die interne Struktur eines Moduls, das Tuning eines Caches oder die Frage, welches von zwei gleichwertigen Nachrichtenformaten innerhalb eines Service verwendet wird.
Zwei Vorbehalte. Erstens ist Umkehrbarkeit ein Spektrum, nicht binär: Die meisten Entscheidungen liegen irgendwo zwischen „trivial rückgängig zu machen“ und „unmöglich rückgängig zu machen“, und die Kosten einer Umkehr wachsen meist, je mehr Code, Daten und Menschen von der Entscheidung abhängig werden. Eine Entscheidung, die im ersten Monat eine Zweiwegtür ist, kann im zwölften Monat zur Einwegtür geworden sein. Zweitens können Sie oft durch Design beeinflussen, vor welcher Art von Tür Sie stehen, wie der Abschnitt zur Umkehrbarkeit weiter unten zeigt.
Der Zeitpunkt: der Last Responsible Moment
Wann sollte eine Entscheidung getroffen werden? Mary und Tom Poppendieck machten in Lean Software Development: An Agile Toolkit (2003) die Idee populär, im Last Responsible Moment zu entscheiden: in dem Moment, in dem eine ausbleibende Entscheidung eine wichtige Alternative zunichtemachen würde. Vor diesem Moment entscheiden Sie mit weniger Informationen, als Sie haben könnten; danach wird die Entscheidung stillschweigend für Sie getroffen, meist schlecht.
Das Prinzip wirkt in beide Richtungen. Es spricht dagegen, zu früh zu entscheiden: Die Datenbanktechnologie in der ersten Woche festzulegen, bevor Sie die Struktur der Daten und die Zugriffsmuster verstehen, ist Raten. Ebenso spricht es dagegen, zu spät zu entscheiden. Hat das Team bereits begonnen, Persistenzcode auf Grundlage einer unausgesprochenen Annahme zu schreiben, ist die Entscheidung schon gefallen, nur nicht bewusst. Braucht der Einkauf sechs Wochen, um einen Cloud-Anbieter zu genehmigen, liegt der Last Responsible Moment für diese Wahl mindestens sechs Wochen vor dem Zeitpunkt, zu dem Sie die Umgebung brauchen.
Fachleute sind sich uneinig, wie weit man das treiben sollte. Kritiker weisen darauf hin, dass der „Last Responsible Moment“ leicht als Freibrief zum Aufschieben missbraucht wird, dass manche Entscheidungen (Teamstruktur, Programmiersprache) alles Weitere prägen und deshalb früh fallen müssen und dass Unentschlossenheit ihre eigenen Kosten hat: Ohne vereinbarte Schnittstellen können Teams nicht parallel arbeiten. Befürworter entgegnen, das Prinzip habe nie „so spät wie möglich“ bedeutet, sondern „so spät, wie es verantwortbar ist“, und den Moment zu bestimmen sei selbst ein Akt der Planung. Beide Seiten sind sich im praktischen Kern einig: Wissen Sie, welche Entscheidungen anstehen, wissen Sie, wann jede fallen muss, und nutzen Sie die Zeit bis dahin, um zu lernen.
Zu früh, zu spät und zum richtigen Zeitpunkt entscheiden
Design für Umkehrbarkeit
Der billigste Weg, eine schwere Entscheidung zu treffen, ist oft, sie in eine leichtere zu verwandeln. Mehrere Techniken senken die Kosten, später umzudenken, um den Preis von etwas Aufwand jetzt.
Abstraktion an der Grenze. Setzen Sie eine schmale eigene Schnittstelle zwischen Ihre Kernlogik und eine Technologie, die Sie vielleicht ersetzen, etwa einen Zahlungsanbieter, einen Message Broker oder die API eines großen Sprachmodells. Ein späterer Austausch der Technologie betrifft dann einen Adapter statt der ganzen Codebasis. Die Idee geht auf David Parnas’ Information Hiding (1972) zurück und taucht in der hexagonalen Architektur (Kapitel 5) wieder auf. Feature-Flags. Liefern Sie neues Verhalten ausgeschaltet aus, schalten Sie es für einen kleinen Teil der Nutzer ein und in Sekunden wieder aus, wenn es sich falsch verhält; das macht Releases zu Zweiwegtüren. Schrittweise Migration. Lassen Sie Alt und Neu nebeneinander laufen und verlagern Sie den Traffic nach und nach, statt in einem Schritt umzuschalten. Spikes und Proofs of Concept. Investieren Sie ein paar Tage, um den riskantesten Teil mit einer Kandidatentechnologie zu bauen, bevor Sie sich festlegen. Vertragliche Ausstiege. Bevorzugen Sie kürzere Bindungen, Standarddatenformate und die Möglichkeit, Ihre Daten zu exportieren.
Das ist Optionsdenken, entlehnt aus der Finanzwelt: Sie zahlen jetzt eine kleine Prämie (einen Adapter, ein Flag, einen Spike), um das Recht, aber nicht die Pflicht zu erwerben, später den Kurs zu ändern. Wie jede Option lohnt sie sich nur, wenn die Prämie im Verhältnis zum Wert der Flexibilität klein ist. Jede Bibliothek „für den Fall, dass wir sie wechseln“ in eine Abstraktion zu hüllen, ist ein klassischer Weg, Kosten und Indirektion für eine Flexibilität hinzuzufügen, die niemand nutzt. Kaufen Sie Optionen für Entscheidungen, die sowohl unsicher als auch teuer umzukehren sind; bei allen anderen entscheiden Sie und machen weiter.
Entscheidungshilfe
Entscheidungshilfe: jetzt entscheiden oder aufschieben?
Nutzen Sie dies für jede Entscheidung, die architekturrelevant sein könnte. Gehen Sie die Fragen der Reihe nach durch.
- Ist andere Arbeit blockiert, oder verschwindet bald eine wichtige Option, wenn niemand entscheidet (zum Beispiel wegen einer Vorlaufzeit im Einkauf oder weil ein Team beginnt, auf einer Annahme aufzubauen)?JaSie sind im Last Responsible Moment. Entscheiden Sie jetzt mit den vorhandenen Informationen, halten Sie die Entscheidung und ihre Annahmen fest und legen Sie einen Termin für die Überprüfung fest.NeinWeiter zur nächsten Frage.
- Lässt sich die Entscheidung billig und sicher umkehren (eine Zweiwegtür)?JaEntscheiden Sie schnell, auf der niedrigsten sinnvollen Ebene (oft durch das Team, dem der Code gehört), halten Sie es kurz fest und machen Sie weiter. Diskutieren Sie nicht eine Woche darüber.NeinEs ist eine Einwegtür. Gehen Sie zur nächsten Frage.
- Können Sie sie billig umkehrbarer machen, zum Beispiel mit einer Schnittstelle um die Technologie, einem Feature-Flag oder einem Pfad für eine schrittweise Migration?JaKaufen Sie zuerst diese Option und behandeln Sie die verbleibende Entscheidung dann als Zweiwegtür.NeinWeiter zur nächsten Frage.
- Würden Informationen, die Sie vor der Frist realistisch beschaffen können (ein Spike, ein Lasttest, ein Gespräch mit einem Stakeholder), die Wahl ändern?JaSchieben Sie bewusst auf: Benennen Sie die Entscheidung, die verantwortliche Person, den Termin, bis zu dem sie getroffen werden muss, und das Experiment, das sie stützen wird.NeinWeiteres Warten hilft nicht. Führen Sie jetzt einen strukturierten Vergleich durch (Kriterien, Gewichte, Optionen), beziehen Sie die Stakeholder ein, denen die Konsequenzen gehören, und schreiben Sie ein Architecture Decision Record.
Kognitive Fallen
Architektinnen und Architekten sind Menschen, und Architekturentscheidungen fallen unter Unsicherheit, Zeitdruck und sozialem Druck: ideale Bedingungen für kognitive Verzerrungen. Wer die häufigsten beim Namen kennt, erkennt sie leichter bei sich selbst und kann sie bei anderen freundlich hinterfragen.
Fallen, die Architekturentscheidungen verzerren
| Falle | Woran man sie erkennt | Gegenmaßnahme |
|---|---|---|
| Ankereffekt | Die zuerst genannte Option oder die erste Schätzung wird zum Bezugspunkt, an dem jede andere Option gemessen wird. | Erzeugen Sie mehrere Optionen unabhängig voneinander, bevor Sie eine davon diskutieren; bitten Sie die Beteiligten, Schätzungen aufzuschreiben, bevor sie sie teilen. |
| Versunkene Kosten (Sunk Cost) | „Wir haben acht Monate in dieses Framework gesteckt, wir können es jetzt nicht fallen lassen“, obwohl die bisherigen Ausgaben verloren sind, egal wie Sie entscheiden. | Beurteilen Sie Optionen nur nach künftigen Kosten und Nutzen; fragen Sie, wie Sie sich entscheiden würden, wenn Sie heute anfingen. |
| Gruppendenken | Ein eng verbundenes Team kommt schnell zu einer Einigung, Widerspruch fühlt sich illoyal an, und niemand spricht den offensichtlichen Einwand aus. | Bestimmen Sie jemanden, der die Gegenposition vertritt; sammeln Sie Meinungen vor dem Meeting schriftlich ein; laden Sie jemanden von außen zur Prüfung ein. |
| Lebenslaufgetriebene Entwicklung | Eine Technologie wird gewählt, weil sie spannend zu lernen ist oder sich im Lebenslauf gut macht, nicht weil sie zum Problem passt. | Verlangen Sie, dass jede Wahl anhand der vereinbarten Kriterien begründet wird; planen Sie Lernzeit gesondert ein. |
| Hype und Mitläufereffekt | „Alle steigen auf X um“ ersetzt die Analyse; Konferenzvorträge sehr großer Unternehmen werden auf kleine Teams übertragen. | Fragen Sie, welches Problem X für die Anwender gelöst hat und ob Sie dieses Problem in dieser Größenordnung haben. |
| Bestätigungsfehler | Belege für die bevorzugte Option werden gesucht und behalten; Belege dagegen werden wegerklärt. | Schreiben Sie vorab auf, welches Ergebnis Ihre Meinung ändern würde, und führen Sie dann den Spike oder Test durch. |
Ausgearbeitetes Beispiel
Ausgearbeitetes Beispiel: eine gewichtete Entscheidungsmatrix
Ein Essenslieferunternehmen baut einen neuen Bestellservice. Bestellungen beinhalten Zahlungen und dürfen nie verloren gehen oder doppelt abgerechnet werden. Das sechsköpfige Team kennt PostgreSQL gut und hat keinen eigenen Datenbankadministrator. Drei Optionen liegen auf dem Tisch: (A) ein verwalteter PostgreSQL-Dienst ihres Cloud-Anbieters, (B) die proprietäre verwaltete Dokumentendatenbank des Anbieters und (C) selbst betriebenes PostgreSQL auf virtuellen Maschinen. Das Team erstellt eine gewichtete Entscheidungsmatrix: Es vereinbart Kriterien und Gewichte aus den Anliegen der Stakeholder (5 = am wichtigsten) und bewertet dann jede Option von 1 (schlecht) bis 5 (hervorragend).
| Transaktionale Integrität (Gewicht 5) | A: 5, B: 3, C: 5. Transaktionen über mehrere Zeilen sind für Bestellungen und Zahlungen zentral; der Dokumentenspeicher unterstützt sie nur mit mehr Einschränkungen. |
|---|---|
| Betrieblicher Aufwand (Gewicht 4) | A: 4, B: 5, C: 2. Selbstbetrieb bedeutet Patches, Backups und Failover durch ein Team ohne Datenbankspezialisten. |
| Vertrautheit des Teams (Gewicht 3) | A: 5, B: 2, C: 4. |
| Kosten bei erwarteter Last (Gewicht 3) | A: 3, B: 4, C: 4. |
| Kapazitätsreserve für Skalierung (Gewicht 2) | A: 3, B: 5, C: 3. Das erwartete Wachstum liegt bei etwa dem Dreifachen in zwei Jahren, gut innerhalb einer einzigen großen PostgreSQL-Instanz. |
| Umkehrbarkeit und Lock-in (Gewicht 2) | A: 4, B: 2, C: 5. Standard-PostgreSQL lässt sich zwischen Anbietern umziehen; die proprietäre API nicht. |
| Gewichtete Summen (maximal 95) | A: 25 + 16 + 15 + 9 + 6 + 8 = 79. B: 15 + 20 + 6 + 12 + 10 + 4 = 67. C: 25 + 8 + 12 + 12 + 6 + 10 = 73. |
| Sensitivitätsprüfung | Wird die Kapazitätsreserve auf Gewicht 5 angehoben (als wäre ein fünfzigfaches Wachstum zu erwarten): A 88, B 82, C 82. Wird der betriebliche Aufwand auf Gewicht 1 gesenkt (als würde ein Plattformteam die Datenbanken für sie betreiben): A 67, B 52, C 67, ein Gleichstand zwischen A und C. |
| Entscheidung | Option A, verwaltetes PostgreSQL. Sie gewinnt unter den vereinbarten Gewichten und bleibt bei plausiblen Änderungen auf Platz eins oder gleichauf an der Spitze. Festgehaltene Konsequenzen: eine höhere Monatsrechnung als beim Selbstbetrieb; Abhängigkeit von den Wartungsfenstern des Anbieters; ein Plan, Schema und Abfragen standardkonform zu halten, damit Option C als Ausweichlösung bleibt. |
Die Zahlen treffen nicht die Entscheidung; sie machen die Überlegungen sichtbar. Wer anderer Meinung ist, kann auf ein bestimmtes Gewicht oder eine bestimmte Bewertung zeigen, statt über das Ganze zu streiten.
Die Sensitivitätsprüfung ist der aufschlussreichste Schritt: Sie zeigt, von welchen Annahmen das Ergebnis abhängt. Hier hängt das Ergebnis vor allem davon ab, dass dem Team die Kapazität für den Datenbankbetrieb fehlt.
Matrizen lassen sich manipulieren, indem man Kriterien und Gewichte erst wählt, wenn die bevorzugte Option feststeht. Vereinbaren Sie Kriterien und Gewichte vor der Bewertung, idealerweise mit den Stakeholdern, deren Anliegen sie abbilden.
Entscheidungen festhalten: ein Ausblick auf ADRs
Das zweite Gesetz besagt, dass das Warum wichtiger ist als das Wie, also muss das Warum aufgeschrieben werden. Das am weitesten verbreitete schlanke Format ist das Architecture Decision Record (ADR), das Michael Nygard 2011 in einem Blogbeitrag vorgeschlagen hat. Ein ADR ist eine kurze Textdatei, die mit dem Code in der Versionsverwaltung liegt und eine Entscheidung nach der oben beschriebenen Anatomie festhält: Titel, Status, Kontext, Entscheidung und Konsequenzen. ADRs werden nie bearbeitet, um die Geschichte zu ändern; eine spätere Entscheidung löst eine frühere ab und verweist auf sie, sodass das Protokoll erzählt, wie sich die Architektur entwickelt hat.
Kapitel 4 behandelt Vorlagen, Werkzeuge und die Gewohnheiten, die ADRs nützlich halten, in Architecture Decision Records. Das folgende Beispiel hält die Entscheidung aus dem ausgearbeiteten Beispiel fest.
ADR 7: Use managed PostgreSQL for the order service
Status: Accepted (2026-10-12)
Context
Orders and payments need multi-row transactions and must never be lost.
The team knows PostgreSQL well and has no database administrator.
Expected growth is about 3x in two years.
Decision
We will use the cloud provider's managed PostgreSQL service.
Consequences
+ Backups, patching and failover are handled by the provider.
+ Standard SQL keeps self-hosting or another provider open as a fallback.
- Monthly cost is about 30% higher than self-hosting at current load.
- Maintenance windows are set by the provider.
Revisit if write volume exceeds what one primary instance can handle.Prüfen Sie Ihr Verständnis
Was ist der Unterschied zwischen dem ersten und dem zweiten Gesetz von Richards und Ford?
Das erste besagt, dass jede Architekturentscheidung eine Abwägung ist. Das zweite besagt, dass die Begründung einer Entscheidung (warum) wichtiger ist als ihre Umsetzung (wie), weil sich das Warum nicht aus dem Code rekonstruieren lässt.
Nennen Sie je ein Beispiel für eine Zweiwegtür und eine Einwegtür in einer typischen Webanwendung.
Zweiwegtür: die Logging-Bibliothek hinter Ihrer eigenen Schnittstelle oder die Ablaufeinstellung eines Caches. Einwegtür: das Datenmodell eines System of Record oder eine öffentliche API, von der bereits viele Partner abhängen.
Warum kann eine zu frühe Entscheidung ebenso schädlich sein wie eine zu späte?
Zu früh heißt, mit weniger Informationen zu entscheiden, als Sie hätten haben können, oft durch Raten. Zu spät heißt, dass die Entscheidung faktisch implizit gefallen ist, durch Annahmen, die bereits in Code oder Pläne eingebaut sind, oder dass eine Option verfallen ist.
Was bringt eine Sensitivitätsprüfung bei einer gewichteten Entscheidungsmatrix?
Sie zeigt, ob die siegreiche Option weiterhin gewinnt, wenn sich Gewichte oder Bewertungen in plausiblen Bereichen ändern, und macht so sichtbar, von welchen Annahmen die Entscheidung abhängt.
Quellen und weiterführende Literatur
Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.
Fragen: „Wir streiten darüber, ob wir einen Event Broker jetzt oder später einführen. Wie erkenne ich, ob das eine Einwegtür ist und wann wir tatsächlich entscheiden müssen?“