- Platform Engineering
- Squads working together
- Other observations
- A solution
A good architecture will take into account how multiple teams will work together to deliver a software solution.
This is a
possible way to implement Platform Engineering / Team Topologies.
Note: your solution will depend on your context.
All teams are Squads with backlogs
- A core team which can own and realise the common/cross-cutting concerns.
inner source, allow for all teams to contribute to the platform.
self-servicewith guard-rails where possible.
- operates like any other product squad.
- Can use specialist technologies (always try to enable innovation)
- Product teams, work together to deliver company solutions to delight the customer.
We are asssuming we have a number of engineers (developers and architects), trying to corrdinate the solution delivery.
Product teams is something we have seen promoted with Scrum, and size of the teams is important to keep cadance
We still need to coordinate change and high level vision which can span multiple teams.
In addtion we are assuming that while developing the solution across the teams, each team will need to implement a high level of duplicate code (cross cutting concerns, software qualities)
We have seen teams be overwhelmed taking into context all of the software qualities.
An example is logging, this is something we can do consistantly and to a standard (OpenTelemetry) across all teams, why implement differently in each squad?
In this case, lets say we want to increase development capacity by horrizontally scaleing the squads.
Taking into account that each squad can by overwhelmed to implement all the software qualities, lets see if we can foster a shared responsibility model.
In the picture above we have
- Product squads - mostly focused on domain services, and use the same patterns where possible provided by the platform (they may implement a technology stacks if and when it makes sense)
- Plarform Engineering Squad - implement the common/cross cutting concnerns (which add up to be the platform)
this is to enable the product squads and accellerate the overall delivery.
Squads working together
The following is a possible way, assuming you have a group of architects that coordintate the
All teams are squads
Coordintes change and vision acorss all the squads.
Architect can sit across one to several squads to provide guidance.
Inputs: all the squads (feedback, ideas), and C-board (vision)
Outputs: Reference Achitecture, Roadmaps, Decision Records, etc
Platform Engineering Squad
Engineers which take the cross cutting and common solutions
Considers how to enable the other squads with Self-Service and automation.
Inputs: all the squads (feedback, ideas), Architecture (main requirements)
Outputs: co-works on a number of the architecture outputs, makes the company platform (standards, code libraries, self-service, developer experience etc)
Delivers the company products which delight the customers
This includes a lot of coordination of the customer journey, and events which support that.
Inputs: Architecture, Stakeholders
Outputs: services, documents
The winning aspect to this is the community forged around the platform, where one solution can help accelerate multiple delivery product teams
One powerful concept in innter source
The platform is owned by the Platform Engineering Squads, however everyone can contribute, similar to Open Source.
(you can also consider communities of practice. An observation is the a high level of content will revolve around common and cross-cutting, which is the platform.)
Forming a new team
A team should be formed on the same basis of why you would form a new service
Evaluate all teams (exmaples questions you may ask yourself)
- are the doing to much? split into new teams
- are 2 teams doing to little? can they be merged
Its a solution, it may/may-not work for you (remember the ITS DEPENDS, there is no one size that fits all)
you may need to
- consider what would work for you
- take only parts which do
- there is a lot of disapline and other processes not mentioend here