Platform Engineering vs. DevOps: which is right for your organisation?
Modern software development is characterized by a shift towards cloud-based technologies and a growing desire for distributed development opportunities. As a result, Platform Engineering has emerged as the next cultural evolution in the IT industry following the success of DevOps.
This approach is now recognized as a competitive necessity that can improve developer productivity through hand-picked infrastructure automation tools, enable self-service capabilities, and reduce errors while increasing reliability, much like Site Reliability Engineering (SRE).
While both Platform Engineering and DevOps play crucial roles in successful software development, it's essential to understand the differences between these two approaches. Doing so lets you make informed decisions for your organization and achieve successful software development outcomes.
What is Platform Engineering: the road to standardize processes and reduce cognitive load
Originally in software development, developers who created the software also ran it. That was a very long time ago. Later, when the distributed approach to building software became more popular, Ops and Dev teams split and worked separately. It was inconvenient and time-consuming, sometimes taking up to six months to move an idea from origin to production. To address this, we created DevOps. DevOps philosophy brought teams back together to reduce the time between making changes to a system and delivering high-quality software on a continuous basis. For a detailed account of this history, check out this informative YT video.
Cooperative building, testing, releasing, monitoring, and maintaining applications eliminated the need for code to move between different specialists. That is why development and operational expertise baked into cross-functional teams significantly improved some software teams. Still, some organizations failed to see desired results due to the vagueness of defining DevOps roles and responsibilities.
Some organizations have shifted operational tasks onto developers as part of their DevOps adoption, which has had mixed results. While senior developers are often capable of managing many of the tasks previously handled by ops teams, this has sometimes resulted in overburdening them with additional work and increased cognitive load, leading to developer toil. Organizations that rely heavily on infrastructure realized that they needed to provide the right level of abstraction and structure to ensure a successful DevOps adoption and operation.
Welcome, Platform Engineer
So, if you're a developer, don't worry about trying to know everything about Kubernetes or security or any other DevOps service. Instead, focus on delivering the features that your users need, and let other experts handle the rest. This is how the Platform Engineering concept comes into the picture.
Image source: @luca_cloud
Platform engineer's role is to build internal developer platforms to improve developer experience and increase developer productivity. Platform teams integrate all operational services in one internal platform that enables continuous delivery while its users, developers, DevOps engineers, SRE engineers, can operate at their speed and cadence.
What is Internal Developer Platform (IDP)
In the cloud-native era, software engineering is only getting more complex and challenging, so operational excellence has never been so crucial. Engineering software now involves engineering organization to be agile and autonomous. To help software teams access reliable tools and workflows and manage their applications in production, Platform Engineers create Internal Developer Platforms (IDP). These platforms enable developers to self-serve and operate effectively without needing to understand the entire ecosystem.
Internal Developer Platforms (IDPs) are designed to be user-friendly and adaptable to changing technologies. The Platform Engineering team treats all other teams as customers, meaning that IDPs are only useful when multiple teams require the same services. If only one team needs a particular service, they should build it themselves. The goal of building IDPs is to create golden paths for specialists who build software, which means providing them with well-defined and reliable methods that improve software delivery experience.
Spotify was the first company that leveraged standard tooling to improve its developer experience and increase DevOps productivity.
TL;DR: Spotify's Platform Developer Experience (PDX) team created CI/CD tools and automated processes, because they found out that using a DevOps model where teams were responsible for their features led to fragmentation and "rumor-driven development." To eliminate it, PDX created Golden Paths, a set of best practices for various engineering projects to provide an opinionated and supported path to build services. More about it on their blog.
This is an example of a self-service-driven organization where the platform engineering team binds all the other team needs and based on this, builds an internal developer platform that does the operations for developers while the platform engineering team works on making the platform better as requirements change.
Characteristics of a good Internal Developer Platform
- You develop it as a product. It has a product owner to ensure that it serves the needs of its clients (developers) well and in a user-friendly way (intuitive UI, elegant API, and good CLI).
- You use golden paths so your IDP provides standarization, reusability and speed for developers.
- You implement security and compliance implicitly.
- You build in observability.
- You build it with scalability in mind so your technology can keep improving in terms of usability and user experience as needs are changing.
Image source: Programming Memes for Developers
Platform engineering teams vs. DevOps teams: differences and similarities
Putting a clear line between these two methodologies can sometimes be challenging. Platform engineering is often implemented after a DevOps initiative is already present. It is not a replacement for DevOps but more like an evolution. There is some overlap between the two approaches, yet the two disciplines focus on systematizing and supporting different stages of software delivery.
To build an effective software development lifecycle (SDLC), consider combining different philosophies and taking the best practices from various disciplines. Integrating DevOps, SRE, Platform Engineering, and other relevant methodologies allows you to create a customized, efficient, and effective process that meets your unique needs.
Every project is different and demands a tailored approach. While constructing an intricate development platform might not be practical for a small startup, relying solely on "pure" DevOps may pose scalability challenges for larger organizations.
Even with a substantial ops team, meeting all developers' requests might be insufficient. The key lies in empowering developers to become self-sufficient, enabling them to work efficiently.
Ultimately, the goal is to provide developers with a comfortable working environment, allowing them to concentrate on delivering business value. You need to find out how to strike the right balance for your project's success.
Grzegorz Kocur - Head of DevOps at SoftwareMill
Platform Engineers vs. DevOps engineers vs. SRE
DevOps - a short from Development and Operations - is a philosophy. Its implementation may vary from organisation to organisation. Overall goal of DevOps is to focus on infrastructure that gives dev teams more control over shipping code to production. In their daily work, DevOps engineers boost the speed and quality of software delivery while reducing errors and downtime. If the system is available and users are happy, you can be sure your DevOps team is doing a good job.
After the code is shipped to production, SRE engineers take over and focus on system reliability. SRE is all about keeping services built by software engineers up and running for potential consumers. SRE is fundamentally doing work that has historically been done by an operations team, but using engineers with software expertise. If your system metrics are healthy, SRE engineers are doing a good job.
Finally, Platform Engineering is an evolution of the two previous approaches. The concept is built around the vital needs of software engineering organisations, mainly cloud-native companies. It focuses on enhancing developer productivity by enabling developer self service. Successful platform teams architect efficient team-to-team interactions that are involved in building distributed systems. Platform developers work can be also efficiently used by Ops and SRE specialists. The more swiftly and efficiently various developers teams can work, the better your platform team is.
DevOps or platform engineering or hybrid?
When building modern software, each development team is responsible for developing solutions from beginning to end. For some teams, production means end-user applications running in production. For some teams, it might mean developing internal services consumed by other teams. You can leverage all concepts: DevOps, SRE and Platform Engineering to create efficient, effective, and scalable software development processes.
Every organization has different needs, and your main focus should always be on meaningful collaboration between specialists responsible for your software development lifecycle. Our approach as software consultants is rooted in a deep understanding of technology. By working closely with your team, we can understand your unique challenges and requirements and develop practical solutions that enhance your developer's productivity and help you achieve your goals.
- Check out our expertise and Platform Engineering services
- Check out our expertise and DevOps services
Reviewed by: Grzegorz Kocur