Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Lire en français

Abschnitt 11.5 von 11.8 · Fortgeschritten · 24 Min. Lesezeit

Team Topologies und soziotechnisches Design

Videolektion

5 Min. · auf Englisch gesprochen, mit Untertiteln
Nur anhören (Audio)
Transkript lesen

Wer jeden Teil eines Systems verantwortet, zählt ebenso viel wie die Art, wie die Teile gezeichnet sind. In dieser Lektion lernen Sie, Teams und Software gemeinsam zu gestalten, mit Team Topologies.

Denken Sie an eine Restaurantgruppe. Die Küche jedes Restaurants bedient ihre eigenen Gäste, von Anfang bis Ende. Ein zentraler Lieferant beliefert jede Küche aus einem einfachen Katalog mit Zutaten und Ausstattung, damit die Köche keinen Bauernhof betreiben müssen. Eine spezialisierte Konditorei stellt das eine Produkt her, das für jede einzelne Küche zu schwierig ist. Und ein Gastküchenchef bringt einer Küche ein paar Wochen lang eine neue Technik bei und zieht dann weiter. Team Topologies gibt Softwareorganisationen dieselben vier Arten von Teams.

Das Gesetz von Conway besagt, dass ein System tendenziell abbildet, wie seine Teams kommunizieren. Zu entscheiden, wie Teams gebildet werden und was jedes verantwortet, ist also eine Architekturentscheidung. Team Topologies von Matthew Skelton und Manuel Pais, erstmals 2019 erschienen, zielt auf einen schnellen Fluss: einen stetigen Strom kleiner Änderungen, mit wenig Warten zwischen Teams. Seine Teams sind langlebig und haben meist fünf bis neun Personen. Für Architekten verändert das die Aufgabe. Eine Service-Grenze ist nur gut, wenn ein Team sie vollständig verantworten kann.

Die meisten Teams sollten Stream-aligned sein: auf einen Strom von Änderungen ausgerichtet, etwa die Bestellung, und ihn durchgängig verantwortend, bis hin zum Betrieb in der Produktion. Sie sind der Standard. Die anderen drei Typen gibt es, um ihre Last zu verringern. Ein Plattformteam stellt interne Dienste wie Pipelines, Runtime und Observability als Produkt bereit. Andere Teams nutzen sie per Self-Service. Das ist der Modus X-as-a-Service. Ein Enabling Team aus Fachleuten hilft einem anderen Team, eine Fähigkeit aufzubauen, hier Zuverlässigkeit, und zieht dann weiter. Das ist der Modus Facilitating. Ein Complicated-Subsystem-Team verantwortet einen Teil, der seltenes Fachwissen erfordert, etwa den Dispositionsalgorithmus. Hier arbeitet es für begrenzte Zeit im Modus Collaboration mit dem Kurierteam zusammen. Collaboration sollte zeitlich begrenzt sein. Und wenn ein Team, das einen Service nutzen soll, ständig Meetings braucht, sind die Schnittstelle oder die Grenze wahrscheinlich falsch.

Die kognitive Last eines Teams ist alles, was es im Kopf behalten muss, um das zu bauen, zu betreiben und zu ändern, was es verantwortet. Überlasten Sie es, und Sie bekommen langsame Lieferung, eine fragile Rufbereitschaft und Wissen, das an ein oder zwei Personen hängt. Bemessen Sie Verantwortlichkeiten also bewusst. Geben Sie jede Domäne einem einzigen Team. Ein Team kann meist zwei oder drei einfache Domänen bewältigen, aber ein Team mit einer komplexen Domäne sollte nichts anderes verantworten. Verringern Sie die extrinsische Last, also die Schwierigkeit, die aus der Organisation der Arbeit statt aus der Domäne selbst entsteht, mit Plattformen, Automatisierung und guter Dokumentation. Und wenn etwas für ein Team zu groß wird, teilen Sie es entlang einer Bruchlinie. Ein Bounded Context ist meist die beste. Eine Aufteilung allein nach Technologie, etwa Mobile und Backend, ist in der Regel die schwächste Wahl.

