Conf42 DevOps 2024 - Online

3 Practices to Ensure a Smooth Platform Engineering Adoption

Video size:

Abstract

Enhance your chances of success by implementing three proven practices that address the current challenges associated with building and adopting a Platform team

Summary

  • Caillou Medeiros is leading the DevOps adoption at Citi. Today we'll review platform engineering concept, how it's connected with DevOps. Furthermore, I brought up some practices I hope will ensure you a smooth adopting of platform engineering.
  • I will introduce DevOps and platform engineering. Why and how they should be together. Finally, I will introduce the three practices. I promise you, I hope them ensure this smooth adoption.
  • The first introduction of platform engineering was in the team topologies book written by Matthew Skelton and Manuel Pais. Platform engineering is that idea where we have an internal team inside the company and they are solving and reducing the cognitive load of string alignment teams. If not, something will block the generation of value.
  • If you have different teams without a clear management and aligned management, for sure they will start to use different platforms to do the same thing. Platform engineering will provide these boundaries because at the end we will have an internal team trying to generate an internal product. Report from 2023 focuses 100% on platform engineering.
  • Adopting DevOps and platform engineering is not something that is easy to do, right? There are ways to face out the challenges we usually will have. Some of them are related to any transformation process.
  • platform engineering is useful to support the DevOps adoption and ensure that the whole organization the IT organization. All the different roles we have inside work together to make the organization succeed. There are some mistakes in the platform engineering adoption you can avoid.

Transcript

