Image source: https://blog.chef.io/
Application Automation is becoming increasingly important in today's complicated and diverse IT landscape. Building and running applications can be a difficult and frustrating experience; software is often tied to specific runtimes and environments, taking Java and Ruby as a couple of examples, as well requiring different packages for different operating systems.
With this in mind, life would be so much easier if automation could focus on the application itself, rather than the infrastructure or container, and this is a problem that CHEF's Habitat software aims to solve.
Working to make developers' life easier
The technology is designed to create a set of instructions that can deploy any application - including legacy applications - in whatever environment happens to be the target at the time, from traditional datacentres right through to virtual machines and containers. This is achieved by transforming applications into what are commonly referred to as 'modern applications'.
All code - both application and automation - is stored within a source code repository. This is then packaged to build an artifact, which is in turn sent to an artifact repository. DevOps users can then access the repository to download and deploy artifacts, whatever the given runtime environment, without the need to change or re-code it.
Less time and effort to set up applications
These capabilities mean that Habitat by CHEF can greatly reduce the time and effort required when setting up applications. The Supervisor, the facility that handles running artifacts natively across various infrastructures and platforms, acts as a process manager - it will start and monitor the software, as well as automatically receiving and implementing configuration changes.
Multiple Supervisors can be combined into a Supervisor Ring and, if one goes down, the remaining components will automatically self-organise and re-converge themselves. This shows that the expectation of unforeseen failures, and the ability to deal with these effectively, is built into the technology itself.
The system can also be configured to deploy packages according to an update strategy, which will ensure that all the Supervisors are updated at the same time.
Getting applications to run without problems
Although containers can be an effective method of getting applications to run anywhere, in practice the process can still experience a multitude of issues. Moving containers from development to full production can often be fraught with problems.
Habitat is able to circumvent many of these by reversing the process - instead of starting with the operating system and building up from there, the application now becomes the primary starting point. From there, the relevant libraries are brought in, and only at the end is a basic, bare minimum operating system added.
The application will declare and resolve only the dependencies that it needs, rather than having to pre-emptively add these to the container earlier in the process. An API always remains exposed too, so that outside services can easily interact with the app.
All in all, when used in conjunction with CHEF it's a great way of simplifying the whole process - allowing applications to run exactly where and when you want them to.