Continuous deployment
{{Short description|A software engineering approach}}
Continuous deployment (CD) is a software engineering approach in which software functionalities are delivered frequently and through automated deployments.{{cite journal |title=Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices |first1=Mojtaba |last1=Shahin |first2=Muhammad |last2=Ali Babara |first3=Liming |last3=Zhu |journal=IEEE Access |volume=5 |doi=10.1109/ACCESS.2017.2685629 |year=2017 |pages=3909–3943 |arxiv=1703.07019 |bibcode=2017arXiv170307019S |s2cid=11638909 }}{{cite book |first1=Helena |last1=Holmstrom Olsson |first2=Hiva |last2=Alahyari |first3=Jan |last3=Bosch |title=2012 38th Euromicro Conference on Software Engineering and Advanced Applications |chapter=Climbing the "Stairway to Heaven" -- A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Software |pages=392–399 |year=2012 |isbn=978-0-7695-4790-9 |doi=10.1109/SEAA.2012.54 | publisher=IEEE Computer Society |s2cid=15199568 }}{{cite journal |title=On the journey to continuous deployment: Technical and social challenges along the way |first1=Gerry Gerard |last1=Claps |first2=Richard |last2=Berntsson Svenssonb |first3=Aybüke |last3=Aurum |journal=Information and Software Technology |volume=57 |pages=21–31 |year=2014|doi=10.1016/j.infsof.2014.07.009 }}
Continuous deployment contrasts with continuous delivery (also abbreviated CD), a similar approach in which software functionalities are also frequently delivered and deemed to be potentially capable of being deployed, but are actually not deployed.{{cite book |doi=10.1109/ESEM.2017.18 |chapter=Beyond Continuous Delivery: An Empirical Investigation of Continuous Deployment Challenges |title=2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM) |pages=111–120 |year=2017 |last1=Shahin |first1=Mojtaba |last2=Babar |first2=Muhammad Ali |last3=Zahedi |first3=Mansooreh |last4=Zhu |first4=Liming |isbn=978-1-5090-4039-1 |s2cid=3479812 |url=https://pure.itu.dk/portal/da/publications/0c0a34a9-1711-4305-917e-9718338df017 }} As such, continuous deployment can be viewed as a more complete form of automation than continuous delivery.{{cite web |url=https://www.ibm.com/cloud/learn/continuous-deployment |title=Continuous Deployment: An Essential Guide |author= |date=2019-10-02 |publisher=IBM |access-date=2022-11-28 |quote=Continuous deployment is the natural outcome of continuous delivery done well. Eventually, the manual approval delivers little or no value and is merely slowly things down. At that point, it is done away with and continuous delivery becomes continuous deployment.}}
Motivation
A major motivation for continuous deployment is that deploying software into the field more often makes it easier to find, catch, and fix bugs. A bug is easier to fix when it comes from code deployed five minutes ago instead of five days ago.{{cite book|last=Rossel|first=Sander|date=2017|title=Continuous Integration, Delivery, and Deployment}}
Example
In an environment in which data-centric microservices provide the functionality, and where the microservices can have multiple instances, continuous deployment consists of instantiating the new version of a microservice and retiring the old version once it has drained all the requests in flight.{{Cite journal|last=Vera-Rivera|first=F. H.|date=2018|title=A development process of enterprise applications with microservices|journal=Journal of Physics: Conference Series|language=en|volume=1126|issue=1|pages=012017|doi=10.1088/1742-6596/1126/1/012017|issn=1742-6596|bibcode=2018JPhCS1126a2017V|doi-access=free}}{{Cite web|url=https://www.fungible.com/tech/data-centric-sw-manifesto/|title=Data-centric Software Manifesto|last=Serlet|first=Bertrand|date=2019|website=Fungible|language=en-US|url-status=live|archive-url=https://web.archive.org/web/20191014223853/https://www.fungible.com/tech/data-centric-sw-manifesto/ |archive-date=2019-10-14 |access-date=2019-10-14}}{{Cite web|url=https://www.computerworld.com/article/3140198/what-you-should-know-about-microservices.html|title=What you should know about microservices|last=Butler|first=Brandon|date=2016-11-09|website=Computerworld|language=en|access-date=2019-10-14}}
See also
- CI/CD, the combined practices of either (more often) continuous integration and continuous delivery, or (less often) continuous integration and continuous deployment
- Canary release
- Blue–green deployment