Cloudify provides an application orchestration service with built-in monitoring and logging for deploying multi-tier applications through a single command. Built with a pluggable architecture, Cloudify enables you to plug-in any tool chain making it possible for you to extend your application management through the full lifecycle, including post-deployment - with healing, scale-out and scale-in as needed, as well as the ability to define custom policies. Cloudify also provides real-time metrics about your deployment. Cloudify has out of the box integrations with leading open source tools - from Puppet to Chef and Ansible, and many more, and you can easily write a plugin if it doesn't exist yet.
Integrating with CM Tooling
Configuration management tools are mature and utilized by many organizations for rapid provisioning and deployment of applications at scale. However, CM tools still require a lot of manual processes such as VM provisioning in pre-deployment, monitoring, healing, and scaling. Moreover, CM tools hardwire many of the components without intelligent observation of the application topology. This is where Cloudify comes in to orchestrate and manage the entire lifecycle of your application.
The Orchestration Process
The basic flow of how Cloudify orchestration works with Ansible or Puppet or Chef is as follows:
Step 1: Prepare and upload your blueprint
Cloudify provisions the server, creates the VMs, and installs the agents
Step 2: Install your Application
Integrate with Chef, Puppet, Ansible, Docker, SaltStack to install the various application services
Step 3: Manage Your Application
Add monitoring, logging, alerts, execute workflow for updates, patches, etc.
Step 4: Add Auto-Healing, Auto-Scaling
Continuously detect and correct failure, add more capacity
Install Server and Agent
Cloudify takes the application topology as input and will provision a machine based on this specific application topology. Cloudify will allow you to install a CM client per machine. It will also provision a server or simply link all the services to an existing server. Once the environment is set, it will allow you to invoke remote commands directly from the Cloudify management console, enabling you to easily install new modules/cookbooks, or manage your deployment, as needed.
Support Existing CM Recipes/Agents
Many configuration management users already have invested in creating agents/recipes and configuration. Cloudify was designed to be set as a service on top of your existing environment, and therefore it will allow you to leverage your existing investment rather than forcing you to reconfigure the entire system.
Application Lifecycle Management
Deploying multi-tier applications includes multiple services such as web containers and databases that are interdependent. Cloudify will allow you to make sure that these services will start in the right order. It includes specific hooks to monitor the lifecycle of each application and inject the reference for each dependent service. In the example below, it will inject the reference to the database to each web container and it will inject each reference of the web container into the load balancer service.
Post Deployment Features
Monitoring and Logging
One of the challenges in any deployment is to keep the configuration management and monitoring systems in sync.
Cloudify glues the two together by providing built-in monitoring that is automatically updated as part of the deployment process. In addition, Cloudify’s monitoring fills a void that other monitoring systems don’t cover well, as they were designed to monitor applications only after they have been deployed, while the monitoring of the deployment and setup process is also needed. Cloudify also provides built-in logging and alerting, as well as custom metrics to measure specific key performance indicators of each of the managed services.
One of the key features for DevOps users is to be able to interact with their existing deployed services and push new updates. Cloudify adds a remote execution command that allows you invoke remote shell and CM tool commands as part of a DevOps deployment process. The remote execution feature will allow you to simply set the invocation on a specific instance or for all of the the instances of a particular service.
Cloudify was designed to work with multiple private or public cloud environments, as well as a traditional data center. Chef, Puppet, and Ansible users (as well as other CM users) can use Cloudify to take advantage of this feature to abstract their application from the underlying environment, and in this way, use the same set of cookbooks/modules and Cloudify services across different clouds without any changes.
Cloudify comes with an orchestration service that allows you to automate complex processes by interacting with the individual services and executing the right command.
It comes with a set of built-in processes for handling: