The DevOps engineer's handbook

Principles of Continuous Delivery

Continuous Delivery uses 5 simple principles to guide organizations on its adoption and help keep them focused in its use.

The 5 principles are:

  1. Build quality in
  2. Work in small batches
  3. Automate everything you can
  4. Always improve
  5. Everyone’s responsible

Let’s look at each Continuous Delivery principle and explore what it involves.

1: Build quality in

As with traditional manufacturing methods, software delivery usually places quality checks at the end of the production line.

When placed at the end, however, quality can become an afterthought. This means you might:

  • Not realize there’s a problem with your delivery processes or software until the end of a sprint
  • Waste time and effort on something that doesn’t work
  • Repeat mistakes without realizing it

Instead, you should build quality into your deployment pipeline. This means designing your deployment pipeline so it detects faults during all phases. Aim to shorten the time between a problem’s introduction and its discovery.

Once found, immediately update your processes or systems to catch the fault earlier in your pipeline or remove it completely.

2: Work in small batches

Organizations not using Continuous Delivery try to limit downtime by releasing updates together in huge batches.

While this feels like a sensible and safe option, it instead causes a lot of problems:

  • Developers must work against change windows and commit deadlines
  • A single broken update can prevent the other changes in its batch from going live
  • It’s harder to pinpoint which update breaks something
  • Rollbacks could be a long process if you can’t fix it quickly

In comparison, by working in smaller sprints and batches instead, you will:

  • Get faster feedback for your product and the effectiveness of your deployment pipeline
  • Reduce the risk of an update breaking something
  • Make rollbacks to a previous version much easier
  • Increase the predictability of releases and your confidence in them
  • Quicken each phase of your pipeline

3: Automate everything you can

Humans are not particularly great at performing repetitive tasks for a long time. People make mistakes. People get tired or bored. People get distracted.

Computers, however, are excellent at repetitive tasks and are capable of doing them as often as you need. And without coffee breaks! That’s why with Continuous Delivery, you should automate something if it’s possible to do so.

By automating, you free staff to work on things humans are great at, like problem solving, collaborating, and improving your processes.

If you’re about to start with Continuous Delivery, use established tooling to automate the following as soon as possible:

  • Code compiling, tests, and merging
  • Packaging
  • As much of your deployment process as possible

This will give you a great starting point to make gains elsewhere in improving your deployment pipeline.

4: Always improve

Though automation is an important part of improving your processes, it’s not the only thing you should focus on. Plus, tasks already automated will have room for improvement.

In particular, look for unnecessary steps or those that slow updates down as they move through your deployment pipeline.

For example:

  • Can you make an already automated process quicker?
  • Can you automate or speed up provision of infrastructure or environments?
  • If an approval step slows down your delivery, do you still need it? If so, can you automate the approval, either fully or partially?
  • If something in your pipeline fails and doesn’t affect your software delivery, do you still need it?
  • Is there tooling you haven’t considered that could improve or speed up your processes?

You should never stop asking these questions or striving to improve your deployment pipeline and its workflows.

5: Everyone’s responsible

Work culture is one of the most important things to address when it comes to adopting both DevOps and Continuous Delivery.

Continuous Delivery works best in what the Westrum Typology of Organizational Cultures calls a ‘generative’ culture.

To create a generative culture, you must encourage an environment where team members:

  • Cooperate often and reject silos
  • Share a common goal and responsibility for the product
  • Feel comfortable enough to take risks
  • Accept mistakes and failure as part of the process and do not play the blame game
  • Feel safe to speak honestly and freely

Summary

The 5 Continuous Delivery principles are vital guidelines for creating high-performing software development teams. If you’re looking to adopt DevOps or Continuous Delivery, you should hold these principles against every decision you make.

Now you know its principles, let’s look at how you can start using Continuous Delivery.

Categories:

Next article
Adopting CD