Platform Engineering Guide: What, Why, and How?

Kamalmeet Singh
4 min readMay 19, 2023

--

Platform Engineering has emerged as an essential discipline that helps development teams in an organization to focus on business challenges and leave the underlying platform tasks to specialists.

“Platform engineering improves developer experience and productivity by providing self-service capabilities with automated infrastructure operations.”

Gartner has identified Platform Engineering as a vital trend in upcoming years.

https://www.gartner.com/en/articles/what-s-new-in-the-2022-gartner-hype-cycle-for-emerging-technologies

Before getting into the importance of Platform Engineering, let's take a quick look at what it is.

What is Platform Engineering?

How does a typical journey from development to production deployment look? The development team develops the code, tests locally, setup different environments like dev, test, stage, perf, and production; which means setting up infra for compute, databases, queues, caching, load balancing, etc. Finally monitoring and managing applications as well as infra. And at any point in time, multiple teams are working on the same process.

So where does platform engineering fit in? At a very high level, we can think of the platform helping decouple application development from infrastructure. It hides complexities like how the application is actually getting deployed, how to set up databases and caches, how to manage CDNs, acquire new infra to scale up or release infra when scaling down.

As shown in the image above, Platform decouples the application development process from infra activities and hence frees up application development teams' time and effort from infra-related activities. Also, this streamlines the process across the teams, as the platform and processes associated are at the organizational level.

Why should we go for Platform Engineering?

Platform Engineering helps development teams in the following manner.

  • Decouple features that are needed to make sure applications are up and running from core business features.
  • Different teams (application and platform engineering) can focus on independent responsibilities for better control.
  • Saves effort and money as repeated work is segregated and managed in a central space.
  • Cost-effective due to shared infrastructure.
  • Shorter time to market as off-the-shelf capabilities help save time for development teams.
  • Hide the underlying complexity of managing infrastructure.

How we should implement Platform Engineering in an org?

Once we have decided to set up a platform engineering group in our org, it is important to analyze at what stage the org is already at. For example, are we already following a common CI/ CD practice, do we have common artifact management tools, etc?

At a high level, Platform Engineering would cover the areas shown in the table below. Different organizations would need different levels of capabilities, for example, a startup might only need CI/ CD at its current state, whereas an established big organization might need to cover multiple areas.

Platform Engineering

One should also be aware of and analyze the expected challenges in setting up a specialized platform engineering group.

Challenges

  • Aligning teams to centralized processes can be a challenge as each team will have its own preferences, for example, tools being used for CI/ CD, Log monitoring, and so on.
  • Cost management can be difficult as finding which areas are consuming resources is not straightforward at times.
  • Impact finding can be difficult as platform tools and products might not impact end business goals directly.
  • Debugging can be a challenge: who owns an issue — Is the problem part of the platform or the application team?
  • Teams can bypass the platform, and the platform ends up becoming a white elephant for org.

To make platform engineering a success, make the whole process as automated as possible. Get buy-in from relevant stakeholders, and define the scope of the platform. Work closely with all engineering teams. Application development teams should not feel dependent on the platform, on the contrary, it should work in a transparent manner. Focus on self-help documentation rather than dependency on platform teams for setup and support. In conclusion, application teams should feel empowered and not be made dependent on the platform.

--

--

Kamalmeet Singh

Tech Leader - Building scalable, secured, cloud-native, state of the art software products | Mentor | Author of 3 tech books |