Continuous Deployment & the Development Proces

— In search of an Open Source Continuous Deployment Pipeline

Is there one Continues Deployment tool that is best for everybody? In our company we have various teams that differ in level, type of technology and development process. Can we share one tool? This is a step in journey to a nice Continuous Deployment tool.

Development

This blog will set the context of Continuous Deployment in the (software) Development process, since with CD you automate many of the steps in the development process. This is applicable to product development as to software development I prefer to set common ground before we go into the nitty-gritty details of a Continuous Deployment Pipeline. The following subjects will be addressed:

  1. The basic development process
  2. Development through multiple environments
  3. Developing the Full Stack
  4. The Development Pipeline

The basic development process

Design & Build software is hard work. The Software Development process is pretty stable the last 30 years.

Every organisation is using different words for the same steps. Below the three most common abstract Software Development processes I have seen in 20+ projects. It is also good to know that the steps for Software Development are (almost) the same as the steps for product development or even for business development.

Continuous Delivery — software-process

Development through multiple environments
Some organizations do fixes on their software directly in the live production systems. These actions give me the chills, because god only know what the effect of a small change can be. It is to bad that not every organization is using various environments
Direct changes in production should be a faux pas : best practice is to use various environments.

An IT team should be able to create an environment of the types: Development, Test, Acceptance or Production (DTAP) automated from scratch when they want to use Continuous Deployment. Maybe this is preliminary to working in an Agile way, as is having a DTAP setup is mandatory for good development.

Update 2017–08–07

During the CD Amsterdam meetup I had various conversations on environments. The majority stated that more and more companies are moving away from the DTAP setup and are using a variation on the Staging & Production setup. Tutorials start with describing how to configure the Staging and production fases and then it is up to you to select the most suitable pattern.

https://continuousdelivery.com/implementing/patterns/

The development process

Continuous Deployment — OTAP

Developing the Full Stack
Part of the Agile organization is that teams are responsible for the full stack that delivers the added value of the Minimum Viable Product (MVP). And naturally there are a few different definitions of what the Full Stack is for which a full stack developer is responsible.

We will be using the following Stack definition based on the OSI Model and on the layers of virtualization model.

The full stack

Continuous Deployment — full stack

The Development Pipeline

A pipeline is a conduit made from pipes connected end-to-end. — https://en.wikipedia.org/wiki/Pipeline

When you combine the “basic development process” steps with the “development through multiple environments” you get the following Pipeline.

Continuous Deployment — default-pipeline

Blog Series on an Open Source CD Pipeline

This pipeline architecture will be the basis of our Continuous Deployment Pipeline in this blog series that will consists out of the following.

  1. Development
  2. Agile
  3. Continuous Deployment Pipeline
  4. Continuous Deployment in the wild

From CI to CD to CD

In the beginning I was talking about the Continuous Delivery in stead of Continuous Deployment. Then I was pointed to this :)

https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff