Continuous Integration, Continuous Delivery, and Continuous Deployment
Last month, Stackify put out an article comparing continuous integration, continuous delivery, and continuous deployment based on responses from 20 Dev leaders.
Most responses were pretty similar - and it looks like we mostly agree. As I know many people I'm connected with here on LinkedIN have good perspective on the subject of CI/CD/CD, I wanted to share my response here to encourage you to share your thoughts.
What is continuous integration, continuous delivery and continuous deployment?
Continuous Integration (CI) is a software engineering practice in which developers integrate code into a shared repository several times a day in order to obtain rapid feedback of the feasibility of that code. CI enables automated build and testing so that teams can rapidly work on a single project together.
Continuous delivery (CD) is a software engineering practice in which teams develop, build, test, and release software in short cycles. It depends on automation at every stage so that cycles can be both quick and reliable.
Continuous Deployment is the process by which qualified changes in software code or architecture are deployed to production as soon as they are ready and without human intervention.
How do they work together?
In essence, continuous integration is the beginning of the cycle where builds are created and tested. Continuous delivery encompasses the cycle from the beginning of CI and ends with the “release” of the verified artifacts – packages, VM or container images – published onto a download server. Continuous deployment ensures that qualified releases are automatically deployed to production – taken from the download servers and made the currently running version in one or more environments/locations, typically also using rolling upgrades in order to ensure that applications remain available to users during the process.
How can developers best utilize these methods?
In the most efficient situations, the CI/CD pipeline is a fully automated (and sometimes autonomous) toolchain that ends in running software. This allows developers to focus on writing code and not on the minutia of build/test/deploy. Essentially, CI/CD provides developers a reliable path to deliver their technology to users. Developers, and mostly DevOps teams, can benefit from tools that help them automate this pipeline to a point of autonomy so that any situation brought to the table (update, upgrade, downgrade, teardown, errors, rollback, etc.) can automatically be handled by the system without a team having to manage or script out the change.
Thanks , Very precise summary !