Hier ist die Neuordnung der Essenslieferplattform. Sie hat achtunddreißig Engineers in fünf Teams, eines pro technischer Schicht. Eine Idee braucht etwa sechs Wochen bis in die Produktion, und alle Teams koordinieren ihre Releases alle zwei Wochen. Erstens: die Ströme kartieren. Von den letzten fünfzig Features fielen vierundvierzig überwiegend in einen von drei Strömen: Kundenbestellung, Restaurantpartner und Lieferung. Zweitens: die Bruchlinien prüfen. Das sind bereits getrennte Bounded Contexts, der Code kann also folgen. Und die Kurierzuweisung nutzt einen Solver, den nur drei Engineers verstehen: ein Kandidat für ein Complicated Subsystem. Drittens: die Teams bemessen, drei Stream-aligned Teams mit je sieben Personen, ein Dispositionsteam mit fünf, ein Plattformteam mit neun und ein Enabling Team mit drei. Immer noch achtunddreißig Personen. Viertens: Interaktionsmodi wählen, mit Enddatum. Alle nutzen die Plattform vom ersten Tag an als Service. Lieferung und Disposition arbeiten ein Quartal lang zusammen, und das Enabling Team unterstützt Bestellung acht Wochen lang. Nach zwei Quartalen sollten die meisten Features von einem Team ohne koordiniertes Release geliefert werden. Anhaltende teamübergreifende Arbeit würde eine Grenze zeigen, die zu überdenken ist.

Eine Neuorganisation der Teams strukturiert eine eng gekoppelte Codebasis nicht um. Monatelang kämpfen neue Teams gegen die alte Architektur, planen Sie Team- und Architekturänderungen also als ein Programm. Ein häufiger Fehler ist, bestehende Teams mit diesen Etiketten umzubenennen, während Verantwortung, Finanzierung und Zusammenarbeit gleich bleiben. Ein anderer ist ein Plattformteam, das über Tickets und Genehmigungen arbeitet, sodass andere auf es warten. Das ist ein Engpass, keine Plattform.

Der vollständige Abschnitt behandelt Team-APIs, die Thinnest Viable Platform und alle Bruchlinien. Als Nächstes geht es in Abschnitt elf Punkt sechs um die Modernisierung von Altsystemen. Bis gleich.

Was Sie wissen müssen

Teamdesign ist Architekturarbeit

Kapitel 3 hat gezeigt, dass das Gesetz von Conway keine Kuriosität ist, sondern eine Kraft: Das System, das eine Gruppe von Teams baut, bildet tendenziell ab, wie diese Teams kommunizieren. Wenn das stimmt, dann ist die Entscheidung, wie Teams gebildet werden, was jedes verantwortet und wie sie zusammenarbeiten, eine Architekturentscheidung mit ebenso dauerhaften Folgen wie die Wahl einer Datenbank oder eines Integrationsstils. Die Disziplin, Softwarestruktur und Teamstruktur gemeinsam zu gestalten, heißt soziotechnische Architektur.

Der einflussreichste praktische Ansatz dafür ist Team Topologies von Matthew Skelton und Manuel Pais (IT Revolution, 2019; zweite Auflage 2025). Er geht von einem einfachen Ziel aus, dem schnellen Fluss (Fast Flow): einem stetigen, nachhaltigen Strom kleiner Änderungen von der Idee bis in die Produktion, mit wenig Warten zwischen Teams. Dann bietet er ein kleines Vokabular, um Organisationen zu gestalten, die das erreichen: vier Teamtypen, drei Interaktionsmodi, eine Grenze namens kognitive Last des Teams und eine Technik, um die Nähte zu finden, entlang derer sich Software und Teams aufteilen lassen.

Mehrere Grundannahmen ziehen sich durch den Ansatz. Das Team, nicht der Einzelne, ist die Liefereinheit: Arbeit wird an Teams vergeben, Verantwortung liegt bei Teams, und Teams sind langlebig, damit sie Wissen über ihre Domäne und ihren Code ansammeln, statt für ein Projekt zusammengestellt und danach wieder verstreut zu werden. Teams sind klein, meist fünf bis neun Personen, weil Vertrauen und gemeinsames Verständnis jenseits dieser Größe schnell abnehmen (die Autoren stützen sich auf Robin Dunbars Forschung zu Gruppengrößen). Und Teamgrenzen sollten für den Fluss von Änderungen gestaltet werden, nicht nach der Bequemlichkeit von Berichtswegen oder der Geschichte, wer was gebaut hat.

Für Architekten verändert das die Aufgabe. Eine vorgeschlagene Service-Grenze ist nur gut, wenn ein Team sie vollständig verantworten kann; ein vorgeschlagenes Team ist nur tragfähig, wenn der Code, den es verantwortet, ihm erlaubt zu arbeiten, ohne drei andere Teams um Erlaubnis zu fragen. Wer Kästchen zeichnet, ohne zu fragen, wer jedes davon verantworten wird, entwirft nur das halbe System.

