Byte Journeys

Join me as I share insights and discoveries from my journey in the world as a software engineering manager by day and tinkerer by night.

What is platform engineering

11 February 2024

Since mid 2021 the term “platform engineering” has gained some traction. I want to shed some light on what this means and would like to shed some light on the interplay between Platform Engineering and DevOps. These two disciplines, while distinct, work synergistically to streamline and enhance development processes. Platform Engineering, is a specialized area within software engineering, dedicated to building and managing scalable and efficient development platforms. Consider, for example, the creation of a Kubernetes-based container orchestration platform. Platform engineers would be responsible for setting up Kubernetes clusters, configuring routing, and making sure that tooling is in place to monitor the applications. In short: the setup provides a standardized environment where applications can be deployed reliably and at scale.

On the other side, DevOps integrates software development and IT operations to foster a more collaborative and efficient lifecycle. A classic DevOps practice is Continuous Integration and Continuous Delivery (CI/CD). Here, tools like Jenkins or act-app are used to automate code integration and deployment processes. By implementing CI/CD pipelines, DevOps teams can ensure that code changes are automatically tested and deployed, reducing manual intervention and speeding up release cycles.

The intersection of Platform Engineering and DevOps is where these practices converge. For instance, the platform engineered for Kubernetes can be leveraged by DevOps teams to automate deployments through CI/CD pipelines. Moreover, monitoring tools like Prometheus and Grafana, set up by platform engineers, provide vital feedback to DevOps teams, enabling quick identification and resolution of issues.

In terms of infrastructure as code (IaC), platform engineers might use and provide Terraform to script the provisioning of cloud resources. This approach ensures consistency and repeatability in infrastructure setup, which is really beneficial for DevOps practices like blue/green deployments or canary releases, where stable and predictable infrastructure is key as we all know and have gotten to love.

In essence, while Platform Engineering provides the technological groundwork and tooling essential for a productive development environment, DevOps uses these foundations to implement practices that enhance collaboration, responsiveness, and the overall effectiveness of the software development process. Together, they create a robust framework that not only supports technical requirements but also aligns with the agile mindset we have for efficient software development. Although not named like this and not clearly as distinct, a lot of organizations that I have worked in have been working in this mode already for some years.