Close

Team Topologies

De invloed van vier fundamentele topologieën op een DevOps-transformatie.

Ian Buchanan

Principal Solutions Engineer

Redactionele bijdrage: Shana Vu

Bekijk meer informatie over de voordelen van op stream afgestemde teams, hoe ze werken met platformteams en subsysteemteams, en teams in staat stellen waarde te leveren aan klanten.

Inleiding tot 'Team Topologies'


Engineeringteams moeten sneller dan ooit zijn om waarde aan hun klanten te leveren. De opkomst van cloud-, SaaS- en 'Always-on'-services betekent dat klanten nieuwe functies, minder bugs en een uptime van 99,99% (of hoger) verwachten.

Om aan deze eisen te voldoen, hebben organisaties agile werkwijzen toegepast en onlangs ook DevOps-werkwijzen, waardoor de time-to-market/doorlooptijd sneller verloopt, de implementatiefrequentie verhoogd wordt, de teamcultuur verbetert en de samenwerking tussen teams/afdelingen toeneemt.

Het toepassen van DevOps-werkwijzen is gemakkelijker gezegd dan gedaan. Daarom bevat het boek Team Topologies handige manieren waarop organisaties DevOps in hun bedrijf kunnen implementeren, waaronder informatie over welke soort teams het effectiefst is. Dit boek geeft een uitgangspunt van de denkwijze van Atlassian over teams. In plaats van hun bevindingen te herhalen, willen we onze eigen kijk op de soorten teams geven.

De eerste stap naar een DevOps-transformatie is de identificatie van de bestaande organisatiestructuur. Bij elk bedrijf zijn er tegenwoordig echter veel verschillende soorten teams, en in sommige gevallen neemt één team meerdere rollen en verantwoordelijkheden op zich. Hierdoor is het voor managementteams moeilijk om de volledige organisatie in kaart te brengen en vragen te beantwoorden als:

oplossing bekijken

DevOps-tools voor het hele team

gerelateerde content

Een DevOps-cultuur creëren

  • Hebben we de juiste teams?
  • Hebben we een gebrek aan capaciteiten op bepaalde gebieden die niet door een team worden aangepakt?
  • Hebben teams de nodige balans tussen zelfstandigheid en support van andere teams?

Ontwikkelings- en operationsleiders hebben meer inzicht of de juiste teams aanwezig zijn door naar hun organisatie te kijken door de 'Team Topologies'-lens. We raden aan om het aantal teamvariaties terug te brengen tot vier fundamentele 'Team Topologies' die duidelijk zijn voor zowel het hogere management als de teamleden zelf:

  • Op stream afgestemd team
  • Platformteam
  • Gecompliceerd subsysteemteam
  • Uitvoerend team

Houd er rekening mee dat deze soorten teams verschillende vormen hebben, afhankelijk van hoe groot en gevorderd het bedrijf is. In werkelijkheid is een combinatie van meerdere soorten teams of een team dat verandert in een ander team vaak de beste aanpak.

Op stream afgestemd team

Op stream afgestemde teams richten zich op één impactvolle werkstroom. Dit kan één product of service zijn, één set van functies, één gebruikerstraject of één gebruikerspersona. Het team is in staat om klant- of gebruikerswaarde zo snel, veilig en onafhankelijk mogelijk te ontwikkelen en te leveren, zonder dat andere teams onderdelen van het werk hoeven uit te voeren.

Op stream afgestemde teams werken aan het volledige spectrum van levering, staan per noodzaak dichter bij de klant en zijn meestal al agile. Dit team verwerkt feedback van klanten in ontwikkelingscycli, terwijl de software in productie blijft.

Hoewel op stream afgestemde teams bij veel softwarebedrijven gebruikelijk zijn, komen in andere organisaties beter vaak teamstructuren voor die zijn geordend op basis van functie (d.w.z. afzonderlijke teams voor engineering, design, QA), in plaats van de leveringsstroom.

Aangezien op stream afgestemde teams het meest voorkomen in organisaties, wordt de rol van andere teams gedefinieerd ten opzichte van op stream afgestemde teams. Op stream afgestemde teams moeten regelmatig contact opnemen met de volgende supportteams (gecompliceerd subsysteem, uitvoerend en platform) om de snelheid van levering en kwaliteit van hun producten en services voortdurend te verbeteren.


Stream-aligned teams focus on a single, impactful stream of work. It can be a single product or service, a single set of features, a single user journey, or a single user persona. The team is empowered to build and deliver customer or user value as quickly, safely, and independently as possible, without requiring hand-offs to other teams to perform parts of the work.

Because stream-aligned teams work on the full spectrum of delivery, they are, by necessity, closer to the customer and usually already agile. This team incorporates customer feedback in development cycles, while maintaining software in production. 

While stream-aligned teams are common at many software companies, other organizations may be more familiar with team structures organized by function (i.e. separate teams for engineering, design, QA), rather than the delivery stream. 

Since the stream-aligned team is the most common team type in organizations, the role of other teams is defined relative to stream-aligned teams. Stream-aligned teams should regularly reach out to the following supporting teams (complicated subsystem, enabling, and platform) to continuously improve the speed of delivery and quality of their products and services.

Platformteam

Platformteams stellen op stream afgestemde teams in staat om zelfstandig werk uit te voeren. Terwijl het op stream afgestemde team de volledige controle behoudt bij het ontwikkelen, uitvoeren en repareren van een applicatie in productie, biedt het platformteam interne services die het op stream afgestemde team kan gebruiken.

Platformteams creëren capaciteiten die kunnen worden gebruikt door talloze op stream afgestemde teams, met weinig overhead. Door een product te optimaliseren, kunnen platformteams middelen en cognitieve belastingen van het op stream afgestemde team minimaliseren. Dit komt ook ten goede aan eindgebruikers, omdat platformteams een samenhangende ervaring kunnen creëren die zich uitstrekt over verschillende gebruikerservaringen of producten.

Bij Atlassian ontwikkelen platformteams services die door al onze producten worden gebruikt (zoals identiteitsbeheer) en wordt verwacht dat ze documentatie, support en advies bieden voor op stream afgestemde teams.


Platform teams enable stream-aligned teams to deliver work with substantial autonomy. While the stream-aligned team maintains full ownership of building, running, and fixing an application in production, the platform team provides internal services that the stream-aligned team can use.

Platform teams create capabilities that can be used by numerous stream-aligned teams, with little overhead. By optimizing a product, platform teams minimize resources and cognitive loads of the stream-aligned team. This also benefits end-users too, since platform teams can create a cohesive experience that spans across different user experiences or products.

Here at Atlassian, platform teams build services used by all of our products (like identity management) and are expected to provide documentation, support, and consultation for stream-aligned teams.

Gecompliceerd subsysteemteam

Een gecompliceerd subsysteemteam is verantwoordelijk voor de ontwikkeling en het onderhoud van een deel van het systeem dat afhankelijk is van specifieke vaardigheden en kennis. De meeste teamleden moeten specialisten zijn op een bepaald gebied om het subsysteem te begrijpen en te wijzigen.

Het doel van dit team is om de druk te verminderen van op stream afgestemde teams die werken aan systemen die het subsysteem bevatten of gebruiken. Met de expertise en capaciteiten van het gecompliceerde subsysteemteam hoeven op stream afgestemde teams geen mogelijkheden te creëren op gebieden die te ingewikkeld zijn voor hun dagelijkse werk. Teamleden van dit team kunnen gespecialiseerde kennis hebben op het gebied van bepaalde microservices (d.w.z. een factureringsservice), algoritmen of zelfs kunstmatige intelligentie.

Een veelvoorkomende valkuil is het inzetten van specialisten in elk op stream afgestemd team dat het subsysteem gebruikt. Hoewel dit misschien efficiënt lijkt, is het uiteindelijk niet kosteneffectief en ligt het buiten de scope voor een op stream afgestemd team.


A complicated-subsystem team is responsible for building and maintaining a part of the system that depends on specific skills and knowledge. Most team members must be specialists in a particular area of knowledge to understand and make changes to the subsystem.

The goal of this team is to reduce the load of stream-aligned teams who work on systems that include or use the subsystem. With the complicated-subsystem team’s expertise and capabilities, stream-aligned teams don’t have to build capabilities in areas too complicated for their daily work. Team members from this team may have specialized knowledge in certain microservices (i.e. a billing service), algorithms, or even artificial intelligence. 

A common pitfall is to embed specialists in every stream-aligned team who uses the subsystem. While this may seem efficient, it’s ultimately not cost-effective and out of scope for a stream-aligned team. 

Uitvoerend team

Op stream afgestemde teams staan voortdurend onder druk om snel te leveren en op wijzigingen te reageren, waardoor het lastig kan zijn om tijd te vinden voor onderzoek, leren en oefenen van nieuwe vaardigheden.

Een team dat bestaat uit specialisten op een bepaald technisch (of productgericht) gebied helpt deze capaciteitskloof te overbruggen. Deze teams richten zich op onderzoek en experimenten om weloverwogen suggesties te doen over tools, frameworks en ecosysteemkeuzes die van invloed zijn op de toolstack.

Dit geeft op stream afgestemde teams de tijd om capaciteiten te verwerven en te ontwikkelen, en zich op de primaire doelen te blijven richten. Het uitvoerend team vergroot met name de zelfstandigheid van op stream afgestemde teams door hun capaciteiten uit te breiden, waarbij de focus op problemen ligt in plaats van op oplossingen.

Als een uitvoerend team het werk goed doet, heeft het team dat het uitvoerend team helpt na een aantal weken geen hulp meer nodig. Het is niet de bedoeling dat een team permanent afhankelijk blijft van het uitvoerend team.


Stream-aligned teams are under constant pressure to deliver and respond to change quickly, making it challenging to find time for researching, learning, and practicing new skills.

An enabling team composed of specialists in a given technical (or product) domain help bridge this capability gap. These teams focus on research and experimentation to make informed suggestions about tooling, frameworks, and ecosystem choices that affect the tool stack.

