First look: Chef’s Habitat puts automation in the app

By packaging configuration and runtime requirements with the app, Habitat decouples automation from the infrastructure

Become An Insider

Sign up now and get FREE access to hundreds of Insider articles, guides, reviews, interviews, blogs, and other premium content. Learn more.

Deploying new software to production can be hard -- really hard. If you’re among the many businesses adopting new infrastructure and deployment technology today, you’re keenly aware of how difficult it can be. Even as you adopt modern devops tools to streamline development, test, deployment, and ongoing management, and to bring development and operations teams closer together, it often seems you're only creating new silos.

The fundamental problem is that all of the information critical to each application’s lifecycle -- build dependencies, runtime dependencies, configuration settings -- remain scattered across separate tools devoted to separate stages of the application lifecycle. An open source project called Habitat, from the people who brought us Chef, promises a better way, one that cuts across all of these silos. 

Habitat is a set of build and runtime tools that bring all of the information for configuring and running an application -- that is, all of the knowledge about how the application is supposed to behave -- into the application itself. Among other things, Habitat empowers developers to define configurations, lifecycle hooks, update strategies, clustering strategies, and service discovery for the applications they work on; all of this information travels with the application.

It’s an approach that effectively shifts what would normally be last-mile deployment problems to the beginning of the development lifecycle. It also decentralizes knowledge of how applications run. Applications essentially become self-aware, self-sustaining instances or communities of interdependent services, instead of blind followers of centralized sources of truth.

Habitat achieves this by providing a mechanism for defining application behavior, as well as providing a packaging strategy that runs the application along with a supervisor that coordinates that behavior. The supervisor process that is co-located with your service will join a ring of other supervisors and begin to gossip about the state of the services. Armed with the information you provided about how an application should behave at runtime, the supervisor can communicate the application’s needs to other supervisors and make changes to the running application based on new information coming in.

For example, if an application defined by Habitat relies on a database that is also deployed from a Habitat package, the supervisor of the application will gather information about the database from other supervisors and provide location details to the application when it comes online. 

To continue reading this article register now