Techniques 1. Applying product management to internal platforms Adopt We keep getting good feedback from teams applying product management to internal platforms. One key feature to remember, though: It’s not just about team structure or renaming existing platform teams; it’s also about applying product-centric working practices within the team. Specifically, we’ve received feedback that teams face challenges with this technique unless they have a product-centric mindset. This likely means additional roles, such as a product manager, alongside changes to other areas, such as requirements gathering and the measurement of success. Working this way means establishing empathy with internal consumers (the development teams) and collaborating with them on the design. Platform product managers create roadmaps and ensure the platform delivers value to the business and enhances the developer experience. We continue to see this technique as key to building internal platforms to roll out new digital solutions quickly and efficiently. 2.CI/CD infrastructure as a service Adopt The options for CI/CD infrastructure as a service have become so manifold and mature that the cases in which it’s worth managing your entire CI infrastructure yourself are becoming very rare. Using managed services like GitHub Actions, Azure DevOps or Gitlab CI/CD comes with all the common advantages (and trade-offs) of managed cloud services. You don’t have to spend time, effort and hardware costs on maintenance and operations of this often complex infrastructure. Teams can take advantage of elasticity and self-service, whereas provisioning more of the right agents or getting a new plugin or feature are often a bottleneck in companies that host CI themselves. Even the use cases that require to run build and verification on your own hardware can now mostly be covered with self-hosted runners (we’ve written about some for GitHub Actions, actions-runner-controller and the Philips’s self-hosted GitHub runner). Note, however, that you won’t get out-of-the-box security just because you’re using a managed services; while mature services provide all the security features you need, you’ll still need to use them to implement zero trust security for your CI/CD infrastructure. 3.Dependency pruning Adopt Starter kits and templates are widely used in software projects to speed up initial setup, but they can pull in many unnecessary dependencies for a particular project. It’s important to practice dependency pruning — periodically taking a hard look at these dependencies and pruning any that are not used. This helps reduce build and deploy times and decrease the project’s attack surface by removing potential vulnerabilities. Although this isn’t a new technique, given the increasing frequency of attacks on software supply chains, we advocate for renewed attention to it. 4.Run cost as architecture fitness function Adopt Automatically estimating, tracking and predicting cloud infrastructure run cost is crucial for today’s organizations. The cloud providers’ savvy pricing models, combined with the proliferation of pricing parameters and the dynamic nature of today’s architecture, can lead to surprisingly expensive run costs. Even though this technique has been in Adopt since 2019, we want to highlight the importance of considering run cost as an architecture fitness function, especially today, due to accelerated cloud © Thoughtworks, Inc. All Rights Reserved. 12
Immersive Experience — Vol 28 | Thoughtworks Technology Radar Page 11 Page 13