Platform Engineering: The next era of ops

@kjuulh

2023-04-05

Introduction

In recent years, the field of software development has witnessed the emergence of several new trends and methodologies. DevOps, which combines operations with software development, was one of the first such trends to gain widespread popularity. While it brought about significant improvements in the development process, it ultimately reached a point of stagnation, leaving room for further innovation.

One of the newer trends that has emerged is platform engineering. This approach builds upon the foundations laid by DevOps but takes a more product-oriented mindset to delivering value. Platform engineering involves creating and managing the technology infrastructure that supports an organization's applications and services. It combines operations with systems development, with the aim of improving efficiency, reducing downtime, increasing scalability, and enhancing security.

The key goal of platform engineering is to bring value to engineers and treat them as stakeholders. This means taking a user-centered approach to building and maintaining the technology infrastructure that supports the development process. By doing so, organizations can increase developer productivity and job satisfaction, ultimately leading to improved software quality and faster time-to-market.

Why platform engineering

Adopting a new methodology requires a reason. Platform engineering may not be suitable for every company, but it is ideal for medium-sized companies with a sizable engineering team. It's worth noting that platform engineering isn't solely for operations; it can be used for any type of platform, not just infrastructure services.

The primary motivation for implementing platform engineering is to serve a large number of developers who rely on a relatively uniform tech stack. When starting from scratch, platform engineering allows teams to collaborate with stakeholders, such as developers, to define the product – the platform itself.

However, platform engineering can also be adopted or evolved from existing DevOps or SRE teams, or it may grow from an enabler squad if their product is beginning to see significant usage within the company.

Several principles guide platform engineering

  • The platform must be under control and in service of its stakeholders.
  • The platform should bring value to the business through its developers.
  • If its services are needed beyond the company, the platform must evolve into a feature squad while maintaining its previous connections. Maintaining a direct and stable connection to developers is critical to keeping the platform focused.

Differences to existing methodologies

Platform engineering operates at a higher level of abstraction than SRE or DevOps. While SRE oversees infrastructure or direct services for the business, and DevOps aims to bring together developers and operations, platform engineering provides an opinionated and curated platform to feature squads. This can take various forms depending on the company, ranging from CLI tools or Jenkins plugins to overseeing the entire development journey, from project creation to day-2 operations.

Platform engineering can enhance feature squads to the extent necessary, without ever interfering with the actual business domain. A platform engineering team can collaborate with a feature squad to develop a business feature, as long as the feature squad retains ownership and the platform engineer is there to gain experience in using the product they build. However, this should not be the first option, as it can be a costly exercise.

Overall, platform engineering provides a valuable perspective that can benefit feature squads. Its focus on providing an opinionated and curated view of the platform can help streamline development and improve collaboration between teams. By working together, feature squads and platform engineering can create a more efficient and effective development process while maintaining clear ownership of each project.

Modes of Operation in Platform Engineering

Platform engineering has two primary modes of operation, which in some ways mirrors how a business serves another business (B2B):

  • Product discovery
  • Product maintenance and evaluation

This is a continuous cycle of discovering, building, maintaining, and evaluating products to ensure that they meet their intended goals and remain relevant. The key difference between B2B and platform engineering is that the latter is far more opinionated and direct, building opinionated tools rather than generalized products to serve the needs of developers and business services.

It's important that platform engineering teams operate independently rather than being embedded within business teams, although they should have reasonable feedback mechanisms in place. This can include joining guilds to participate in general discussions with business teams, spending time with business teams to collaborate on development, or providing outreach through talks and training sessions. This two-way exchange provides an opportunity for platform engineers to receive feedback on their products while also enabling business teams to learn how to use them effectively.

By maintaining this feedback loop and focusing on opinionated tools that meet the needs of developers and business services, platform engineering teams can ensure that they provide a valuable service to the organization as a whole.

Conclusion

Platform engineering is a methodology that combines operations with systems development to create and manage the technology infrastructure that supports an organization's applications and services. By taking a user-centered approach and treating developers as stakeholders, platform engineering aims to increase efficiency, reduce downtime, enhance security, and ultimately improve software quality and time-to-market. It provides an opinionated and curated view of the platform, which can benefit feature squads by streamlining development and improving collaboration between teams.

Platform engineering operates in two primary modes of operation: product discovery and product maintenance and evaluation, and it's essential that platform engineering teams operate independently but maintain feedback mechanisms to receive feedback on their products while also enabling business teams to learn how to use them effectively. i