This transcript was autogenerated. To make changes, submit a PR.
Hi everyone, welcome to my talk. Today we'll review platform engineering concept, how it's connected with DevOps. Furthermore, I brought up some practices I hope will ensure you a smooth adopting of platform engineering. My name is Caillou Medeiros and currently I'm leading the DevOps adoption at Citi. And why me to talk about this concept today? Well, I had the chances to work directly with the stream aligned teams, enabling them, participating with them to generate it products and have the happy customer at the end. But also I had the chance to work with platform teams at Citi, Red Hat and Slay. Actually I lead one of them generating a DevOps tool chain for ensuring this platform reliable and stable for all decision alignment teams we had inside the company. If you want to know more about me, you have here my LinkedIn, my email and my web portfolio in GitHub pages. So let's start what I have prepared for you today. Usually I start generating shared understanding on the concepts we will review. So I will introduce DevOps and platform engineering. For sure you have an understanding of this, but usually different people will have different definitions. I like to start generating this shared understanding and then we will go to the adoption journey. Why and how they should be together. Finally, I will introduce the three practices. I promise you, I hope them ensure this smooth adoption. As I mentioned at great. So let's start with the introduction to DevOps and platform engineering. What is DevOps? First, if I ask to anyone here for sure you will say your understanding of DevOps. But I like to introduce DevOps using the first phrase of the DevOps handbook, which is the main source of knowledge about DevOps. It starts with this. Imagine a world where pos dev engineers, qa it ops and infosec engineers. All the roles, the typical roles we have inside a traditional or even a modern IT organization. Imagine them working together without barriers, without sidos, without the normal boundaries we have defined by the traditional organization or the topologies we have inside the organization, not only to help each other with their needs, but also to ensure the overall organization succeed. Which basically means have our end user or our customers happy with the id products we are generating as it organization. So that's the understanding that Jenny King, John Witties, Patrick Devois and Nicole Forrest Green tried to bring to us in this book. But when we have this kind of adoptions, the DevOps adoptions, right, the adoption inside companies. Basically people will try to implement different ways of working. For sure it will be connected with agile adoptions, lean the software development, adopting, design thinking, adoption and it will be connected also with technologies, not just a matter of cultural norms and ways of working. We will have libraries, tools to go from ideation, to understand the needs of our customers, to have something in production solving the problems of our customers. So we will go into this mobile loop that DevOps provides to us to plan, code, build, test, release, deploy, operate and monitor, and we will be there till the product ends his time. The problem will be that where each of these roles, they will need to have the set of cultural norms, the ways of working and the tools they require each role, right? Furthermore, of the mindset, the DevOps mindset and principles. But when we are talking about the DevOps world, we are talking about a lot, a large list of tools we can use, right? We need to decide which one we will use and when. We have different teams inside our organization. For sure, one team will use one tool, another teams, they will use other tools because if you don't have management and standardization, it will happen. I already had this experience mainly when the organizations are lead by different managers. In addition to that, the teams will need to support these platforms to keep them working, reliable and stable to use them during the whole lifecycle of the software development. If not, something will block the generation of value there is where platform engineering born. The first introduction of platform team was in the team topologies book written by Matthew Skelton and Manuel Pais. They described platform teams as this string alignment team, this product team that will provide an internal product as platform which these string alignment teams, these teams with different roles working together, will use as a service. So platform engineering was described as a discipline to design and build these tool chains, these platforms that will be used as self service to help the engineering teams that are generating it products for end users to phase out this new cloud native era. You will find this description in the platform engineering community page. You can just type platformengineering.org there. There are much more information about platform engineering. I encourage you to go there and investigate on why not participate in the community. So platform engineering is that idea where we have an internal team inside the company and they are solving and reducing the cognitive load of string alignment teams to only focus and have their real needed skills to work in their specific IT product. So the platform teams just giving an example will provide these tool chains or the set of tools needed to perform the typical tasks, repetitive tasks that the stream aligner teams have, providing not only the platforms itself but also the templates, the golden paths and managing these platforms to keep them reliable and stable. So more or less we can understand where they are connected, right? The adoption journey on why and how they work together is clear now, more or less. So let's go into the benefits if we have platform teams supporting these stream aligned teams which are trying to work together with all these roles to make the organization succeed. First of all, as I mentioned before, if you have different teams without a clear management and aligned management, for sure they will start to use different platforms to do the same thing. Let's have an example to build and deploy one software component. I already had experience in other companies where one team was using Jenkins, another team was using Travis CI or any other tool, right? Basically in the same company they are using different tools. So for sure they will face different issues that will block them and will not have a chance to share knowledge, share learning lessons because they are using different tools. The chance will be a bit more or less right at the end, the standardization is needed to have the right control over the practices we are implementing inside the company and to have success on a DevOps adoption for sure. I don't want to remove the freedom of teams, but they should have boundaries. Platform engineering will provide these boundaries because at the end we will have an internal team trying to generate an internal product and combines the rest of the teams to use this tool, this platform. They will provide a standardization ways of working standardization and also they will provide this control to understand who is doing what, how they are doing and where is the boundaries they have to manage the different ways of working. Also we will have reduction of the cognitive load because in the beginning without platform teams, if we are in a DevOps adoption journey, we had to hire engineers with knowledge not only in develop code but also to operate the software or even to manage the CI CD tool. Removing this dependency or the requirement of these skills, we will be able to find more engineers. And also we will reduce the stress of our engineers inside product teams to not only develop the active product but also to maintain their own tools. And finally, the tools will be more reliable, the platforms will be more reliable and stable, avoiding any blocker in the software development lifecycle related to the platforms needed to build, develop, verify the code or even operate the code. So let's take an example of these two lines. Right where we have in the first line is Rina line, a team trying to take one idea from left and generate a product to have a happy customer to the right. In any process to generate an IT product we will have rocks on the wall and sometimes we will have mountains. So only having string aligned teams, if you are entering to a traditional organization and breaking down the barriers and rearming all the teams to have all these roles together, to work together, as DevOps description express, to generate success inside the company. Sometimes we will have the people going outside of the stream aligner team to push the rest of the team because they will depend on the specific knowledge of that person. Mainly if we are talking about platforms that will support the work that the stream aligned teams are doing. If you need someone that will restart the Jenkins instance, or if you need someone that will manage the configuration of your kubernetes or graphana stack at the end, someone inside the team will have the specific knowledge and they will waste their time. They were focusing on generate value for the end customer to support the daily work of the team. It's different if we have a platform team looking to all these issues, possible issues for sure. It will not remove the whole rocks on the road or the whole mountains we need to cross over, but they will simplify the path to be faster than just having a screen aligned things and reach before the success. Having our happy customer at the end of the path. And even they will be faster to have a fast or quick feedback loops which will generate better software and more satisfaction in the customer to make our organization win in the marketplace. So if you want to go deeper in this concept and the connection between DevOps and platform engineering, I will recommend you the talks of Manual PI's platform as a product and mayori high DevOps ain't that but we got a talk because they introduce more and more on this concept. And finally the state of DevOps. The report from 2023. They focus 100% on platform engineering and how this practice is important to face out the challenges proposed by DevOps in the last years. So now we reach the three practices I had prepared for you. I used these practices in the past, but first I want to generate a sense of why we need these practices. So I will introduce some challenges behind platform engineering. Adopting first of all, DevOps and platform engineering is not something that is easy to do, right? It seems like we need to do that will be a total success. That is what I need to have. And after this talk, you will reach your manager. You will try to push the platform engineering ideas inside your company. But it's not an easier thing, right? Probably will be harder. But don't get sad, right? There are ways to face out the challenges we usually will have. Not only the platform engineering adoption, some of them are related to any transformation process. First of all, lack of time and high demand because when we are introducing a platform team inside a company, first of all, everyone will be busy. So it's difficult to motivate people to adopt a new platform and the demand will just increase. If you have success with one team, everyone will want to have this platform as well. Ways of working and thinking usually we don't have just one team inside a company. We will have a lot of teams and they will bring with their ideas, their BSS, their ways of working, because they work like that in other companies. And these platform teams, they will be in the middle. So the facilitation will be a mess if you don't have the platform team prepared. And finally, the people motivation and the rotation of IT engineers is a huge problem for all initiatives we have today inside the IT organization. So let's go a bit deeper inside each of these challenges. First of all, if we have platform teams, they will need to manage platforms. And platforms are not just one tool. The expertise on these tools will be one of the challenges. How you can keep the expertise inside the team, how this expertise can be put in benefit of the internal customers, the swing alignment teams, and to develop these skills inside the string alignment teams. Because even when we are providing a platform with templates and golden pads inside the srina teams, they need to develop some skills to take real profit of the platforms that platform thinking provide. How we can reply in front of failures and outages, because they will happen and the documentation that needs to be updated. Everything will go so fast. At the same time we need to manage the demand, because if we are introducing a platform team inside a company, usually if it ends in a success case, for sure, managers will try to push this to the rest of the teams. So more users means more doubts, more requests and the team need to be prepared for these challenges. In other side, we have the ways of working the facilitation between teams, right? Because several ways of doing the same thing. As I mentioned before, sometimes we will have just a simple case, sometimes we will have one team using one CI tool, another teams using other CI tools, and the different ways of configuring and provide environments and provide resources will be a mess. So the facilitation to put the platform team in middle of this will be a challenge for sure. Also they will need to face out complex compliance flows. Because in all companies we have these kind of problems with specific requirements, distorted perspectives of priorities. And the last thing I had seen in the last companies and teams I had worked after the COVID we start working globally with people from different countries and the languages and the understanding barriers sometimes generate a lot of confusion. Finally, keep team engaged. This is another challenge, a huge challenge, because not only related with platform engineering, it's in all cases inside the IT organization. People is burning out and the cognitive load is directly related to this. How the platform teams can manage this cognitive load, as I mentioned it, the time will be a problem, the demand would be a problem. So it's super easy to get burned out. Of course, the technical and practice debts will add more challenges to this. So how we can face it. There you have my three practices. The first one is customer centric leadership. Right inside each platform team, we should have a leader with a design thinking mindset to identify the customers, the internal customers. These string alignment teams understand the real needs because for sure, if we have platform teams in different companies to provide the same type of platform, they will identify different objectives, different needs, because each organization has their own conditions, their own requirements. So it's super important to put in the place of the customers and understand their objectives, to guide the priorities of the team. And also this leader should connect the platform team, the whole platform team with the customers. How this leader can do that promoting inside the team to map and make it visible, the profile of our end users. You can use empathy mapping proto or user Persona. For mapping these profiles, it's crucial to have the design thinking mindset. It will provide you this perspective that this is my end user and I want to satisfy their needs. The second practice is practice what you preach sounds super logical, but I had a lot of experiences where the platform teams, they were not using their own platform and was a mess because at the end they don't know what is happening, really happening in production. The better way to understand how users are living or they are implementing the platform is using it. Metrics is the perfect way to measure this, to take a control of this. So setting the right metrics will be good to identify and monitor during the time if the team is really using the platform and it can be complemented with the internal and external usability testing. I mean you will invite not only people outside of your team, but inside your team to execute and run usability testing. Go navigate through the platform and the offering the platform team is providing and test it before to release a new version to reduction. Also have showcases and demo days to promote your platform and motivate people to get into the platform and start using and finally run this kind of lighting talks or tech talks because then you will share your knowledge to the rest of the teams on how this platform should be used. It will generate a better understanding of your end user and how to improve the platform experience. Finally, form champions. This is the practice that I love more because when we are talking about platform teams, usually it's not just one technology. We will have more than one technology, more than one library, more than one platform to generate one single platform to support different needs of these. So the knowledge needed to manage all these platforms is crazy, right? I had the chance to lead a platform team where we were providing DevOps tool chain to versionate their code, to build their code, deploy their code. So a lot of platforms in all these stages, right? Not only to build, but also to scan and generate automation in the test phases. So what is the keys there of this practice? The whole team should be generalist. I'm talking about the t shaped people, right? They should be generalist in all tools and platforms you have inside the platform team. And some of them will be deeper in specific platforms to generate ownership and delegate the responsibilities and keep the documentation updated and bring news to the team, solve issues and generate more expertise in the rest of the team. So with this, you will stop to search for experts and you need to start forming them stop to search for experts because for sure you will find some experts in the marketplace, but they will be so expensive. I will not say that you need to stop to search for experts and sometimes it will be needed. But if you can avoid it, try to find people that you can form and generate the t shaped people inside your platform team because it will maintain low the cognitive load and hide the expertise for that. First of all, you need to have a career path for each member and this career path should be aligned with the team needs. And at the end, the end user needs the internal teams, right? The stream aligned teams with that career. You will have certification training paths for all members inside your team, not only to be generalists in the platform, but also to be deeper in one specific platform. Complement that with game days and Chow's engineering sessions where they will need to prepare the platform to fail and solve it during a real and live moment. Finally, assign and create a calendar of lighting talks and tech talks that is connected with the other practices to these champions, to be led by these champions, because then they will learn more to be prepared to talk about those concepts. So, to summarize the three practices I broke to you today and ensure a smooth adoption of platform engineering inside your company. As you already reviewed with me, platform engineering is useful to support the DevOps adoption and ensure that the whole organization the IT organization. All the different roles we have inside work together to make the organization succeed. Try to bring this to your teams right? And also you can use it in other teams as well if you feel that is useful. First of all, customer centric leadership. We need to have one leader with design thinking mindset, with a clear vision of our customers and sharing this information with the rest of the platform team, promoting the closeness with the customers and setting and aligning the objectives and goals to address the platform team success. Because at the end, if a platform is not good enough, it will not be adapted and it will be a failure. Then let's practice what you preach. If you are proposing a platform to the internal users internal teams, then you need to use it as an internal team as well. Set some shared metrics with you and the end users and recognize and show the achievements because then people will get more motivated to find improvements inside the platform. Finally, form champions because it's super hard to find people ready to work in a platform team. So find generalist formed experts by two and delegate and trust on them. Trust on them that the documentation will be updated. They will bring the ideas to work in the specific platforms they are expert and to make the platform better. Finally, just to close this talk, I will empower you to go to the platform engineering community page, read the nagging steps to platform engineering hell that Lucas Galante published some time ago. You will find there are some mistakes in the platform engineering adoption you can avoid, and also I empower you to watch the Nick Watt talk about people, process and platform. Finally, if you want to join the platform engineering YouTube chat channel, there you will find much more content to prepare your path or your career as platform engineer. Thanks for joining. Thanks for participating. I hope you are enjoying this event and have a nice day.
...

Caio Medeiros Pinto

DevOps & EE Lead @ Citi

Caio Medeiros Pinto's LinkedIn account



Awesome tech events for

Priority access to all content

Video hallway track

Community chat

Exclusive promotions and giveaways