Die vier grundlegenden Teamtypen

Team Topologies vertritt die Auffassung, dass fast jedes Team in einer Softwareorganisation einem von vier Typen angehören sollte. Der Sinn so weniger Typen ist Klarheit: Jeder Typ hat einen anderen Zweck, eine andere Art, Erfolg zu messen, und eine andere Beziehung zu den übrigen Teams; wer den Typ eines Teams kennt, weiß also, was er von ihm erwarten kann.

Ein Stream-aligned Team ist auf einen Strom von Änderungen ausgerichtet: ein Produkt, eine Customer Journey, eine Nutzergruppe oder eine fachliche Fähigkeit. Es verantwortet seinen Teil durchgängig, von der Erkundung über den Bau bis zum Betrieb in der Produktion, und sollte die meisten Änderungen liefern können, ohne auf jemanden zu warten. Stream-aligned Teams sind der Standard und sollten die große Mehrheit bilden; die anderen drei Typen gibt es, um ihre Last zu verringern.

Ein Plattformteam stellt interne Dienste (Deployment-Pipelines, eine Laufzeitumgebung, Observability, Dateninfrastruktur) als Produkt bereit, das Stream-aligned Teams per Self-Service nutzen. Eine gute Plattform wird an der Geschwindigkeit ihrer Nutzer gemessen, nicht an ihrer eigenen Feature-Liste. Ein Enabling Team besteht aus Fachleuten, die anderen Teams helfen, eine fehlende Fähigkeit zu erwerben, etwa Testautomatisierung, Observability-Praktiken oder ein neues Framework, und dann weiterziehen; sein Erfolg zeigt sich daran, dass das andere Team es nicht mehr braucht. Ein Complicated-Subsystem-Team verantwortet einen Teil, der seltenes Fachwissen erfordert, etwa eine Preis-Engine auf Basis versicherungsmathematischer Modelle, einen Solver zur Routenoptimierung oder einen Video-Codec, damit Stream-aligned Teams ihn nutzen können, ohne ihn beherrschen zu müssen. Das Buch betont, dass dieser Typ sparsam und nur bei echtem Spezialwissen eingesetzt werden sollte.

Die vier Teamtypen im Vergleich

TeamtypZweckVerantwortetGesunde AnzeichenBeispiel Essenslieferung
Stream-alignedEinen kontinuierlichen Strom von Änderungen für einen Teil des Geschäfts liefernFeatures, Code, Daten und Betrieb seines Stroms, durchgängigReleased unabhängig; die meisten Änderungen brauchen kein anderes Team; die Bereitschaftslast ist tragbarTeam Kundenbestellung: Speisekarten für Kunden, Warenkorb, Checkout, Bestellverfolgung
PlattformDie kognitive Last der Stream-aligned Teams durch interne Self-Service-Produkte verringernInterne Plattformdienste, ihre Dokumentation und ihre ZuverlässigkeitTeams nutzen sie freiwillig; das Onboarding eines neuen Service dauert Stunden, nicht WochenTeam Lieferplattform: Pipelines, Container-Runtime, Logging und Metriken, Event Broker
EnablingFähigkeitslücken in anderen Teams schließen und dann gehenKnow-how, Leitfäden, Beispiele; nicht den Produktionscode anderer TeamsEinsätze sind zeitlich begrenzt und enden damit, dass das andere Team selbstständig istEnabling Team für Zuverlässigkeit, das Teams zu Service Level Objectives und Incident-Praxis coacht
Complicated SubsystemEin Spezialgebiet kapseln, das für jedes Stream-aligned Team zu tief istEine Spezialkomponente hinter einer klaren SchnittstelleNutzer verwenden sie als Service, ohne die Fachleute im Raum zu brauchenTeam Dispositionsoptimierung: der Algorithmus, der Kuriere Bestellungen zuweist

Teamtypen und Interaktionsmodi

Die vier Teamtypen von Team Topologies und die drei Interaktionsmodi zwischen ihnenFacilitatingEnablingZuverlässigkeit coachenBestellungStream-alignedRestaurantsStream-alignedKuriereStream-alignedDispoComplicatedSubsystemCollaborationX-as-a-Service(Self-Service)PlattformteamPipelines, Runtime, Observability, DatenCollaboration (befristet)X-as-a-ServiceFacilitating
Die meisten Teams sind Stream-aligned; eine Plattform bedient sie als Service, ein Enabling Team unterstützt (Facilitating), und ein Complicated-Subsystem-Team arbeitet für begrenzte Zeit eng mit einem Strom zusammen.

