ABSTRACT

Cloud-native applications are designed for cloud. They comprise loosely coupled services that are designed for horizontal scaling and self-healing. Although modeling a cloud-native application is new, the concept of application modeling has long existed throughout computer science history. Cloud-native applications are often made of many distributed components. A cloud-native application model is quite simple: an application is made up of services sitting on a service mesh. A cloud-native application model should separate application developer concerns from operator concerns. A control plane takes an application model and optionally a group of associated operational models and settings, and deploys the application to the underlying infrastructure. The cloud-native application model should be an abstract model. When an application is deployed, it's bound to the underlying infrastructure through a binding process. An ideal cloud-native programming model should offer built-in support for state management, message-based integration, instance identity, flexible bindings to various event sources.