Platform engineering
Tags: platformengineering, devops, idp, internaldeveloperportal
Published: 2024-04-07 19:24:47

# Definition
Platform engineering - is a process of crafting of an *internal* portal and related DevOps tools for *developers*. The goal is to encompass infrastructure technologies in a way to reduce developer's cognitive load via meeting developer's needs. 
How does it differ from DevOps? While DevOps is related more to approach or philosophy of making and managing products in collaborative manner with shared responsibility between developers and operations, platform engineering is focused on solving specific problems of internal developer teams by providing set of tools. So platform engineering contributes to DevOps.

# Who need and when
When there are emerging different tools and approaches for common problems from different teams, several problems and intuitive intentions come:
- Unifying development tools for
	- easy onboarding
	- cross team workforce exchange
	- to have common ground for tools and processes that will be build on top of these tools 
- Finding "golden path" that enables developers to work efficiently with pleasant development experience (DevExp) 
- Managing services, i.e. keep track of ownership, technical requirements and other meta information.

# What platform engineer should know
This field necessitates a dual expertise: infrastructure knowledge(mostly cloud) and programming prowess. Also you *should* love DevExp. If you use ancient tools and have no intentions to make it better even for personal use then maybe platform engineering is not for you really. 
# Technologies and tools
Of course, you can build everything from the scratch, but there are already popular technologies in this field.  
One of the them which is must-know is Backstage - **framework** offering basic necessity, a lot of community driven plugins such an integration with Gitlab/Github and a basement for company specific needs by developing own plugins.
That said, after gathering development needs, develop section inside backstage in backstage via React, Typescript and choose plugin architecture pattern one of 3.

Another quite widespread technology is Argo CD - a declarative, GitOps continuous delivery tool for Kubernetes. Using Git repositories as the source of truth for defining the desired application state. You define tracking strategy once or when need, you push, Argo updates target environment.
Overall, complete solution can look complicated. Be sure to evaluate what you really need depends on company size and already used instruments. Check out 
catalog of platform tools  [Platform Tooling](https://platformengineering.org/platform-tooling)!
And of course, try to avoid companies with old/boring technologies at all cost.

# Backstage showcase
[Backstage Demo](https://demo.backstage.io/)
How adoptation of the service can look like.
# What reports say
- Security is number 1 consideration
- Product manager of internal platform matters
- It requires both time and effort before an Internal Developer Portal (IDP) starts to generate tangible value for developers.
# Certification
- Simple introduction into Backstage [Introduction to Backstage: Developer Portals Made Easy (LFS142x) - Linux Foundation - Training](https://training.linuxfoundation.org/training/introduction-to-backstage-developer-portals-made-easy-lfs142x/)
- Any certificates for developing kubernetes applications
- Any cloud certificates
# What looks like typical vacancy
From requirement we can see that tech stack can be anything, but some kind of Cloud, Container orchestrator, Programming language

> AWS / Azure ADO, Terraform, KMS and Cognito, Grafana, AWS Cloudwatch & Cloudtrail, MS SQL/SSIS / Aurora Postgres, ASP .NET, Hangfire, Entity Framework, Dapper, Redis, Amazon ElastiCache, Amazon EC2, Rabbit MQ, AWS QuickSight, Azure Active Directory, Amazon CloudWatch, Azure Active Directory, SCCS: Git, Argo CD. Programming Languages: React, C# .NET, Python.
# Author social links
Feel free to write a comments or remarks.
- [linkedin.com/in/r-matveev/](https://www.linkedin.com/in/r-matveev/)
- [Roman (@mizulinshina) • Instagram photos and videos](https://www.instagram.com/mizulinshina/)
- [Profile / X](https://twitter.com/RomanMatweenko)

# Communities
- Slack - big and active space [Join Platform Engineering on Slack | Slack](https://join.slack.com/t/platformengin-b0m7058/shared_invite/zt-2fbb2ci12-uURYT_JMYQ~_gQ~IKNYd0Q

# References and futher reading list
- [Argo CD - Declarative GitOps CD for Kubernetes](https://argo-cd.readthedocs.io/en/stable/)
- [Platform Engineering vs. DevOps: Explaining Differences + Uses](https://www.puppet.com/blog/platform-engineering-vs-devops)
- [2024 State of DevOps Report: Success | Puppet by Perforce](https://www.puppet.com/success/resources/state-of-platform-engineering)
- [Platform Tooling](https://platformengineering.org/platform-tooling)
- [Top 10 Platform Engineering Tools You Should Consider in 2024 - Qovery](https://www.qovery.com/blog/the-10-platform-engineering-tools-to-use-in-2022/)