Drei Interaktionsmodi

Teamtypen sagen, was Teams sind; Interaktionsmodi sagen, wie sie zusammenarbeiten. Skelton und Pais argumentieren, dass unklare, spontane Zusammenarbeit zwischen Teams eine Hauptursache für Verzögerungen ist, weil jedes ungeplante Gespräch eine Abhängigkeit darstellt. Sie empfehlen daher, dass jedes Paar von Teams, das zusammenarbeiten muss, bewusst einen von drei Modi wählt, für einen festgelegten Zeitraum.

Bei Collaboration arbeiten zwei Teams eng an einem gemeinsamen Ziel zusammen, mit verschwimmenden Zuständigkeiten, zum Beispiel während sie herausfinden, wie eine neue Fähigkeit aufgeteilt werden sollte. Das bringt schnelles Lernen, kostet aber beide Teams Kapazität und kognitive Last und sollte daher zeitlich begrenzt sein. Bei X-as-a-Service stellt ein Team etwas bereit (eine API, eine Plattformfähigkeit, eine Bibliothek), das ein anderes mit wenig oder ganz ohne Abstimmung nutzt; das skaliert gut, funktioniert aber erst, wenn die Grenze gut verstanden und die Schnittstelle gut ist. Bei Facilitating hilft ein Team, typischerweise ein Enabling Team, einem anderen, etwas zu lernen oder ein Hindernis zu beseitigen.

Die Modi sollen sich ändern. Ein häufiger Ablauf ist erst erkunden, dann festigen: Ein Plattformteam arbeitet einige Wochen mit einem Stream-aligned Team zusammen, um eine neue Fähigkeit zu entwerfen, macht daraus dann ein Self-Service-Angebot und wechselt zu X-as-a-Service. Die Modi dienen auch als Sensor. Wenn ein Team, das einen Service als Service nutzen soll, ständig Meetings braucht, sind die Schnittstelle oder die Grenze wahrscheinlich falsch; wenn zwei Teams seit einem Jahr zusammenarbeiten, sind sie vielleicht in Wahrheit ein Team, oder die Trennung zwischen ihnen liegt an der falschen Stelle.

Die drei Interaktionsmodi

ModusWie er aussiehtEinsetzen, wennKosten oder Warnsignal
CollaborationZwei Teams arbeiten eine Zeit lang wie eines an einem gemeinsamen Problem; gemeinsame Design-Sessions, gemeinsame Backlog-EinträgeEine neue Grenze, Technologie oder Fähigkeit erkunden, bei der noch niemand die richtige Schnittstelle kenntHohe kognitive Last für beide Teams; dauert es unbegrenzt an, ist die Grenze wahrscheinlich falsch
X-as-a-ServiceEin Team nutzt eine API, Plattform oder Komponente, die ein anderes bereitstellt, über Dokumentation und Self-ServiceGrenze und Schnittstelle sind gut verstanden und stabilPasst sich langsam an, wenn die Schnittstelle schlecht ist; ständige Supportanfragen zeigen, dass es noch kein echter Service ist
FacilitatingCoaching, Pairing, Beispiele und kurze Workshops, die einem Team helfen, eine Fähigkeit aufzubauenEinem Team fehlt eine Fähigkeit, oder es wird von einem Hindernis blockiert, das es selbst beseitigen lernen kannWird dazu, die Arbeit des anderen Teams zu erledigen, was Abhängigkeit statt Fähigkeit aufbaut

Kognitive Last als Entwurfsrandbedingung

Die Idee der kognitiven Last stammt aus der pädagogischen Psychologie. John Swellers Cognitive Load Theory, erstmals 1988 veröffentlicht, ging von der Beobachtung aus, dass das menschliche Arbeitsgedächtnis nur wenige neue Elemente gleichzeitig halten und verarbeiten kann, sodass Unterricht so gestaltet werden sollte, dass er es nicht überlastet. Die Theorie unterscheidet intrinsische Last (die inhärente Schwierigkeit des Stoffs), extrinsische Last (Schwierigkeit, die durch die Art der Aufgabenstellung entsteht) und, in späteren Arbeiten, lernbezogene Last (germane Load: Anstrengung, die dauerhaftes Verständnis aufbaut). Die Forschung diskutiert noch, ob die lernbezogene Last eine eigene Kategorie ist, und Team Topologies nutzt alle drei als praktische Heuristik, nicht als Messgröße.

Abschnitt 3.7 hat die Teamversion dieser Idee eingeführt: alles, was ein Team im Kopf behalten muss, um das zu bauen, zu betreiben und zu ändern, was es verantwortet. Hier geht es darum, sie als Entwurfsrandbedingung zu nutzen. Wenn eine Architektur einem Team mehr zuweist, als es verstehen kann, sind die Folgen vorhersehbar: langsamere Lieferung, oberflächliche Fixes, eine fragile Rufbereitschaft, Wissen, das sich auf ein oder zwei Personen konzentriert, und schließlich Kündigungen. Es sind dieselben Symptome, die oft schlechten Entwicklern oder schlechtem Code angelastet werden.

Das Buch bietet Faustregeln, um die Verantwortlichkeiten eines Teams nach der Komplexität der Domäne zu bemessen: Geben Sie jede Domäne einem einzigen Team; ein Team kann meist zwei oder drei einfache Domänen bewältigen; ein Team, das eine komplexe Domäne verantwortet, sollte nichts anderes verantworten; und kein Team sollte zwei komplizierte Domänen verantworten. Man kann Teams auch direkt fragen, zum Beispiel mit einer kurzen Umfrage dazu, wie gut sie ihre Systeme verstehen, wie sicher sie sich in der Rufbereitschaft fühlen und wie viel Zeit in Werkzeuge statt in die Domäne fließt. Wachsende Ticket-Warteschlangen, lange Einarbeitungszeiten und häufige Übergaben an die eine Person, die eine Komponente versteht, sind nützliche indirekte Signale.

Die architektonischen Antworten spiegeln die drei Arten von Last. Verringern Sie die extrinsische Last mit Plattformen, Automatisierung, Paved Roads und guter Dokumentation. Begrenzen Sie die intrinsische Last, indem Sie Service- und Modulgrenzen so ziehen, dass der Anteil jedes Teams an der Domäne zusammenhängend und von beherrschbarer Größe ist, und indem Sie tiefe Spezialgebiete hinter Schnittstellen von Complicated Subsystems legen. Schützen Sie die lernbezogene Last, indem Sie Zeit zum Lernen lassen; hier helfen Enabling Teams.

Team-APIs und die Thinnest Viable Platform

Wenn Teams in bewusst gewählten Modi zusammenarbeiten, braucht jedes Team ein klares Gesicht gegenüber dem Rest der Organisation. Team Topologies nennt das die Team-API: alles, was das Team anbietet und erwartet. Dazu gehört die technische API (Endpoints, Events, Bibliotheken sowie ihre Regeln für Versionierung und Abkündigung), aber auch die menschliche Schnittstelle: Dokumentation und Onboarding-Leitfäden, die Roadmap und aktuellen Prioritäten des Teams, seine Arbeitsweisen, die Kanäle, über die es erreichbar ist, wie man Arbeit bei ihm anfragt und mit welchen Antwortzeiten zu rechnen ist.

Eine Team-API aufzuschreiben ist eine günstige und aufschlussreiche Übung. Sie zwingt ein Team zu sagen, was es verantwortet, was meist Services ohne Verantwortliche und umstrittene Daten offenlegt, und sie gibt anderen Teams eine Möglichkeit zur Zusammenarbeit ohne Meeting. Viele Organisationen führen sie als kurze Seite im Repository des Teams, die jedes Quartal zusammen mit der Architekturdokumentation überprüft wird.

Die Plattform verdient besondere Sorgfalt, weil hier gute Absichten am häufigsten schiefgehen. Eine Plattform, die als großes internes Projekt mit langer Roadmap und verpflichtender Einführung gebaut wird, kann leicht kognitive Last hinzufügen, statt sie zu verringern. Skelton und Pais empfehlen die Thinnest Viable Platform: die kleinste Menge an Diensten, Dokumentation und Standards, die ihre Nutzer tatsächlich schneller macht. Für eine kleine Organisation kann das eine gut gepflegte Seite sein, die auflistet, welche Dienste des Cloud-Anbieters die Teams nutzen sollen und wie; für eine große kann es eine Internal Developer Platform sein. Platform Engineering wird ausführlich in Kapitel 10 behandelt; entscheidend ist hier, dass eine Plattform ein Produkt ist, dessen Kunden andere Teams sind, und dass sie als solches gestaltet und gemessen werden sollte.

Bruchlinien: wo Software und Teams aufgeteilt werden

