Platform Engineering
What is Platform Engineering?
Platform engineering deals with the creation of an “Internal Developer Platform” (IDP), which software developers can use to access the tools and services they need for their work.
For example, software developers can use an IDP to independently deploy test environments or view the results of past test runs. The goal is to allow developers to focus on developing and deploying features instead of spending time on setups and infrastructure maintenance. The larger the team and toolset, the more a company benefits.
Platform Engineering and DevOps
Originally, developers created software and ran it. Later, the areas of “development” and “operations” were separated. But: working separately led to silos. Then, under the name DevOps, methods emerged to promote collaboration. Platform engineering is the next step and a further development of DevOps to increase efficiency in software development.
Example: Backstage IDP
An example of an IDP is Spotify’s developer platform backstage.io. It is open source and demonstrates the basic principles of platform engineering.
Backstage is a platform that contains all the information about the tools and services used by a company. Developers have immediate access to templates that are considered best practice within the company and receive an overview of the preferred tools used to enable efficient joint work on a project. Another advantage: it is immediately visible who is responsible for individual areas.
This reduces the effort required for collaboration. If you have previously asked on Slack who was responsible for this, now you can just take a look at the platform. Teams thus have one place to immediately get an overview of the company’s own IT ecosystem. The functions can be viewed in a demo here: Demo Backstage.
Platform Engineer: Activities
Here are two statements that highlight the activities of a Platform Engineer and provide a very individual insight into Platform Engineering (https://www.reddit.com/r/devops/comments/qawu7g/platform_engineer/):
“Our team is responsible for providing a clear way for development teams to get an application to production. That entails, making sure we have a working CI/CD system, working infrastructure, working development strategies, internal tooling which supports all the above, and a clear picture of how to collect metrics / gather trace data across the infra, ensure there is a testable environment, provide backup / replication / fail over strategies for teams that may be less knowledgeable about the subject and just want to get an application out.“
“I was hired on as a DevOps Engineer and we changed the title to Platform Engineer. We enable developers to support their own products using a platform that makes it easier for them. We simply create that platform. For example, devs usually don’t care about certain things, so we bundled all the things they don’t care about or need to care about into an easy to use “task” that runs at deployment time. We isolated every application into its own infrastructure so nothing is shared with other apps and they can own it themselves. The platform team drives the culture that works best for all the dev teams. We never want developers to be blocked by us, and to always be enabled to do whatever they need to do. That is our goal.“
The benefits of platform engineering
- Improvement of the developer experience: Developers can access tools and information in self-service.
- Reduction of cognitive load: Developers no longer have to worry about certain activities.
- Increased productivity: Developers spend less time taking care of their tools and are more productive.
The disadvantages of platform engineering
- Complexity: Management and maintenance require a deep understanding of different systems and tools.
- Cost: The investment in platform development and maintenance can be high.
- Standardisation vs. autonomy: Too much standardisation can limit developers.