CICD All You Need To Know By IBM Cloud
Explained By IBM Cloud Engineer
CICD means continuous integration and continuous delivery. The final goal of CI (Continuous Integration) is to consistently establish the automation work of project building, packaging, and testing. Having CI as a core guideline in the development team will provide peace of mind for PM, Software Engineer Lead, and Quality Control Team. On the other hand, CD (Continuous Delivery) promises to automate the process of releasing software to any infrastructure environment with less time. CD will help align the work between the customer service and the development team. Furthermore, it will help to bootstrap the confidence level of SLA (Service Level Agreement) between your company and clients who use your software.
Continuous Integration is a development practice that just about everybody thinks they're doing but is widely misunderstood. Therefore, we will start to explain about bad old days before we had it. What's the problem it trying to solve? What's does this mean to us as software engineers and what's exactly CI (Continuous Integration) is all about.
Let's start with old school approach where a company that has about 10 to 20 developers. Alice and Bob working on their own features. They both working separately for a bit of time with inserting a new line of code and deleting some unnecessary code with the intention of merging code together and hopefully working properly against the codebase. In the case that they edit the same code file by Alice insert a new line of code and Bob delete the line of code. They will face the big issue here. Let's imagine all the other developers also working in the same file as well. This will lead to the "MERGE HELL" when you want to ship the code to the staging environment for quality control.
To avoid this problem, all developers need to frequently pull the latest update of the code and build tests to check for any possible conflict or error. If the problems occur, the team can immediately discuss and solve the issue before continue working on their own feature. In order to accomplish this, it requires a version control system (Git) that can track code changes made by all team members and unit tests to improve and enforce the correctness of project code.
The benefit of CI (continuous integration) is to avoid the merge hell and provide a testable build for every developer to cross-check. This will provide high-quality code to the team and avoid blaming each other. The goal of CI is to be able to pack and built projects ready to deploy to the server whenever you want.
Continuous Delivery is all about time spent to bring code to the production environment. There are a few steps or processes between each stage of releasing such as build, QA, or stage before it deploys to production. These valuable processes depend on each company's requirements and needs. When putting together all these processes we can call it a "Pipeline". The CD not only be able to apply for software development but also used with provisioning the infrastructure with tools such as Ansible, chef, or puppet.
The problem of continuous delivery trying to solve is to automatically deploy the valuable code changes to the production without broken any existing features and minimize the inconvenient experiences of the clients. There are few significant benefits of continuous delivery for an organization/company
- Having frequent production deployment with less risk and peace of mind
- Fast delivery new feature for clients
- Immediate bugs fixed without worry about bugs create other bugs