Platform engineering is the process of designing and implementing toolchains that improve the software delivery experience. Platform engineers set up automated infrastructure and self-service controls that allow developers to work more efficiently.
Platform engineering is an evolution of DevOps. DevOps sets out principles for streamlining development using automation, autonomy, and collaboration. These qualities are also integral to platform engineering so the technique helps you achieve good DevOps performance.
DevOps brings development and operations teams closer together. It focuses on using tools, systems and iterative processes to shorten feedback cycles. Successful DevOps strategies accelerate your team’s throughput without compromising on quality.
DevOps is an open-ended concept. Different organizations will combine unique sets of tools and methodologies to create their own implementation. However an emphasis on throughput, quality, and dev and ops unification is a consistent characteristic across all organizations.
Dev and ops were traditionally handled by separate teams without a direct communication channel. Developers wrote the code while operators provisioned infrastructure, launched deployments, and monitored for problems. This model can’t accommodate the scale of modern-day applications, which might comprise hundreds of independent microservices. Developers need self-service access to environments similar to production so they can test new components in a realistic setting. This is where platform engineering comes in.
The Role of Platform Engineering
Platform engineering teams are responsible for establishing tools and processes that help developers be more productive. They engineer the “platform” which developers build against. In practice, platform engineers often undertake the following tasks:
- Provisioning infrastructure such as staging environments, CI pipelines, and automated testing systems for developers to use.
- Creating internal APIs and processes to track the status of changes and automate deployments.
- Liasion with the operations team to ensure development infrastructure accurately matches production.
- Implementing security, reliability, and compliance safeguards that identify problem code before it gets merged.
- Providing self-service controls around the above, so developers can create staging environments, run tests, and perform security audits on-demand, without waiting on other teams.
This work produces a platform that lessens the workload for developers. The tedious peripheral parts of software delivery are shifted onto the managed platform, allowing engineers to focus on building new features. The team can keep moving forwards, shipping more code to customers within the platform’s safeguards.
Dedicated platform engineering roles are usually only found in larger organizations. You need a sufficiently large pool of engineers available before you can dedicate some of them to building internal platforms. Smaller teams can still benefit from the platform engineering model though. At its purest, platform engineering is simply optimization of your development environment. Try allocating a few hours a week to building tools and processes that address the bottlenecks in your workflow.
The best internal platforms behave a bit like a private PaaS solution. They package all the capabilities developers require into convenient interfaces such as CLIs, web UIs, and automated pipelines. The platform cuts away the overheads of building software so developers can concentrate on the code. This reduces distraction, lessens the cognitive load, and facilitates more productive working habits.
How Did Platform Engineering Emerge?
Platform engineering emerged as a result of the growing complexity of modern applications. Nowadays apps are commonly formed from multiple loosely coupled components that run inside distributed environments. Provisioning and maintaining the architecture can be a multi-step procedure that requires specialist knowledge.
Developers are predominantly concerned with writing code that enables new business features. The task of managing the platform is up to operations. While DevOps pulls the two closer together, it can be unrealistic to expect individual developers to be capable of deploying the entire stack when they need a fresh testing environment. In some regulated industries, this could even be forbidden by compliance controls.
Platform engineering addresses the problem by providing developers with self-service access to environments that are managed by a dedicated team. Developers can stop worrying about infrastructure, pipelines, and build scripts which fall outside their job descriptions. Business leaders and compliance staff can relax, knowing all environments are created in a standardized way.
Platform Engineering vs DevOps
Platform engineering is best viewed as a logical progression of DevOps. It’s a concrete approach you can use to maximize DevOps success. Addressing developer pain points will increase throughput and provide new opportunities to set up safeguards around your code.
Platform engineering grants developers autonomy so they can access tools on-demand, without waiting for colleagues or performing tedious tasks themselves. It relies heavily on automation and forms a bridge with operations, fulfilling another two DevOps principles. Helping your core product team concentrate on new business features is a guaranteed way to reduce your lead time and become more responsive to customer requests.
DevOps is more than just platform engineering though. You’ll still need other tools and processes to support your teams, from idea through to production. Platform engineering is one developer-centric component in the DevOps strategy, but others such as lean working, team buy-in, and detailed observability are no less important.
Platform Engineering and SRE
Site Reliability Engineering (SRE) is often discussed in the context of DevOps and platform engineering. SRE teams are tasked with maintaining the reliability of your services. They use business-level objectives such as SLOs, SLAs, and error budgets to identify when the service diverges from user expectations. This should cue engineering teams to stop work on new features so and prioritize stability improvements instead.
Platform teams often overlap with SRE engineers. Both roles provision and maintain software environments using automation. There is a significant difference in intention though. Whereas SRE focuses on consistently meeting user requirements, platform engineering is all about satisfying developer needs. Although you should pay attention to both areas, platform engineering is usually lower priority than SRE.
A malfunctioning pipeline in a developer platform will be inconvenient, causing delays to your DevOps process, but it shouldn’t affect your end users. This is a problem for platform engineering. However, SRE will need to get involved if a production server goes offline or slows down, because the incident will directly impact users.
Platform engineering accelerates software delivery by giving developers self-service tools for interacting with infrastructure. Engineering teams use the provided platform to rapidly test new code and deploy it across environments.
DevOps and platform engineering are closely related topics. Platform engineering is usually implemented as part of a DevOps strategy. It increases developer autonomy and automates mundane infrastructure tasks, adhering to the fundamental DevOps principles.
It’s possible to do DevOps without platform engineering. Likewise you might already be using tools and processes that fall under the platform engineering banner, without intentionally recognizing the discipline. Establishing a dedicated platform engineering team lets you take the next step and create high-performing internal systems that empower developers, all while narrowing the gap with operations.