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:
- The basic development process
- Development through multiple environments
- Developing the Full Stack
- 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.
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.
The development process
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
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.
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.
- Development
- Agile
- Continuous Deployment Pipeline
- 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 :)