What are Team Topologies?
“Team Topologies” is a widely-adopted framework for structuring, managing and developing software delivery teams, which eliminates silos, enhances productivity, optimizes resource allocation and expedites time-to-market. The concept was first introduced by Manuel Pais and Matthew Skelton in their 2019 book “Team Topologies: Organizing Business and Technology Teams for Fast Flow”, which was a followup to the “DevOps Team Topologies” work by Matthew Skelton about DevOps topologies in 2013. The Team Topologies framework takes a “team-first approach” and is designed to help organizations structure their teams to best support their business goals and architectural requirements, as per Conway’s law.
By implementing Team Topologies, organizations can overcome operational pain points that plague development and IT teams and processes, like cognitive load, disengagement, failure to respond to rapid changes and delivery bottlenecks. These hurdles slow down time-to-market and hinder innovation. Team Topologies provides an operational structure and practices that optimize the flow of work and improve collaboration across teams.
The framework identifies four fundamental team topologies:
1. Stream-aligned Team: A team that focuses on a single product, service or set of features, aligned with a business domain or organizational capability. This team is the closest to the customers and implements their feedback.
2. Enabling Team: The team that provides specialized technical assistance to Stream-aligned Teams, helping them overcome obstacles. Usually, they don't deliver solutions directly but rather enable other teams to do so more effectively.
3. Complicated Subsystem Team: The team that manages areas of the software that are computationally complex or require specialized knowledge. They work on the components that are used by Stream-aligned Teams but are too complex to be managed by them.
4. Platform Team: The team that provides a set of services, libraries, or APIs that are used by Stream-aligned Teams to deliver features more quickly and autonomously. The internal services they provide simplify processes and allow other teams to focus on delivering user value. As such, they reduce the Stream-aligned team’s cognitive load.
The framework also discusses three interaction modes between these teams:
1. Collaboration: Working together for a specific period of time for the purpose of research and discovery. For example, learning new technologies and practices.
2. X-as-a-Service: A model where one team serves as the provider and another acts as the consumer, offering a specific resource or capability "as a Service."
3. Facilitation: One team offers guidance and mentorship to another, aiding in their development and progress.
Here is a Team Topologies diagram:
Team Topologies Application in Platform Engineering
Platform engineering is the discipline of designing, building and maintaining the infrastructure, tools and underlying systems that software engineers need for developing, deploying and operating applications. These include cloud computing platforms, container orchestration platforms, CI/CD pipelines, monitoring and observability tools, internal developer portals and security and compliance frameworks.
As such, platform engineering is a core concept of Team Topologies. One of the Team Topologies, the Platform team, embodies the notion of platform engineering. The Platform team’s work enables Stream-aligned Teams to deliver features more quickly by providing them with the systems they need to do so, i.e with the Platform as a Product. For example, the Platform team might maintain a set of microservices that handle authentication, logging, or data storage, which can be used across different projects.
With the Platform team providing internal platform services to other teams, the organization can build, deploy, and run applications more efficiently. To support this, the platform needs to be easy to use, highly maintained, sustainable, lightweight and accessible, for example with an internal developer portal that serves as a productized interface to the platform.
Benefits of Platform Engineering in Team Topologies
Platform engineering in Team Topologies offers numerous benefits that can significantly enhance the efficiency, scalability and overall performance of an organization's software development lifecycle. Here are some of the key advantages:
Streamlined Development Processes
Platform engineering provides the tools, services and best practices that developers from the Stream-aligned team can use for delivering features faster. Rather than spending time and effort figuring out how to set up environments or worrying about infrastructure, Stream-aligned teams can focus on developing customer-facing features. This division of responsibilities and focus of expertise makes the development process more quick and efficient.
Scalability and Flexibility
As the organization grows, the services provided by the Platform team can adapt to increased loads and more complex use cases.
By speeding up the development process and scaling operations, Platform engineering teams can significantly reduce the time it takes to go from design to production. In today's fast-paced market driven by high customer expectations, this is essential for maintaining a competitive advantage.
Building and maintaining a standardized platform with reusable components and automation is generally more cost-effective than having disparate tools and practices across teams. In the long run, these cost savings can become significant. For example, using the portal as an interface that unifies all developer routines, can include such developer self-service actions as scaffolding a service or provisioning a cloud resource, saving time and resources.
Improved Quality and Reliability
Standardized and automated tools and practices usually result in fewer errors and higher quality output. The Platform team provides these to the Stream-delivery team, ensuring their underlying systems perform exceptionally well and support and uplift customer-facing development tasks.
In a Team Topology model, Platform teams enable the other teams to collaborate more effectively by providing a common and standardized set of tools to use.
Innovation and Experimentation
With the heavy lifting of setup and maintenance out of the way, the other teams are free to innovate. They can experiment with new features and technologies without the risk of destabilizing the entire system or the cognitive load pressure of having to set up and maintain underlying systems.