Editor’s Note: The following is an article written for and published in DZone’s 2024 Trends Report. The Modern DevOps Lifecycle: Changing CI/CD and Application Architectures.
DevOps — ✓
DevSecOps — ✓
Platform Engineering — ?
Is platform engineering just another term used for the specialization of DevOps or is it something different? The truth is probably somewhere in the middle. DevOps and its related DevXOps flavors have a strong cultural flavor that puts individual teams at the center. Unfortunately, in many places, DevOps has led to new problems such as tool proliferation and a lack of alignment across the enterprise. Arguably, in response to the very strict silos and strong centralization of the past, DevOps has pushed the pendulum too far toward federation—and, therefore, suboptimization at the team level—to the detriment of the organization. These are most felt by larger, more complex enterprises that have to deal with different technology stacks and different levels of maturity across the organization.
Platform engineering evolved in response to this enterprise-wide challenge. Platform engineering is it is not a substitute for DevOps. Instead, platform engineering complements DevOps to solve enterprise-wide challenges and provide a tool platform that makes it easier for individual teams to do the right thing instead of screwing things up while trying to maintain consistency across the organization.
IT delivery has become more complex over the past few years, as more and more applications move at a faster pace. This means that organizations cannot rely on individuals to manage complexity; they require systematic responses supported by appropriate tools. This is a statement of the problem that platform engineering has the ambition to solve. This has made platform engineers critical to organizations, as their role holds the keys to enabling security and engineering standards.
What is a platform engineer?
The role of a platform engineer has three distinct parts.
Picture 1. The role of the platform engineer
The most obvious role is a technical arch as they must build an engineering platform that connects all tools and enables processes. Another aspect is a community mover, which is similar to developer relations roles in technical tools companies. The third part is a product manager; the competing interests and demands of the developer community need to be prioritized over the technical needs of the platform (consider things like security hardening and patching deprecated components).
Platform engineer as technical architect
In organizations with moderate or high complexity within their technology stack, the number of tools required to build, release, and maintain software is at least a dozen, sometimes more. Integrating these tools and enabling meaningful metrics to be measured is just as demanding as integrating business applications. After all, the challenges are very similar: different processes need to be aligned, data models need to be transformed to become usable, and integration points need to be connected to enable an end-to-end process.
The systems that drive the software side of the business have become equally challenging. The role of the platform engineer here is to look after the architecture of the tools that drive the software side — the goal is to make the tools “disappear” and make software development and release easy.
A platform engineer as a community enabler
Software engineers tend to think that their solutions are better than others. As such, the adoption of engineering platforms presents a challenge to overcome. Telling engineers to use a certain tool was often met with resistance. A platform engineer must be a community enabler who works with engineers to promote the platform and convince them of the benefits. Communication goes both ways in this part of the role as the Platform Engineer must also listen to platform issues and challenges and identify new features that are in high demand. This leads to the third part of the role.
Platform Engineer as Product Manager
Competing demands on the platform come from the organization’s engineers and other stakeholders such as security and, of course, platform engineers. Prioritizing these requirements in a meaningful way is a difficult task as you have to strike a balance between all the competing interests, especially as platform funding is often a challenge in itself, so speed to value is critical to sustaining the platform on an ongoing basis. . A platform engineer requires good negotiation skills to navigate these challenges.
Platform Engineering Architecture Overview
We’ve talked about the role of a platform engineer, but what is it about that platform that a platform engineer builds and maintains? It’s easiest to think of three layers and one target environment:
- The top layer is developer experience. These are the tools that the developer works directly with — the tools that drive the entire workflow, such as Agile lifecycle management tools, service management tools, and development IDEs fit into this.
- The bottom layer consists of infrastructure components which must be combined to build application environments. This can be from a public or private cloud and includes traditional data center technologies.
- In the middle is where most of the complexity lies – it software engineering platform. All the processes required to create and deliver software are orchestrated here: CI/CD, security scanning, environment provisioning and release management.
Figure 2. Platform structure
The Transition: How to Adopt Platform Engineering in DevOps Teams
So where should you start? One successful adoption pattern focuses on identifying the developer journey to define a minimum viable platform. What capabilities are needed to enable the developer’s journey to deliver results? Consider a task such as securing an environment, deploying a new API to production, or running a performance test suite. Each is a valid development path with multiple touch points potentially requiring numerous tools. Once you create a minimum viable platform for the first set of applications or technologies, adoption follows three dimensions: more applications (once the necessary capabilities are available), more capabilities, and greater maturity, thereby increasing levels of automation and/or performance.
In addition to worrying about building a platform with reasonable access, three other aspects should be addressed early on:
- Community engagement
- Financing
- Measuring outcomes from the platform
Defining a community engagement strategy can be very helpful. This strategy should include how information will be shared with the developer community, how feature requests can be made, and how the benefits of the platform will be communicated. It is also helpful to define forums, communication and their frequency.
Funding can quickly become a bottleneck, so a financing strategy should be agreed early in the adoption of the platform engineer. This can be one of several strategies, such as earmarked funding, service rendered funding or service tax for all software development. Each of them has its own advantages and challenges, the discussion of which is beyond the scope of this article. What is important is to have a sustainable long-term financing strategy that does not depend on the goodwill of stakeholders.
Last but not least, a platform engineer must be able to demonstrate results, which means we must measure meaningful metrics which show why the company is better off with the platform. This is often forgotten or an afterthought. Understanding the organization’s priorities and aligning the measurement framework with these can help achieve ongoing support. Unfortunately, this usually requires aligning data across multiple tools, and is easiest to achieve by thinking ahead – it becomes increasingly difficult the longer the individual tools’ data models remain isolated.
Conclusion
Platform engineering is still fairly new, but there is already a lot of content on it, which shows how quickly it has caught the interest of organizations. There is even a special conference for it, which started in 2022 and has thousands of participants. It’s early days, but current indications are that platform engineering is rapidly gaining market acceptance and a passionate community. And while this is happening, the role of the platform engineer will gain more and more importance, which is already reflected in salaries.
Hopefully, platform engineering will continue to help organizations reduce complexity for their developers while delivering on the DevOps promise: delivering better solutions faster and more securely.
This is an excerpt from DZone’s 2024 Trends Report. The Modern DevOps Lifecycle: Changing CI/CD and Application Architectures.
For more:
Read the Report