Typically, before an app can be built, the developers must decide whether it will run in virtual machines (VMs), the cloud, or in containers, for example. They also have to choose the operating system for the app and consider storage options.
“You make a bunch of infrastructure choices before you write software,” says Julian Dunn, product manager at Chef. “It’s kind of a bummer. Applications are the currency that differentiate companies. As a software developer, you want to get to that differentiating value.”
Chef’s new Habitat app-automation software is likened to a snail in its shell. Habitat lets the app live independently from the surrounding architecture, yet it’s modular and can easily be incorporated.
“Habitat lets you defer those infrastructure choices,” says Dunn. “It creates a package that’s self-contained. Then it allows a portable format that you can export when going to production.”
Each package of code, or “habitat,” contains the application code as well as its dependencies and the code necessary to communicate with other habitats.
Habitat packages can run unmodified across a wide variety of environments from bare metal, to VMs, to containers like Docker, grid systems like Mesosphere or Kubernetes, or platform-as-a-service (PaaS) systems like Pivotal CloudFoundry.
Habitat has some container management characteristics, “but a lot of those systems are orchestration-based,” says Dunn. “Habitat doesn’t have a central orchestrator or a thing that’s coordinating entities. The app itself has the ability to know what other components are doing.”
Habitat, which is being open-sourced, gives apps the intelligence to self-organize and self-configure.
Dunn points out that even existing applications can be wrapped in a Habitat package. “The major problem with older apps is the difficulty of managing them,” he says. “We’ve tested with enterprises, and if we wrap the management within legacy apps, we can manage them the same.”
When legacy applications are wrapped in a Habitat package, they become independent of the environment for which they were originally designed. They can quickly be moved to more modern environments such as the cloud and containers.
Whether greenfield or legacy, any application that is deployed using a Habitat package has the intelligence to be aware of and react to its environment.
Repackaging of code came up earlier this week when Canonical announced that some of its code has been used to create a universal snap for developers to more easily deploy their applications in any Linux environment.