Go with the Flow: Deployment Automation

Written by: Electric bee

9 min read

Wondering where to start with your DevOps journey? What to tackle first? How to get the biggest bang for your buck?

Start with deployments!

Deployment Automation is the linchpin of DevOps transformation. The past years' State of the DevOps reports have shown a pretty straightforward equation: Deployment frequency is THE indicator for success, and deployment pain is a predictor of failure. The reports consistently show that deployment automation predicts lower levels of deployment pain, higher IT performance, and lower change failure rates. These high performing IT organizations also have higher employee retention (since engineers are not walking out the door, being frustrated with deployment pain. ) Not only the State of the DevOps reports, but ALL analyst research confirms how critical deployments are, and our customers also testify how deployments are the most critical process on the Ops side - finally delivering new code to end users - that has the greatest impact on the business. The bottom line is simple: regardless of your organization's size, to accelerate your DevOps transformation you have to focus on deployments. To enable you to achieve this goal, CloudBees Flow boasts the industry’s most comprehensive set of native deployment automation capabilities. We simplify deployments, from the simplest scenarios - using built-in templates to get started quickly - all the way to push-button deployments of even your most complex, large scale use cases, with less for you to implement and maintain.

Let's review some of the key deployment automation features in CloudBees Flow:

1.SmartDeploy:

This feature allows you to reduce errors and risk of your deployments, and save time, by automatically detecting the artifacts that have been updated in the new version of the application, and deploying only those that have changed. SmartDeploy can be enabled or disabled at deployment time, giving you the flexibility to decide whether to only deploy artifacts with new versions, or deploying the entire application.

2.Snapshots:

Snapshots automatically capture versions of applications and deployments to ensure consistent and repeatable deployments across your environments. There are two types of snapshots:

  • Applications snapshots - a snapshot of the application model, and all its components, tiers and artifacts, is automatically captured with any update to the model. This ensures that you're always using the most recent version, to make sure there is no variability in the model of the application or related processes between deployments. This ensures consistency across environments, and also enables you to roll back to previous versions of the application, if needed.

  • Environment Snapshots - automatically capture how an application was deployed to a specific environment, including versions of each of the artifacts. Environment snapshots are used to maintain consistency across the pipeline and ensure that what was tested and approved in QA is exactly what is deployed to Production, including the artifacts that were deployed and the exact process used to deploy them.

3.Automated Rollback:

Issues during deployment can cause downtime and stress, but with automated rollback in CloudBees Flow, you can automatically get back to a safe state, minimizing any downtime or service interruption. Rollback steps are integrated natively in your deployment process, and can be automatically or manually triggered if any issue arises during deployment. The process can roll back the entire application, or can be specified at the component level. Component-level rollback gives you the flexibility to only roll back the parts of the application that failed - meaning faster rollback and saving you from the extra effort and cost required to re-deploy and test components that were already deployed successfully.

4.Rolling Deployments:

Mission-critical applications often cannot tolerate downtime. Advanced deployment patterns like rolling deployment eliminate downtime by gradually rolling out the changes across the environment in phases. The native feature for rolling deployment in CloudBees Flow allows you to quickly and easily take your application from deploying all at once, to a safer - no downtime – rolling deployment pattern, without requiring you to write or maintain any custom scripts. Various options can be configured to determine how the application is rolled out across your environment, with options to set custom rules to determine phases of the deployment. Check out my previous posts about advanced deployment options for a detailed overview of Rolling deployments , Blue/Green and Canary deployments .

5.Deploy anywhere: Cloud, on-premise, containers, hybrid environments.

CloudBees Flow allows you to model your application and then deploy it anywhere, whether static on-prem, in the cloud, or your container platform.

  • The Dynamic environments feature enable you to configure your cloud provider and configuration management options for your environment, to automatically provision and deploy to it with just one click. you can also enable automatic or manual tear down of these environments when they are no longer in use (for example, once a series of QA tests has been finalized).

  • Deploy you microservice applications easily with native support for modeling microservice container-based applications. You can quickly set the configurations for each service, and deploy it anywhere - using Docker itself, Kubernetes, AWS Container Cloud, Openshift, and more. Built-in integrations with all of container runtime platforms support seamless deployments, and the ability to take the same microservice model and independently deploy it or port between different environments.

