Platformizing Done Right
I've been recently re-reading an excellent podcast transcript from the engineering and operations team at Wix on Platform Engineering.
It strikes me more and more, from various conversations with peers and clients, that this new "way of thinking" is becoming increasingly popular.
But why? And what exactly is Platform Engineering?
Platform Engineering is an increasingly popular business transformation method, which is one manifestation of "platform thinking".
As a result of the infamous "you build it, you run it" philosophy, Platform Engineering has emerged as a new industry ambition.
The objective is to utilize reliable and scalable application development and CI/CD tooling to establish a baseline platform process for company product teams to deliver applications to customers faster and more consistently.
The old adage "you build it, you run it" has become popular in today's fast-paced world of software development. And for good reason.
It simply means, that developers are responsible for writing code, shipping it to production, and maintaining the core codebase simultaneously. It feeds off the "Agile gone wild" thing.
No doubt product teams have been able to move rapidly and efficiently through this approach, but it comes with a high-risk/reward return. At times, such an approach becomes hazardous.
So, why all the fuss?
Well, there is no one straight answer, but generally, the growing complexity of cloud-native technologies has played a part.
Many operational teams looking after a product team's cloud pipeline have had a hard time recently, specially as businesses scale.
A significant challenge for operation teams is deployment, these being deployments that grow into big-bang events involving multiple teams.
At times, deployments can be infrequent, cause delays, and make it difficult to follow best practices across CI/CD.
Before you know it, operation teams are in octopus mode, managing multiple environments and ensuring that everything works as expected, becoming overwhelmed by the endless customization required to meet unique needs.
To address these challenges, it's become a mantra for many to start adopting Platform Engineering techniques, as outlined above.
From here, operation teams start configuring and setting up automated CI/CD pipelines and sandbox environments that are, in theory, fail-safe and configured for shock-absorbing the big-bang events.
Once the baseline requirements for Platform engineering are in place, before too long, operation teams can prioritise comprehensive automation tools, containers, managed services, and access controls.
The return on investment now, is that product development teams are provided with different configuration bundles and processes to follow and there is a greater sense of control, from an operation teams perspective.
The next step, would be for operation teams to start automating fleet infrastructure and integrate incident and alert management tracks where necessary.
Job done.
In most cases, these companies end up with some shared 'internal integrated product' layer, often called an "internal developer platform" encompassing the company's operational requirements.
In theory, all development teams within a company can then utilize this new layer.
But with all the promise, challenges and obstacles remain for many large-scale companies looking to platformize their product development processes. Many product development teams use the same core platform layer but for different ends.
As outlined by the Wix team, the real challenge for fully platformizing quickly shifts towards unifying code dependencies and managing dozens of technical inter-relationships between multiple development teams - all of whom may be evolving their code in isolation towards different ends.
As Wix's Dan Bar Shalom outlined, "the cost of this [challenge] became pretty high", most notably because, before Wix fully platformized, they had several product development teams doing their own thing, but at the same time, each often required "the same set of things".
Each product development team, needed all the same code components but at different times, all of them needed "billing and things like coupons and checkout and chat", and "because of [their] independence, each one of them developed independently".
He outlines some of the challenges in more detail, "everybody was building something that's more akin to feature-based APIs. So you had a feature that you wanted to develop in some platform, whether it was booking, stores or anything else; you developed an API that was custom-tailored to that feature. And then your front-end developers or other integrations use that API specifically. It amounted to having a lot of different APIs that did very, very small things, but no cohesive models".
I think we can all relate to this takeaway.
Even with companies now platformizing, such challenges remain.
How to unify? How to really get the most bang for your buck? Right now, the only way forward is to keep moving forward, and grit your teeth at the potential cost burden that comes with the process.
Most companies try and then try, then give up due to the cost burdens. It's a challenge to stick to it, stick with the process, with "many different groups, many different products and technologies", it's inevitably "very hard [to get] a grip".
But we can learn from others who have succeeded, such as Wix, that every company trying to platformize needs an "organization-wide rulebook", that adopts a "model domain-driven approach", and that every development team "understands the premise and agrees with it."
From here, defining processes, collaborating with product developers carefully and purposively, asking the right questions, and identifying common ground for processes to work are essential.
It quickly becomes, at its core, a human problem as well as a technical challenge to overcome.
And those who can find the right people, who can see eye-to-eye with both operations and development teams, find democratic ways to collaborate and harness problems, will have a high probability of successfully platformizing their core operations.
Bring people together and give people a voice, and companies can go a long way towards fully platformizing.