We have a reading group at work and most recently we decided to read 2020 State of DevOps Report. Here are my key takeaways from reading it.
- Internal platform teams are a logical step in DevOps evolution.
- Automation is a key contributor to enabling effective change management.
On the role of internal platforms
At a certain point of DevOps evolution organizations choose to create a separate platform team that is responsible for an internal self-service platform. That self-service platform enables application teams to accomplish foundational tasks quickly, and drives consistency in the technology stack and approaches within organization.
Let's take the following example.
- An organization has 5 different products and each of those products is supported by a separate team.
- Those teams need a level of autonomy to react quickly to business needs, and with that autonomy comes a risk that each of the teams would choose a different technology stack than all the other teams.
- If all 5 teams choose something different, the entire organization will have 5 sets of technologies to maintain, which comes with all sorts of troubles: you cannot easily reallocate team members between teams, governance is hard, skill levels in different teams are inconsistent.
- One way to solve that would be to remove autonomy from the team and mandate consistency. This will certainly work, however it will require that each of the teams has necessary skills to support that approach, for example, each team has a DevOps responsible for CI/CD workflows.
- An alternative path is creation of the platform team, which treats application teams as clients, gathers their requirements and develops self-service platforms that other teams can use. Not only does this approach drives consistency, it also reduces the cognitive load on application team related to foundational infrastructure.
By the way, if you are curious to hear more about reducing cognitive load on engineering teams, I highly recommend the presentation Monoliths vs Microservices is Missing the Point—Start with Team Cognitive Load by Matthew Skelton and Manuel Pais.
Automation enables effective change management
Effective change management could be enabled with automation. Automated testing, deployment and risk management allows teams more autonomy to approve and implement changes. This leads to higher business agility and employee motivation. It also allows management to focus on policy-level decision-making rather than approvals of individual changes.
Whether it is a platform team that helps automate testing, deployment and risks management, or the application team, the key focus here is that validation, rollout and compliance tasks are no longer primarily dependent on consistent execution by a human.
The value of the approach is clear to me:
- Application teams gain more autonomy to implement changes quickly without having to go through multiple levels of approvals, which has to positively impact both the motivation of the team and the speed at which the team can respond to business requests.
- Management can focus on reviewing and improving policies and governance instead of executing upon those policies and governance. Automation can take care of execution if the rules are defined well.
- The entire organization can react to threats and opportunities quicker without compromising consistency and information flow.
It is clear to me that the business case of automation is beyond just saving efforts, and this most recent example from the 2020 State of DevOps report provides a good illustration of that.
Thank you for reading,
Alex
P.S. This site does not have any analytics by design. If you found this message interesting or have comments, please reach out to ashchedrin@hey.com and let me know. Thanks!