Engineering Improvement Runbook | Continuous Deployment

Photograph of Michael Knighten

Michael Knighten

August 24th, 2020

Set Up Your Deployment Pipeline Like a Rockstar!

Set Up Your Deployment Pipeline Like a Rockstar!

Nowadays, software development teams utilize continuous delivery or some variation, to create better, faster, more accurate software releases. Continuous delivery is a DevOps practice that empowers software teams to continuously ship code directly to an environment once automated tests pass.

Continuous delivery is facilitated through the deployment pipeline. You can read more about it in a previous post.

The deployment pipeline is a concept built to deploy applications faster and shorten the life cycle of a software release. It's used to provide a rapid, automated, and reproducible deployment artifact that allows new code to be automatically deployed to production through multiple stages of automated testing.

Today, we're going to share how you can set up your first deployment pipeline. But first, let's take a deeper look at what the software deployment pipeline is, the benefits of using one, and the ultimate key to success so that you can execute yours like a rockstar!

What is a software deployment pipeline?

The deployment pipeline is a set of automated processes that allow the DevOps team to build and deploy code reliably and efficiently. While there is no definitive rule that states what the pipeline should look like, the following diagram from ContinuousDelivery.com is a good example of one possible way you might organize your deployment pipeline.



Again, the goal of a software delivery pipeline is to automate as much of the release process as possible and eliminate manual steps. This reduces the risk of human error that can occur when teams try manual code analysis and review, and it cuts down on the feedback loop as errors are minimized and issues are caught much faster.

The Benefits of a Deployment Pipeline

Aside from reducing the chance of human error with manual testing and minimizing the feedback loop, the continuous delivery pipeline provides three critical benefits to the DevOps team:

1. Visibility

The first is visibility. Every phase of delivery--the build, deployment, testing, and release--are all visible to team members, promoting greater collaboration, the faster discovery of issues, and quicker problem solving of those issues. To facilitate this visibility you need deployment tracking. Sleuth's deployment tracking software helps every developer to know what’s changing, the impact of their changes, and reduces barriers to delivery so they can ship code faster.

2. Feedback

The second benefit is feedback. Because of the added visibility available in a deployment pipeline, teams can better track the impact that their code changes are having on the application. Understanding, in real-time, if a change you’ve made has increased the error rate or response time means that the developer who made the change can fix the negative impact immediately, rather than letting that become the new normal. Ultimately, this results in faster, more accurate delivery and improves the software for end-users.

3. Continuous Deployment

Through the ability to automate testing, software teams can rapidly and continuously deploy new software releases into the production environment. Essentially, the deployment pipeline combines and automates configuration management, continuous integration, testing, and deployment in a holistic way that enables teams to be more organized and efficient. In turn, users see improved software quality, and reduction of cost and time required to keep software stable and optimal.

The Stages of the CI/CD Pipeline

Going back to the diagram shared above, let's take a deeper look at the typical stages of a deployment pipeline:

Commit Stage

In this initial stage, also called version control, software developers are working on their code and will commit their changes into their code control method of choice (e.g. GitHub, GitLab, or Bitbucket).

Acceptance Stage

Once generated, the committed code is automatically pushed to the acceptance stage. From here, basic smoke tests are run to make sure that the code is functional, followed by acceptance tests (or exploratory tests) that check to make sure all changes are in line with the predetermined acceptance criteria.

Integration Testing

Integration tests check to make sure that there are no integration errors in the codebase and that it is in stable condition. Capacity Testing Capacity testing comprises multiple sub-tests including performance, security, and load checks.

Staging

Following testing, the code changes are then moved to a staging environment for review and consumption from the testing and internal teams.

Production

Once all unit tests in the deployment process have been run, acceptance criteria are met, and no other issues exist, the new features are ready to enter production and available to end-users.

The Key to a Successful Deployment Pipeline

If you’re using a deployment pipeline, Sleuth can help by removing the snags that come with moving code from creation through to deployment.

Sleuth's deployment tracking software delivers real-time notifications via Slack and email to facilitate better collaboration and feedback among your software team. When code deploys, users will be notified immediately and individual users will be notified when their commits are involved in a deployment.

Our dashboards and notifications track the impact of your code on users and give detailed health scoring immediately upon release. Additionally, Sleuth compares the health of both new and prior releases to identify any potential red flags so that you can correct issues before they cause downtime and other performance issues.

Furthermore, Sleuth was designed for agile teams and is geared to keep code moving across production, staging, infrastructure, and more. Best of all? You can try Sleuth for free for 30 days!

Get your free trial started.

Related Content