The traditional Software Development Life Cycle (SDLC) model goes something like this:
- Deployment and maintenance
The SDLC model has been used for years and it has served the industry well. However, with the advent and widespread usage of containerized applications, the old model doesn’t really work all that well. Why? Speed. One of the main benefits of containerized applications is the speed at which they can be created and deployed.
Even better, especially for enterprise-level businesses, is the fact that containerized applications and services can be almost completely automated from deployment, to scaling, to updating. Those two aspects (speed and automation) really don’t allow for a traditional life cycle model.
And that’s where CI/CD comes into play. What is CI/CD? Continuous Integration/Continuous Delivery. This article is also available as a download, What is CI/CD? (free PDF).
SEE: Hiring kit: Database administrator (TechRepublic Premium)
What is a pipeline?
Before we talk about CI or CD, it’s best to first understand what a pipeline is. Effectively, a pipeline is a group of events or jobs that are connected together in a sequence. But it’s a bit more complicated than that because each sequence (or stage) is dependent upon the output of the previous stage. So:
Stage 1 > Output > Stage 2 > Output > Stage 3 > Output
If the output of any stage fails, the next stage will also fail. The CI/CD pipeline is all about automation: Initiating code builds, automated testing, and automated deploying to the staging or production environments. It’s a complex, but incredibly fast pipeline.
What is Continuous Integration (CI)?
Continuous Integration is the process that allows developers to integrate new code into a shared repository (such as GitHub) throughout the day. That continuous submission of commits enables the system as a whole (typically by means of automation) to detect any integration bugs at the initial stage of committing so issues can be resolved immediately.
Once new code is merged with the existing repository, a new build is triggered. Once the build completes, test runs are then automatically performed against the build to ensure nothing has broken. This integration of code happens continuously (hence the C in CI).
What is Continuous Delivery (CD)?
Continuous Delivery (CD) occurs at the end of the CI cycle and is responsible for the automated delivery of the integrated code from the development to the production stage. CD is not only tasked with the automated delivery of the integrated code, but ensuring the delivered code is without bugs or delays.
Continuous Delivery helps developers merge the new code into the main branch with a high level of consistency. The CD portion of the cycle is also responsible for testing the quality of the code and performing checks to make sure a functional build can be released into the production environment.
The stages of CI/CD
The development cycle of CI/CD is shorter than the traditional model. The stages are:
Not only are there fewer stages to this lifecycle, it runs continuously. So as developers commit to the repository throughout the day, the next steps are automatically taken. Thanks to automation tools like Jenkins, the cycle moves from stage to stage continuously.
Pros and cons of CI/CD
Clearly you’re going to have advantages and disadvantages with this dev cycle. Some of the advantages are:
- Speed of deployment
- Faster testing and analysis
- Smaller code changes
- Better and faster fault isolation
- Increased code coverage
- Automatic deploy to production
- Never ship broken code
- Process is repeatable
- Faster mean time to resolution
- Smaller backlog
- Improved customer satisfaction
- Tons of open source tools available
The disadvantages of CI/CD are:
- New skill sets must be learned
- Steep learning curve to implement automation
- Big upfront investment
- Legacy systems rarely support CI/CD
- High degree of discipline and dedication to quality
Is CI/CD right for your business?
This is a complicated question to ask, and it’s one that will require significant planning. But if you’re looking to speed up your development life cycle, and deliver a more consistent product, then Continuous Integration/Continuous Delivery might be ideal for your company.