6.Artifact Staging:

Reducing downtime and improving deployment efficiency is a key goal for application deployments. When artifact staging is enabled for an deployment in CloudBees Flow, the artifact versions are retrieved to the target servers before the deployment process is run. This ensures that all artifacts are available on the targets before deployment starts, and reduces downtime required for the process to run.

7.controller Components:

As you roll out automation across different applications in an organization, you don’t want to reinvent the wheel each time you model a new application. Disparate definitions for each application can make maintenance a nightmare, especially if you’re trying to push a change across all of applications in the organization. controller components allow you to centrally define and store standardized best practice building blocks, that can then be referenced across any number of applications across the organization. This simplifies making a change to the process across all applications by simply updating the shared controller component . This ensures compliance to any best practices across the org, and saves the time and effort of managing and updating hundreds of applications that use the same process. controller components can also be copied to a new application and used as a template to get started and make customizations to that copy.

8.Command Logs:

CloudBees Flow provides transparency into the processes that are being run, for ease of auditing and troubleshooting any issues. Easily access the details of every step in your deployment process, with visibility into the exact commands that were run on the server and the output that was generated, all accessible from the process run. When there is an error you can easily access the exact commands that were run in your process, including parameters and variables used, to quickly troubleshoot and remedy any issues in the process

9.Manual intervention in your deployment process:

Application deployment have the flexibility to support fully automated processes, and also to add manual steps anywhere in the process. This provides you with the ability to adapt to any use case. in the event manual intervention is required for some processes. In addition, for teams just getting started with automating the entire process, you can still create your application model and process and start with more manual steps and gradually automate them.

10.Environment Inventory and Drift Tracking:

Environment inventory provides visibility into what is currently deployed to each environment with granularity down to the artifact versions deployed to each individual target. This helps in troubleshooting, auditing, and planning. Ensure quality and consistency across environments and easily detect drift with comparison views that highlight any discrepancies between environments, and enable drill down to see differences in versions of processes and artifacts that were used in each environment.

11.Environment Reservation and Calendaring:

Environment reservations prevent conflicts and corruption in shared environments by restricting access to the applications and projects on the environment with a reservation. Environments can even be set to require a reservation for any deployment activity. Environment calendar views make managing the shared usage of environment easy by visualizing all usage and reservations on the environment in one central view. By using environment reservations, you have the confidence that your application deployment will not be interrupted or corrupted by any other activities on these resources. The calendar view allows you to to easily plan your activities and avoid conflicts.

12.Postp:

Postp provides real-time visibility into any activity in the pipeline (deployments, releases) by parsing and intelligently processing all tool output for alerting and reporting purposes. This live streaming data is extracted from log files using the standard output settings, regardless of the runtime location, and can be used to drive data-driven decisions about the pipeline process (eg, “stop the pipeline after 3 or more ‘error’ statements in the build,” or “or rollback a deployment upon viewing a specific error condition”).


Grow and Adapt

With this breadth of features, CloudBees Flow can support all of your deployment needs, with little effort from you. The model-based approach in CloudBees Flow separates the application definition, from where it is being deployed, enabling robust and repeatable deployments across your environments. The platform, essentially, provides you with adaptive release automation - enabling you the flexibility to grow and adapt- starting quickly and then enhancing your applications and DevOps processes, so you are not constrained to one way of doing things or to one particular technology or tool-set. Using best practices templates that are easily accessible in a Self Service Catalog allow you to get started quickly, easily extend and customize processes to fit your needs, and ensure consistency of processes and configurations across applications and teams, all while also ensuring compliance and security.

We're here to make your deployment boring!

We’ve set to revolutionize one of the most nail-biting parts of software releases- making your deployments repeatable and as push-button as possible. Now, you can eliminate release anxiety - taking the stress, guess work, and complex, one-off, scripting out of the equation. Try the Community edition to transform your deployment processes- for free.

Stay up-to-date with the latest insights

Sign up today for the CloudBees newsletter and get our latest and greatest how-to’s and developer insights, product updates and company news!