Wenn ein Teil des Systems für ein Team zu groß geworden ist, muss er aufgeteilt werden, und die Aufteilung muss sowohl für den Code als auch für die Teams funktionieren. Team Topologies nennt die natürlichen Nähte, entlang derer sich Software teilen lässt, Bruchlinien (Fracture Planes). Das Buch nennt mehrere, und die erste ist meist die beste: ein Bounded Context aus dem Domain-Driven Design, weil eine Grenze, die der Sprache und den Regeln des Geschäfts folgt, zusammengehörige Änderungen tendenziell beieinanderhält.

Die anderen sind nützlich, wenn sie mit einem echten Unterschied darin übereinstimmen, wie Teile des Systems behandelt werden müssen. Eine Aufteilung allein entlang einer Technologiegrenze (zum Beispiel ein Mobile-Team und ein Backend-Team) ist in der Regel die schwächste Wahl, weil die meisten Änderungen sie dann überqueren; das ist genau die geschichtete Teamstruktur, vor der das Gesetz von Conway warnt.

Bruchlinien mit Beispielen aus der Essenslieferung

Bruchlinie (Fracture Plane)Aufteilen, wennBeispiel
Fachliche Domäne (Bounded Context)Teile der Domäne haben ihre eigene Sprache, eigene Regeln und eigene FachleuteBestellung, Restaurant-Onboarding und Kurierverwaltung als getrennte Kontexte
Regulatorische ComplianceEin Teil unterliegt Regeln, die den Rest nicht belasten sollenDie Verarbeitung von Kartenzahlungen wird für PCI DSS in einem kleinen, auditierten Bereich gehalten
ÄnderungstaktManche Teile ändern sich täglich, andere jährlichAktionen und Kampagnen ändern sich wöchentlich; Rechnungsregeln ändern sich selten
Standort des TeamsTeams arbeiten in Zeitzonen mit wenig ÜberschneidungEin Team für den Kurierbetrieb in einem anderen Land verantwortet das Kurier-Onboarding
RisikoManche Teile vertragen Experimente, andere nichtEmpfehlungsexperimente getrennt von der Bestellannahme
Performance-IsolationEin Teil hat sehr andere Anforderungen an Last oder LatenzLive-Standortaktualisierungen der Kuriere getrennt vom Durchsuchen der Speisekarten
TechnologieEin Teil braucht einen wirklich anderen Technologie-StackEine alte Tablet-Integration für Restaurants, die nur auf alter Hardware läuft
PersonasVerschiedene Nutzergruppen haben unterschiedliche Bedürfnisse und JourneysKunden, Restaurantpersonal und Kuriere haben jeweils ihre eigene App und ihr eigenes Team

Das Gesetz von Conway, das Inverse Conway Maneuver und seine Grenzen

Team Topologies ist im Grunde ein Werkzeugkasten für das Inverse Conway Maneuver, das Abschnitt 3.7 beschrieben hat: Legen Sie die gewünschte Architektur fest, und gestalten Sie dann Teams und Interaktionsmodi so, dass das Gesetz von Conway das System in diese Richtung treibt. Seine Ergänzungen sind praktischer Natur. Teamtypen sagen, welche Art von Team jeden Teil verantworten sollte; Interaktionsmodi sagen, welche Teamgrenzen dünn sein sollen (X-as-a-Service) und welche vorübergehend dick (Collaboration); die kognitive Last sagt, wie viel jedes Team verantworten kann; Bruchlinien sagen, wo geschnitten wird.

Die Grenzen aus Abschnitt 3.7 gelten weiterhin und verdienen es, in diesem Zusammenhang wiederholt zu werden. Eine Neuorganisation der Teams strukturiert eine eng gekoppelte Codebasis nicht um: Monatelang nach einer Neuorganisation kämpfen die neuen Teams gegen die alte Architektur, weshalb Teamänderungen und Architekturänderungen als ein gemeinsames Programm geplant werden sollten. Grenzen, die zu früh in Teams verfestigt werden, machen Fehler teuer; viele Organisationen halten unsichere Grenzen daher innerhalb eines Teams oder eines modularen Monolithen, bis sie Belege haben. Und häufige Neuorganisationen zerstören das Wissen langlebiger Teams, auf das der Ansatz angewiesen ist.

