We think about deployment as a “one plus four” phase process.
- DevOPS engineers model deployments in code over successive agile iterations
- For each iteration, Deployers execute and evaluate deploys that implement the four remaining phases of provisioning, configuration, orchestration and monitoring
People in the DevOPS engineer role carry out modeling by creating deployment descriptors and configuration scripts for the desired service. Modeling is basically a code development activity, and should be carried out in agile sprints, incrementally adding function with each iteration.
Modeling doesn’t need to be complete to move to the next phases, which are carried out by people in the Deploy role.
The first post-modeling phase is provisioning. The deployer invokes the Cloudamatic Mu tooling, which reads the deployment descriptor and creates resources on the target infrastructure, which is typically a Cloud Service Provider. Cloudamatic supports a wide range of provisioned resources — from the typical virtual machines and storage services to important ancillary services such as databases, scaling groups, load balancers, virtual networks, firewalls and more.
Once resources have been provisioned, the Mu tooling consults the deployment descriptor and invokes a configuration plug-in that interacts with the resource to install software and services, adjust parameters and generally bring the resource into the desired internal state. Cloudamatic’s configuration layer currently uses a Chef Enterprise plugin to carry out configuration, with more planned for future.
Configuration is necessary, but not sufficient for end-to-end automation. Resources need to be created in a way that considers dependencies, and adjusted in relation to each other so that, for example, only certain application resources can access a database resource. Orchesteration and dependency management is a native function of Cloudamatic and is embedded in the deployment descriptor.
Cloudamatic services continue to monitor orchestrated deployments, carrying out operations like log consolidation, and forwarding alerts based on deployer-defined conditions. Cloudamatic masters also can carry out patch operations, repairing very large numbers of resources in parallel when defects or vulnerabilities are detected.