- Danny Mican
Platform teams in the service of product teams can provide huge returns on product velocity by reducing implementation time and operational overhead for product focused teams. It’s important to remember platform teams are a foundation to support product teams because product teams are closer to the customer and revenue streams, and enable the product teams to move faster.
A lever is a simple machine that manipulates effort. A small amount of effort to a lever can produce a large amount of force. Characterizing a platform team in terms of a creator of levers illustrates some of the value that a platform team produces to an organization. A leveraged team can exert a small amount of effort for a huge benefit. A unleveraged team exerts force proportional to the benefit they receive.
To illustrate this concept, consider an organization with multiple teams. Each team owns a single service and each service is comprised of multiple components:
In the example above each team needs to develop, maintain, and operate their solutions. These teams are unleveraged.
Observability has a complexity of X, and each team needs to understand the problem space and develop, maintain and operate their own solution. Authentication has a complexity of X * 2 and also requires that each team develop, maintain and operate their own solution. This makes maintaining these components linear time O(n).
The amount of complexity is directly proportional to the benefit a team receives. Additionally, teams are unable to leverage the efforts of other teams. Unleveraged teams duplicate work and solve problems using bespoke approaches. Unleveraged terms spend time working on undifferentiated work.
One goal of a platform team is to increase velocity of product teams by outsourcing non-core competencies away from a product team. Platform teams can increase team alignment by centralizing core competencies within individual teams.
Why Service Product Teams?
Platform teams leverage product teams. Product teams are closer to the customer, developing services and features for paying customers. Product teams generate money for the business, and directly influence the customer experience and the value that customers derive from the product.
Customers really don’t care if a stack uses Kafka, or Kinesis, or node.js or java. These are implementation details, none of these technologies provide any differentiating value directly to the customer. Technology choices are absolutely important since they influence things that customers care about like COGS (affecting pricing) and reliability, but they are second order concerns. Products are implemented in terms of these technologies and are closer to the customer.
Thinking about platform teams as providing leverage to and for product teams helps to characterize the benefit that platform teams provide.
OK what do platform teams actually do? What artifacts do they provide the business and product teams? Platform teams can provide the business 4 major primitives, for use by product teams in delivering more value to customers and earning the business money:
Library: Software component encapsulating functionality. Language specific. Libraries are developed by platform teams and embedded into a product teams service. The product team is responsible for operations. Examples: Observability, Authentication, Protobuf Bindings, Resiliency, Kafka Client, etc.
Service: A service provides isolated functionality. It operates on an input and generates an output. Services perform an action. Platform teams may need to perform actions in service of product teams. The owner of platform services are the platform teams. Services support the customer experience but aren’t directly tied towards revenue generation or customer experience. Examples: Security Anomaly Detection Internal Logs, Data Compaction, Health Check Prober, Data transfer.
Platform: A platform is a set of services which perform actions on behalf of product teams. The product team interface is a thin configuration or API layer, which abstracts the complexity of the platform. The platform team operates the platform and the product teams configure it, to accomplish a customer focused action. Examples: Kubernetes, Kafka, Flink, Airflow, etc
Pattern: A pattern is a blueprint for how to solve a problem. For whatever reason solving the problem with tooling is unachievable. The pattern leverages the domain expertise of the platform team to offer guidance on how to accomplish something. Patterns are employed when tooling/platforms are not yet available. Example: Playbooks.
Each of these can be characterized in terms of the benefit that they provide a product team along the dimensions of:
- Implementation Time: The amount of time it takes to develop a solution.
- Maintenance Time: The amount of time spent fixing bugs and adding features.
- Operations: The owner of an item (who’s on call and responsible for keeping something running).
A product team leverages a library in a constant amount of time. A product team needs to learn the library, how it works, read documentation and configure it, but once they do, it is the same for every service that they own, i.e. constant time.
Using a platform requires a constant amount of time. The product team needs to learn the platform but after doing so the amount of effort is the same for each.
Leverage: Velocity & Predictability through Alignment
Creating primitives results in leveraged teams and increases velocity and predictability of product teams. A product team that spends time developing undifferentiated components such as internal authentication or observability solutions loses that time developing products that directly generate revenue. A team that spends effort outside of their scope is poorly aligned to their mission.
Platform teams enable alignment by outsourcing undifferentiated work from the product teams, allowing the product teams to focus on their specific scopes of work. When a product team can pick up an already developed solution and implementing in constant time that product team can achieve predictable execution.Predictability is the ability for a team to forecast and achieve a timeline for their work.
Shifting capacity from undifferentiated work to differentiating work, by leveraging platform primitives, results in an increase in velocity (the amount of work done in an interval).
Both of velocity and predictability can be achieved through leveraging primitives developed by platform teams.
The following example shows teams leveraging platform owned observability components:
The product teams no longer need to develop, maintain and operate bespoke observability solutions with a linear time cost to the product teams. Instead the product teams leverage a platform owned component in constant time O(1) implementation. This results in an increase in velocity and predictability, especially in larger organizations.
Streaming (Kakfa) Platform
A streaming platform (using kafka) is another example of how a platform team leverages a product team. Kafka is a real time streaming system. Producers start sending data and consumers can subscribe and stream the data. Combining the streaming platform with other platforms, enables application of compliance policies to the data flowing through Kafka.
Without a platform teams may have to provision their own streaming platforms (such as kinesis or rabbitMQ). Teams implement and operate complex streaming infrastructure. Even though product teams leveraged managed services it still required they understood provisioning, configuration and operations:
A streaming platform such as kafka outsources the complexity of streaming infrastructure from the product team to a platform team.
Instead of configuration, provisioning and operations the product team jusst needs to publish and consume data. The platform approach makes this a constant time O(1) operation for the product team, increasing their velocity and predictability
Outsourcing non-core competencies from product teams to platform teams increase alignment. Through this alignment, platform teams can create primitives that product teams leverage to move faster and achieve predictable execution. It’s important to remember that platform teams don’t remove complexity, but outsource it away from the product teams. This is done because product teams are closer to the customer and revenue, while platform teams deal with implementation details that customers don’t necessarily care about.