The ideal state of a cloud native shop is to run a development and deployment pipeline that can seamlessly move applications from the developer’s laptop to the data center (or the edge) without any manual intervention. And while there are many tools available to facilitate such automation — Helm, Operators, CI/CD toolchains, GitOps architectures, Infrastructure-as-Code tools such as Terraform — all too often edge cases and exceptions still require personal attention, bringing DevOps pipelines to a halt.
The missing pieces of the puzzles are a control plane and a unified application model for the control plane to run upon, asserted Phil Prasek, a principal product manager at Upbound, in this latest episode of The New Stack Context podcast. Prasek envisions a time when organizations can build their own customized set of platform services, where developers can draw from a self-serve portal the building blocks they need — be they containerized applications or third-party cloud services, and have the resulting app run uniformly in multiple environments.
“Within an enterprise control plane, you can basically have your own abstractions, and then you can publish them,” Prasek said.
The need for control planes, such as Upbound’s own open source Crossplane, comes from organizations that want to build their own private Platforms-as-a-Service (PaaS), like a Heroku or Cloud Foundry, but they are opinionated towards their own specific requirements, Prasek explained. To the developer, the control plane management software provides a set of building blocks for building apps — a containerized database, a managed cloud storage service, and so on. The control plane knows all of the cloud APIs to call and the security and organizational policies for the containerized apps and cloud API calls can be baked into the platform itself.
An application model is needed to standardize an application’s configuration settings so they can be deployed in multiple environments. Last year, Microsoft and Alibaba teamed together to create one, the Open Application Model. An application model simply details all the different requirements that the application needs to run, including password pointers, configuration settings, hardware requirements, cluster settings if it’s a Kubernetes app, and so on.
While Kubernetes operators also offer a way to capture this information for automation, it doesn’t offer a clean separation between administrator and developer responsibilities, leaving the developer to suss out the network settings and the like, Prasek said.
Following the interview with Prasek, we discuss some of the podcasts and posts that appeared on The New Stack in the past week: