Manuel Pais talked at QCon London [slides] about how team interactions are vital to reduce cognitive load to have a successful adoption of Kubernetes. Pais recommends having a team dedicated to building a digital platform on top of Kubernetes for development teams to use it. And, organizations can get started by assessing the team's cognitive load, defining a digital platform, and setting clear team interactions.
Kubernetes helps development teams to work with the complexity of distributed systems, and it offers abstractions to run and deploy services. However, there are non-functional requirements that organizations need to consider like capacity planning, upgrades, patches, or security practices. Moreover, the Kubernetes learning curve is high, and often development teams struggle to adopt this technology . Therefore, Pais recommends having an internal team dedicated to building a digital platform on top of Kubernetes to reduce cognitive load for development teams in terms of knowledge and support. For instance, companies likeAirbnb and Uswitch enable developers with self-service capabilities to reduce cognitive load.
If organizations want to start with a team-focus approach for Kubernetes adoption, Pais gave three recommendations. First, asses the cognitive load in the team by understanding how well they understand the Kubernetes abstractions they'll use regularly. Second, define what the platform is by documenting how the Kubernetes-based platform team will provide on-call support, communication mechanisms, or recommended practices. And third, clarify team interactions to define who's responsible for what, who's impacted, and how collaboration is going to be in the new internal digital platform with self-service capabilities.
InfoQ interviewed Manuel Pais, co-author of theTeam Topologies book, to learn more about what are his recommendations to adopt Kubernetes in an organization.
InfoQ: Kubernetes is a complex distributed system, and the learning curve is high. What do you think makes Kubernetes especial for being the foundation for changing the organization? What do you mean by that?
Manuel Pais:Focus on the platform; don't focus on the technology too much. You can look at this talk, and you could replace Kubernetes with OpenShift or whatever. I talked about Kubernetes because I see that's what many organizations are embarking on without understanding "why" or "how" is it going to help the life of the development team.
The key point is to focus on the platform and the interface with the development teams. Whatever is underneath might be Kubernetes because it's pretty solid, has a lot of functionality, but might be something else. I was talking with a friend that works at a large bank. And for them, it doesn't really make sense to use Kubernetes, at least now, because it will require all this learning, even if you have a platform team. What they have now works for them. They might have some gaps that they can address without actually taking this radical move to Kubernetes.
InfoQ: Some people are advocating for not using Kubernetes for its complexity. But that could happen with other technology as well. Would you say that the key should instead be to focus on reducing cognitive load?
Pais:I mentioned in the talk, these platforms are contextual, in the sense that it has to make sense for your organization. We can't just take it a kind of face value that "Well, Kubernetes is good because everyone's using it." But, what is the platform that makes sense for your organization? It could be "OK, Kubernetes is the right choice because I have sufficient knowledge and maturity to use it. And it's going to fit with my model." This was the case for Uswitch. They had a pretty advanced engineering team, so they knew Kubernetes is complicated, but it wasn't an issue for them. Or, like the case of the large bank, I mentioned early, for them would be a radical change to move everything to Kubernetes, and that is fine because, in their context, it's not worthwhile.
Focus on your development teams to reduce their cognitive load with the platform. Technology is not a minor thing, but it becomes the second line of thought. It would help if you first look at what are the problems that most teams are having to be able to deliver and run their services.
InfoQ: How would you recommend a company to start when wanting to adopt Kubernetes or any new upcoming technology?
Pais:Start looking at your end customer product adoption. How do you measure that your service or product you provide brings in your revenue? How do you measure adoption? Because, hopefully, you're not just churning out features if you don't see adoption from your customer base. So, it's the same for a platform. How do we make this something that can be easily adopted, and teams engage with? I talked about the platform as a product. So that should be the starting point.
Then in terms of the complexity of technology. Don't make early decisions based on what everyone else is doing. Make decisions based on what you need now. This goes together with the focus on adoption by your internal users. It takes small steps. Look at platform engagement and adoption. Sometimes different services in the platform might have different adoption patterns. You can use that to your benefit and understand why it was effortless for some teams to use a service and not so easy for other teams. Maybe this new service was not really adopted because technology is making it complicated, and you need something more straightforward. Focus on the platform adoption.