BARCELONA, Spain—Microsoft and Docker Inc. jointly announced a new specification effort at DockerCon Europe 2018 here on Dec. 5 called Cloud Native Application Bundles (CNAB) that looks to make it easier for developers and organizations to deploy complete applications with a simplified packaging system.
CNAB currently provides an initial early-stage specification for packaging distributed apps. The goal of the specification, according to Microsoft and Docker, is to facilitate the bundling, installing and managing of container native apps and their coupled services.
"We asked … what if we could make installing cloud-native applications as easy to install as it is to install a desktop app?" Matt Butcher, principal software development engineer at Microsoft, said during a DockerCon keynote. "We are releasing the specification for cloud-native applications bundles, and it's a really important first step."
There are multiple ways that container and microservices applications are packaged and distributed today, including dockerfiles, Docker Compose and Helm charts, among other options. CNAB aims to answer a different challenge than existing packaging systems.
"This [CNAB] is a valuable way to describe a distributed application that has a number of resources with it, and it could be containers or serverless objects, it could be deployed in the cloud, on the edge or on-premises," Scott Johnston, chief product officer at Docker, told eWEEK. "With CNAB, operators get an immutable bundle that makes it easier to deploy applications."
Johnston explained that today Docker sees organizations copying and pasting Docker Compose files to get applications bundled. He noted that with Compose, organizations are often hard-wiring the resources required for a particular environment. With CNAB that complexity can be removed, providing an operator with a single application bundle that can be used for multiple scenarios.
Docker is already a backer of the Open Container Initiative's (OCI) app image format specification. Johnston said that CNAB makes use of OCI images, as well as Docker Compose files and Helm charts.
"Those artifacts are still usable and useful in this context," Johnston said. "Docker images are single container application images, whereas what we're trying to solve with CNAB is distributed multiservice types of applications."
In the Kubernetes space, the open-source Helm project and the associated Helm charts have become a standard way to define application deployment for Kubernetes. Gabe Monroy, lead project manager for Azure Cloud Native Compute at Microsoft, told eWEEK that the same team that built Helm participated in the development of CNAB.
"There were a lot of lessons that have been learned through the Helm experience that were applied to this effort," Monroy said.
One example of a lesson learned from Helm is the way that CNAB handles parameterization. Monroy said that with Docker Compose files, developers could choose to have different parameters to specify values for different environments.
"The problem that we saw with that was there was no schema associated with that parameterization, and there are no guarantees that we can validate," Monroy said. "In the CNAB specification, there is first-class support for schema based on parameters, so we get the benefits of parameterization with strong guarantees that the data will be good."
Monroy added that while Helm works well for Kubernetes, the world of software development is larger than just Kubernetes and containers.
"What we were hoping to do here was sort of take the magic of the container packaging, distribution and security model, but apply it to the diversity of resources that enterprises have to manage today," Monroy said.
Sean Michael Kerner is a senior editor at eWEEK and InternetNews.com. Follow him on Twitter @TechJournalist.