Referring to Microsoft's original announcement post of OAM, (<a href="https://cloudblogs.microsoft.com/opensource/2019/10/16/announcing-open-application-model/" rel="nofollow">https://cloudblogs.microsoft.com/opensource/2019/10/16/annou...</a>), the problem of defining application workflows and their dependencies that OAM is addressing is genuine. We have also faced this problem as part of providing Kubernetes-native platform stacks to our customers.<p>It will be interesting to see how OAM evolves, especially since it is coming from the same team that is leading the charge on Helm and CNAB (<a href="https://cloudblogs.microsoft.com/opensource/2018/12/04/announcing-cnab-cloud-agnostic-format-packaging-running-distributed-applications/" rel="nofollow">https://cloudblogs.microsoft.com/opensource/2018/12/04/annou...</a>).<p>Here is what we have learnt about this space in the last one and a half years.<p>Application portability -
While the point about application portability is true, if an organization has decided to adopt Kubernetes, the portability requirement is solved by Kubernetes itself to a large extent. If your application platform workflows are built as Kubernetes YAMLs, then they can be run on any cluster. Kubernetes YAMLs of built-in resources (Pod, Secret, etc.) and Custom Resources (MySQL, Postgres, etc.) can be leveraged to create such Kubernetes-native platform workflows. Our learning has been that a solution that focuses on solving the platform workflows problem on Kubernetes needs to augment existing Kubernetes tools such as Helm, Kustomize, etc. We have been developing such a tool (<a href="https://github.com/cloud-ark/kubeplus" rel="nofollow">https://github.com/cloud-ark/kubeplus</a>). Check out this blog post which provides detailed comparison between existing tools. <a href="https://medium.com/@cloudark/discovery-and-binding-of-kubernetes-custom-resources-in-multi-operator-environments-b5acf88fa639" rel="nofollow">https://medium.com/@cloudark/discovery-and-binding-of-kubern...</a><p>On separation of concern between Devs & Ops -
Again with adoption of Kubernetes, our observation has been that Kubernetes YAML and the tooling around it such as Helm is becoming a common language of communication between Devs & Ops. In our view the goal for anyone developing new tools/frameworks in this space should be to help break the barriers that have existed between Dev and Ops teams further. One way we are trying to do this is by extending the vocabulary of ‘as-Code’ systems from the Infrastructure world to the ‘platform’ world of application development teams.
Check out some of our work in this space primarily focusing on Kubernetes Custom Resources here - <a href="https://cloudark.io/platform-as-code" rel="nofollow">https://cloudark.io/platform-as-code</a>