Team Topology: Conway's Law and Stream-Aligned Teams
What This Concept Is
Conway's Law (Melvin Conway, 1967): "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations." The system you end up with will look like your org chart.
Team Topologies (Skelton & Pais, 2019) turns this observation into a prescription. Four team types:
- Stream-aligned teams. Own a specific flow of change for a product or capability. Cross-functional. The majority of teams should be this type. Each stream-aligned team typically owns one bounded context and its services.
- Enabling teams. Short-lived coaches that help stream-aligned teams acquire a capability (e.g., tracing adoption, performance work).
- Complicated-subsystem teams. Own a cohesive subsystem with deep specialist knowledge (e.g., video codec team, ML inference team).
- Platform teams. Build internal platforms (CI/CD, observability, service mesh, data infrastructure) consumed by stream-aligned teams as self-service.
Interaction modes are limited to three: collaboration (short bursts), X-as-a-service (one team consumes another's product), and facilitating (enabling teams helping others).
Why It Matters Here
A microservices architecture that does not match the team topology will drift back to a monolith (or to the worst of both worlds). Concretely:
- If you have 12 services and 3 teams, those 12 services will drift back into 3 deployment units regardless of what anyone intended.
- If one team owns a "shared" service that all others depend on, that team becomes a bottleneck and the "shared" service becomes coupled to every product decision.
- If every team has to talk to every other team to ship a feature, communication overhead crushes the independence benefit.
The microservice architecture is only as decoupled as the teams that own it.
Conway's Law, Practical Consequences
- Service count upper bound. A team can realistically own 2-4 services (each with on-call, runbook, backlog, deploy pipeline). A team of 6 with 15 microservices is drowning.
- Service count lower bound. If two teams own pieces of the same service, either merge the teams or split the service. Split ownership is unstable.
- Shared services are bottlenecks. Every "shared library team" or "shared service team" will be on the critical path of every other team. Make them platform teams providing self-service, not service-by-request.
- Inverse Conway maneuver. Design the team structure you want, then design the architecture to match. Changing the architecture alone will not change the outcome.
Stream-Aligned Team, Concrete Example
For the e-commerce retailer from cluster 2, six stream-aligned teams:
| Team | Stream / capability | Services owned | Bounded context |
|---|---|---|---|
| Catalog Team | Browse/search experience | catalog-svc, search-svc | Catalog |
| Cart Team | Cart lifecycle | cart-svc | Cart |
| Orders Team | Order placement & lifecycle | orders-svc, checkout-svc | Orders |
| Payments Team | Payment acceptance | payments-svc | Payments |
| Inventory Team | Stock ops | inventory-svc | Inventory |
| Fulfillment Team | Warehouse & shipping | fulfillment-svc, shipping-svc | Fulfillment |
Supporting teams:
- Platform team. Runs the Kubernetes clusters, CI/CD templates, observability backend, schema registry, service mesh. Stream-aligned teams self-serve.
- Enabling team (temporary). Right now, "Observability Enablement" -- a 2-person team helping each stream team adopt OpenTelemetry. Disbands after six months.
- Complicated-subsystem team. "Recommendations" -- ML specialists owning the recommender as a black box.
Common Confusion / Misconception
"We can just reorganize teams to match the services we want." You can, but you must also change the communication patterns. If everyone still has standups together and Slack is one channel, you are one team with role labels.
"Platform team is just DevOps." Platform teams build a product -- an internal platform -- with self-service, docs, roadmap, and customer feedback. "DevOps" is a practice; platform is a team with product accountability.
"Stream-aligned means frontend/backend split." Wrong. Stream-aligned teams are full-stack within their stream: they own frontend, backend, database, infra, and on-call for their capability. Splitting by technical layer re-creates handoffs.
How To Use It
- Draw your current team topology with interaction modes (collaboration, X-as-service, facilitating).
- Overlay your service ownership onto the team topology.
- Flag any service owned by multiple teams (merge ownership or split service).
- Flag any team owning more than 4 services (split the team or consolidate services).
- For shared concerns (auth, observability, deploy), decide: platform team (product, self-service) or shared service (team bottleneck).
Check Yourself
- Why do microservices architectures tend to drift back toward their team topology?
- What is the difference between a platform team and a shared service team?
- Why is an enabling team typically temporary?
Mini Drill or Application
For a real organization you know (or the e-commerce example), in 15 minutes:
- Name the stream-aligned teams and their owned services.
- Identify one platform team and what it owns.
- Identify one pairing that should be an enabling engagement (temporary).
- Flag any shared services that look like bottlenecks.
How This Sits In The Module
This concept closes the loop. Concepts 1-14 gave you the technical decomposition; this one gives you the organizational decomposition that makes it stick. The single strongest predictor of whether a microservices adoption succeeds is whether the team structure has been re-shaped to match.
Read This Only If Stuck
Local chunks
- FoSA: Making Teams Effective -- the chapter most directly relevant to stream-aligned team practice.
- FoSA: Integrating with the Development Team -- how an architect fits inside a stream-aligned team.
- FoSA: Team Warning Signs -- symptoms of topology mismatch.
- FoSA: Armchair Architect -- the anti-pattern of architects who own no stream.
- FoSA: The Software Architect as a Leader and FoSA: Leading Teams by Example -- the leadership framing.
- FoSA: Negotiation and Facilitation -- the skill set for inverse Conway conversations.
- FoSA: Leveraging Checklists -- checklists are how platform teams productize self-service.
- Primer: Application Layer -- Microservices -- the "single team per service" framing.
External canonical references
- Martin Fowler, TeamTopologies -- one-page summary.
- Matthew Skelton & Manuel Pais, teamtopologies.com -- canonical resource, includes templates.
- Melvin Conway, How Do Committees Invent? -- the original 1968 paper.
- Martin Fowler, ConwaysLaw -- short Bliki entry.
- James Lewis (ThoughtWorks) & Martin Fowler, Microservices -- the "Organized around business capabilities" section is the Conway-Law consequence.
- ThoughtWorks Technology Radar, Inverse Conway Maneuver -- positioned as "Adopt"; the radar's framing.
- Matthew Skelton, The Spotify Model is dead, long live the Spotify Model -- InfoQ commentary on topology patterns.
- Will Larson, An Introduction to Staff Engineering (staffeng.com) -- the role that spans stream teams.
- Atlassian, Platform teams explained -- an accessible enterprise framing.
Depth Path
- Will Larson, Staff Engineer -- covers the technical-leadership role that connects these team types. S8 M5 treats this directly.
- Nicole Forsgren, Jez Humble, Gene Kim, Accelerate (IT Revolution, 2018) -- the DORA research on what predicts delivery performance; team topology is a leading indicator.
- Matthew Skelton & Manuel Pais, Team Topologies -- the book; chapters 3 (team types) and 7 (interaction modes) are the most opened.
Transfer: Team Topology Beyond Microservices
Team Topologies is often framed as a microservices prescription, but the four team types apply to any software organization:
- A monolith with modules can still be stream-aligned per module, with a shared platform team for CI/CD and observability.
- A data platform uses the same pattern: stream-aligned analytics teams, a platform team that runs the warehouse/lake, enabling teams for new tools.
- An SRE organization fits the enabling-team pattern ("help this product team adopt error budgets"), not the platform pattern, in most cases.
The discipline this concept teaches -- match team boundaries to system boundaries, make shared concerns into platform products, keep enabling engagements short -- is architectural in any paradigm. Microservices make the mismatch more painful, faster; they do not invent the problem.
Anti-Patterns in Team Topology
Matching topology anti-patterns for the architectural ones in concept 06:
- Matrix ownership. Multiple teams share commit rights to one service, "equally responsible". In practice no one is responsible. On-call chaos follows.
- Component teams in disguise. Team names are feature-like ("Growth Team") but the actual charter is technical ("Frontend Team", "Database Team"). Features now require hand-offs between specialist teams.
- "Architecture" team that owns no code. A standalone architecture team with authority but no stream-aligned responsibility becomes either ignored or a bottleneck. Architects belong inside stream-aligned teams or as short-term enabling engagements.
- Platform team as a service-request queue. Platform team that accepts tickets to "set up X for me" instead of offering self-service. Every stream-aligned team is now blocked on the platform team.
Cognitive Load and Team Size
Team Topologies emphasizes cognitive load as the ceiling on team capacity:
- Intrinsic load. How hard the domain is.
- Extraneous load. How much accidental complexity (bad tooling, unreliable platforms) adds.
- Germane load. How much active learning the team is absorbing.
A team owning too many services, or too complex a domain, or too flaky a platform, exceeds its cognitive load budget. The symptoms: slower delivery, rising bug rate, burnout, attrition. The fix is usually one of: shrink the service surface, invest in platform, split the team, or accept slower delivery explicitly.
Inverse Conway Maneuver, In Practice
The textbook prescription: decide the architecture you want, reshape the teams to match, then build. In practice, you rarely get a green-field opportunity. The realistic version:
- Map current services to current teams honestly.
- Identify the services that are owned by the "wrong" team (split ownership, shared services, bottleneck teams).
- Move ownership one service at a time -- not a re-org in one day.
- As ownership moves, refactor boundaries to match; services often split or merge along the way.
- Keep doing this quarter by quarter.
The end state of a good microservices adoption is an org where team boundaries and service boundaries are the same picture.
Reading The Org Chart as Architecture
Practical exercise you can do on any team: draw the org chart on one half of the whiteboard and the service dependency graph on the other. Connect each service to the team that owns it. Circle anomalies: services with multiple owners, teams with far more services than peers, edges between services that do not correspond to team interactions.
Every anomaly is a prediction of future drift. They are also where you should spend your next quarter of platform or re-org investment.