Fachleute sind sich auch uneinig, wie wörtlich der Ansatz anzuwenden ist. Befürworter schätzen das gemeinsame Vokabular, das vage Klagen (wir warten ständig auf das Datenteam) in gestaltbare Fragen verwandelt (welchen Interaktionsmodus wollen wir mit dem Datenteam, und was würde ihn zu X-as-a-Service machen?). Kritiker warnen, dass die vier Typen oft als Etiketten auf eine unveränderte Organisation geklebt werden, dass echte Teams manchmal Typen mischen (ein Plattformteam, das auch ein Complicated Subsystem verantwortet) und dass der Ansatz wenig über Finanzierung, Führungsstruktur oder Anreize sagt. Beide Punkte sind berechtigt: Die Typen sind eine Entwurfshilfe, kein Organigramm, und die Autoren selbst stellen sie als Ausgangspunkt für fortlaufende Anpassung dar.

Ausgearbeitetes Beispiel

Ausgearbeitetes Beispiel: die Teams der Essenslieferplattform entlang von Strömen neu ordnen

Die Essenslieferplattform ist auf 38 Engineers in fünf Teams gewachsen, die nach technischen Schichten organisiert sind: Mobile-Apps, Web-Frontend, Backend-API, Datenbank und Betrieb. Die Durchlaufzeit von der Idee bis in die Produktion beträgt etwa sechs Wochen, Releases werden alle zwei Wochen über alle Teams hinweg koordiniert, und die letzten drei Incidents dauerten jeweils mehrere Stunden, weil niemand eine ganze Customer Journey verantwortete. Der Architekt und die Engineering-Leitung gestalten die Organisation in fünf Schritten neu.

1. Die Ströme kartierenEvent Storming und eine Durchsicht der letzten 50 Features zeigen drei Hauptströme von Änderungen: Kundenbestellung (Speisekarten, Warenkorb, Checkout, Verfolgung), Restaurantpartner (Onboarding, Speisekarten, Öffnungszeiten, Auszahlungen) und Lieferung (Kurier-Onboarding, Zuweisung, Live-Verfolgung). 44 der 50 Features fielen überwiegend in einen davon.
2. Die Bruchlinien der Software prüfenBestellung, Restaurants und Lieferung sind bereits getrennte Bounded Contexts mit eigenen Services und Datenbanken (Abschnitt 11.1), der Code kann also folgen. Die Kurierzuweisung nutzt einen Optimierungs-Solver, den nur drei Engineers verstehen: ein Kandidat für ein Complicated Subsystem. Kartenzahlungen bleiben bei Bestellung, aber in einem kleinen, separat auditierten Modul (regulatorische Bruchlinie).
3. Teams nach kognitiver Last bemessenDrei Stream-aligned Teams mit je 7 Personen (jedes mit Mobile-, Web-, Backend-, Test- und Betriebskompetenz). Ein Complicated-Subsystem-Team mit 5 Personen für die Dispositionsoptimierung (die drei Fachleute plus zwei Engineers, die sich in die Domäne einarbeiten). Ein Plattformteam mit 9 Personen, das Pipelines, die Container-Runtime, Observability und den Event Broker verantwortet. Ein kleines Enabling Team mit 3 Personen für Zuverlässigkeitspraktiken. Insgesamt: 38.
4. Interaktionsmodi wählenStream-aligned Teams nutzen die Plattform vom ersten Tag an als X-as-a-Service, mit ihren bestehenden Pipelines. Lieferung und Disposition arbeiten ein Quartal lang zusammen (Collaboration), um die Zuweisungsschnittstelle neu zu gestalten, und wechseln dann zu X-as-a-Service. Das Enabling Team unterstützt Bestellung acht Wochen lang (Service Level Objectives, Runbooks für die Rufbereitschaft) und zieht dann zu Restaurants weiter.
5. Team-APIs veröffentlichen und messenJedes Team schreibt eine einseitige Team-API, jeder Service und jede Datenbanktabelle erhält genau ein verantwortliches Team, und die Leitung verfolgt jedes Quartal Durchlaufzeit, Deployment-Häufigkeit, teamübergreifende Tickets pro Feature und eine Umfrage zur Sicherheit in der Rufbereitschaft.
Angestrebtes ErgebnisNach zwei Quartalen sollten die meisten Features von einem Team ohne koordiniertes Release geliefert werden; anhaltende teamübergreifende Arbeit würde eine Grenze zeigen, die zu überdenken ist.

Die Neuordnung geht von Änderungsströmen und den bestehenden Grenzen der Software aus, nicht von den aktuellen Berichtswegen.

Fachleute werden nur dort gebündelt, wo die Domäne es verlangt (Disposition), und die Plattform existiert, um die Last der Stream-aligned Teams zu verringern, nicht um sie zu kontrollieren.

Interaktionsmodi haben ein Enddatum; von der Organisation wird also erwartet, dass sie sich weiterentwickelt, statt in einem neuen Organigramm festzuschreiben.