This gives stream-aligned teams time to acquire and evolve capabilities without taking time away from their primary goals. The enabling team seeks to primarily increase the autonomy of stream-aligned teams by growing their capabilities with a focus on problems, rather than solutions.

If an enabling team does its job well, the team it assists should no longer need help after a few weeks or so. The enabling team should never work on a permanent dependency.

Are you a stream-aligned team?


The following questions should be asked to determine if you have a stream-aligned team:

Does your team aim to produce a steady flow of features?
Mature teams release multiple times per week, and in some cases, multiple times per day. In pursuit of this goal, mature teams should use continuous integration and continuous delivery (CI/CD) to ship features frequently.

Is your team quick to change direction based on feedback (customer or internal) from the latest changes?
It’s often best to use an experimental approach to product evolution. Mature DevOps processes include automated testing to ensure quality code shipments. Yet experimentation goes beyond simple unit or acceptance tests. You can ensure that your products deliver the most value to customers by using feature flags to automate roll-outs to a subset of users, alpha and beta releases to solicit and measure user feedback and behavior, and qualitative continuous feedback via comments, support tickets, and community forums.

Does your team have minimal hand-offs of work to other teams?
This should be true in two ways. Your team should be self-contained and work should happen with immediate teammates to ensure fast delivery. Beyond work scope, minimal hand-offs can also take the form of automated processes. Automating your development cycle ensures that moving things along is a seamless process, regardless if the next step is an action like an automated test or merge to main, or an actual human.

Bonus points if….
Does your team have time to address code quality changes (a.k.a. “tech debt”) to ensure changes are safe and easy? 
Mature teams rely on trunk-based development and CI/CD practices to maintain their codebase. Capacity planning should include dedicated time to address tech debt. Plus, large-scale projects that address underlying infrastructure or platform issues should receive as much attention as feature development.

Is your team evaluated by the right metrics?
Beyond how fast your team ships, it should also consider team-health and technical quality metrics in their measures of success.

Regarding the last question around measurement, DevOps teams have traditionally considered the four key DevOps Research and Assessment (DORA) metrics in their definition of “success”:

  • Deployment frequency - How often an organization successfully releases to production
  • Lead time for changes - The amount of time it takes a commit to get into production
  • Change failure rate - The percentage of deployments that cause a failure in production
  • Time to restore service - How long it takes an organization to recover from a failure in production

In addition to these metrics specified by DORA, Atlassian found that high-performing, stream-aligned teams also monitor these attributes

  • Balanced team -  Your team has a diverse set of skills and perspectives 
  • Full-time owner - A full-time owner ensures that the nuclear team and cross-functional participants know who to ask questions to and how to make decisions related to projects owned by the team 
  • Shared understanding - There is a shared understanding of the requirements, along with the definition for values and metrics for success
  • A focus on value and metrics -  Your team has north stars that guide which tasks to tackle in order to move projects to release  
  • Proof-of-concept - Having a real artifact to spar and test assumptions with helps a team constantly iterate and improve 
  • Managed dependencies to maintain velocity - Understanding managed dependencies keeps blockers at bay and helps the team maintain velocity

 

De conclusie ...

DevOps is geen bestemming, maar een reis waarbij tools, teamcultuur en werkwijzen continu verbeterd worden. Ben je net aan de slag met DevOps? Begin dan met het oriënteren van doelen om waarde te leveren aan klanten. Voeg na een tijdje automatisering toe aan je tools en processen. Wanneer je team uiteindelijk steeds gevorderder wordt, implementeer je observering om ervoor te zorgen dat je de juiste dingen bewaakt, meet en verbetert.


DevOps is not a destination, but a journey of constant improvement of tools, team culture, and practices. If you’re new to DevOps, start by orienting your goals to deliver value to customers. As you mature, add automation to your tools and processes. And finally, when your team becomes advanced practitioners, incorporate observability to ensure you’re monitoring, measuring, and improving on the right things.

Ian Buchanan
Ian Buchanan

Ian Buchanan is een Principal Solutions Engineer voor DevOps bij Atlassian waar hij zich richt op de opkomende DevOps-community en de toepassing van Jira, Bitbucket en Bamboo voor betere continue integratie en continue levering. Hoewel Ian Buchanan een brede en uitgebreide kennis heeft van zowel Java als .NET, staat hij vooral bekend als expert op het gebied van lean en agile methoden bij grote ondernemingen.

Tijdens zijn carrière heeft hij met succes enterprise softwareontwikkelingstools beheerd in alle fases van hun levenscyclus, van begin tot eind. Ook was hij de motor achter organisatiebrede procesverbeteringen resulterend in een hogere productiviteit, kwaliteit en klanttevredenheid. Hij heeft agile teams met meerdere nationaliteiten onder zijn leiding opgericht. Voor deze teams was zelfsturing en zelforganisatie erg belangrijk. Wanneer hij geen presentaties geeft of codeert, is hij waarschijnlijk bezig met een van zijn passies als parsers, metaprogramming en domeinspecifieke talen.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

DevOps-community

Toelichting DevOps

Simulatieworkshop

Map-illustratie

Gratis aan de slag

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up