Vorher und nachher

Vorher und nachher: Teams der Essenslieferplattform, umgestellt von technischen Schichten auf Stream-aligned, Plattform-, Enabling und Complicated-Subsystem-TeamsVorher: ein Team pro technischer Schicht (38 Engineers)Mobile-App-Team (8)Web-Frontend-Team (6)Backend-API-Team (12)Datenbankteam (5)Betriebsteam (7)Ein Feature wieVorbestellungen brauchtalle fünf Teams:4 Übergaben, 5 Backlogs,1 geteilter Release-TrainNiemand verantwortet einKundenergebnis ganzNachher: Teams entlang von ÄnderungsströmenBestellung (7)Kunden, CheckoutRestaurants (7)Onb., SpeisekartenLieferung (7)Kuriere, TrackingEnabling (3)Zuverlässigkeit, befristetDispo-Optimierung (5)Complicated SubsystemX-as-a-Servicefür jedes TeamLieferplattform (9): Pipelines, Runtime, Observability, Daten
Schichtteams zwingen jedes Feature durch jedes Team; Stream-aligned Teams, unterstützt von einer Plattform, einem Enabling Team und einem Spezialistenteam, können die meisten Features allein liefern.

Häufige Fragen

Sind Komponententeams immer falsch?

Nicht immer. Ein Team, das eine gemeinsame Komponente verantwortet, kann die richtige Wahl sein, wenn die Komponente tiefes Spezialwissen erfordert (ein Complicated Subsystem) oder als echtes Self-Service-Produkt angeboten wird (Teil einer Plattform). Zum Problem wird es, wenn die meisten Features Änderungen an der Komponente brauchen und die Stream-aligned Teams dafür Schlange stehen müssen.

Wo sitzen Architekten in diesem Modell?

Meist nicht als eigenes Team, das als Torwächter fungiert. Architekten handeln oft wie ein Enabling Team, helfen Stream-aligned Teams, gute Entscheidungen zu treffen, halten systemweite Qualitäten sichtbar und wirken an der Gestaltung der Teamstruktur selbst mit. Abschnitt 11.4 erörtert, wie Governance ohne Gates funktionieren kann.

Wie oft sollten sich Teamgrenzen ändern?

Selten und bewusst. Von Interaktionsmodi wird erwartet, dass sie sich alle paar Monate ändern; Teamzugehörigkeit und Verantwortung sollten viel länger stabil bleiben, weil sich Domänen- und Systemwissen in langlebigen Teams ansammelt.

Prüfen Sie Ihr Verständnis

Nennen Sie drei Dinge, die eine Team-API neben ihren Code-Schnittstellen enthält.

Zum Beispiel ihre Dokumentation und Onboarding-Leitfäden, ihre Roadmap und Prioritäten, ihre Arbeitsweisen, die Kanäle, über die das Team erreichbar ist, und wie man Arbeit bei ihm anfragt.

Warum sollen sich Interaktionsmodi im Lauf der Zeit ändern?

Weil Collaboration zum Erkunden einer neuen Grenze passt und sich die Teams, sobald Grenze und Schnittstelle verstanden sind, auf X-as-a-Service einpendeln sollten; die Modi folgen der Reife der Grenze.

Was ist die Thinnest Viable Platform, und warum sollte man sie anstreben?

Die kleinste Menge an Diensten, Dokumentation und Standards, die die nutzenden Teams tatsächlich schneller macht; eine größere Plattform läuft Gefahr, kognitive Last hinzuzufügen, statt sie zu verringern.

Warum ist eine Aufteilung in ein Frontend- und ein Backend-Team meist eine schwache Bruchlinie?

Weil die meisten Features sie überqueren, sodass jede Änderung beide Teams, Übergaben und koordinierte Releases braucht; das ist die geschichtete Struktur, die das Gesetz von Conway in ein geschichtetes, gekoppeltes System verwandelt.

Weiter · 11.6Modernisierung von AltsystemenWarum große Neuentwicklungen scheitern und wie Sie stattdessen sicher modernisieren: die sieben Rs, das Strangler-Fig-Muster, Branch by Abstraction, Parallelbetrieb, Change Data Capture, Anti-Corruption Layer und eine sorgfältige Datenmigration.Weiter →

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 haben getrennte Frontend-, Backend- und Datenbankteams, und jedes Feature dauert Wochen. Wie schlage ich einen Wechsel zu Stream-aligned Teams vor, ohne alles kaputt zu machen?“