Continuous deployment

Short description: Software-engineering approach

Continuous deployment (CD) is a software engineering approach in which software functionalities are delivered frequently and through automated deployments.[1][2][3]

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.[4] As such, continuous deployment can be viewed as a more complete form of automation than continuous delivery.[5]

Continuous deployment has been adopted by software companies such as Meta, Microsoft, Atlassian, IBM, Adobe, and Tesla.[6]

## Contents

* 1 Principles
* 2 Motivation
* 2.1 Release speed
* 2.2 Faster bug detection
* 2.3 Customer experience and involvement
* 3 Challenges
* 4 Example
* 5 See also
* 6 References

## Principles

Diagram highlighting the difference in deployment processes between continuous delivery and continuous deployment

Continuous deployment extends the principles of continuous integration and delivery by including fully automated production deployment without the need for manual approval, instead relying on rigorous automated testing.[7] Reviews may still take place in the form developer-developer code reviews, but the need for intermediary reviewers such as a change-advisory board is minimized.[8]

Because code changes are deployed automatically, continuous deployment requires a much higher standard of automated testing, as test quality determines the reliability of releases.[9] Without this, the risk of introducing production failures outweighs the benefits of deployment automation.

In addition, continuous deployment emphasizes small incremental changes and dark launches through the use of feature toggles. Developers can deploy code into production months before a public release by gradually adding functionality in small chunks, verifying stability, and then enabling the feature for users when it is considered ready.[10][9]

## Motivation

### Release speed

Continuous deployment removes the need to wait for releases, as once a change passes internal testing it is automatically deployed to production.[11] This allows for shorter time-to-market and more frequent releases,[8] which in turn increases customer satisfaction and provides companies with more marketing opportunities.[12]

### Faster bug detection

A major motivation for continuous deployment is that deploying software into the field more often makes it easier to find, catch, and fix bugs.[13] Deploying small, incremental changes makes it easier to trace the origin of bugs, since issues will be isolated to a recent and relatively small code change.[14][12]

### Customer experience and involvement

Under this methodology, new software features can be released to customers more quickly and frequently after their development, accelerating the delivery of value to customers and enhancing customer satisfaction. Teams can begin to collect customer feedback almost immediately, driving rapid innovation of relevant features.[12][8]

## Challenges

Continuous delivery requires a significant investment in adequate test coverage, real-time monitoring, and strong continuous integration pipelines to prevent bugs from reaching production.[15][16][11][12] Customers may also find software that is constantly changing creates a learning curve which can negatively affect their experience.[12]

Moving to continuous delivery is also a culture shift for developers who are accustomed to traditional release cycles, often requiring a proven DevOps process.[17] Adopting this process requires collaboration among multiple stakeholders, including development teams, leadership, operations, and quality assurance. A 2007 study recorded one company manager's reaction to continuous delivery: "When the release team and I confronted the developers with our new process - releasing a story as soon as it is signed off - it scared the hell out of them."[18]

## 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.[19][20][21]

## 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

## References

1. ↑ Shahin, Mojtaba; Ali Babara, Muhammad; Zhu, Liming (2017). "Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices". IEEE Access 5: 3909–3943. doi:10.1109/ACCESS.2017.2685629. Bibcode: 2017arXiv170307019S.
2. ↑ Holmstrom Olsson, Helena; Alahyari, Hiva; Bosch, Jan (2012). "Climbing the "Stairway to Heaven" -- A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Software". 2012 38th Euromicro Conference on Software Engineering and Advanced Applications. IEEE Computer Society. pp. 392–399. doi:10.1109/SEAA.2012.54. ISBN 978-0-7695-4790-9.
3. ↑ Claps, Gerry Gerard; Berntsson Svenssonb, Richard; Aurum, Aybüke (2014). "On the journey to continuous deployment: Technical and social challenges along the way". Information and Software Technology 57: 21–31. doi:10.1016/j.infsof.2014.07.009.
4. ↑ Shahin, Mojtaba; Babar, Muhammad Ali; Zahedi, Mansooreh; Zhu, Liming (2017). "Beyond Continuous Delivery: An Empirical Investigation of Continuous Deployment Challenges". 2017 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). pp. 111–120. doi:10.1109/ESEM.2017.18. ISBN 978-1-5090-4039-1. https://pure.itu.dk/portal/da/publications/0c0a34a9-1711-4305-917e-9718338df017.
5. ↑ "Continuous Deployment: An Essential Guide". IBM. 2019-10-02. https://www.ibm.com/cloud/learn/continuous-deployment. "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."
6. ↑ Claps, Gerry Gerard; Berntsson Svenssonb, Richard; Aurum, Aybüke (2014). "On the journey to continuous deployment: Technical and social challenges along the way". Information and Software Technology 57: 21–31. doi:10.1016/j.infsof.2014.07.009.
7. ↑ "What is CD?" (in en-US). https://aws.amazon.com/devops/continuous-delivery/.
8. ↑ 8.0 8.1 8.2 "What Is Continuous Deployment? | IBM" (in en). 2024-08-28. https://www.ibm.com/think/topics/continuous-deployment.
9. ↑ 9.0 9.1 Atlassian. "Continuous integration vs. delivery vs. deployment" (in en). https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment.
10. ↑ Parnin, Chris; Helms, Eric; Atlee, Chris; Boughton, Harley; Ghattas, Mark; Glover, Andy; Holman, James; Micco, John et al. (2017). "The Top 10 Adages in Continuous Deployment". IEEE Software 34 (3): 86–95. doi:10.1109/MS.2017.86. ISSN 0740-7459. Bibcode: 2017ISoft..34c..86P.
11. ↑ 11.0 11.1 "What is Continuous Deployment?" (in en). 2024-11-14. https://github.com/resources/articles/devops/continuous-deployment.
12. ↑ 12.0 12.1 12.2 12.3 12.4 Rodríguez, Pilar; Haghighatkhah, Alireza; Lwakatare, Lucy Ellen; Teppola, Susanna; Suomalainen, Tanja; Eskeli, Juho; Karvonen, Teemu; Kuvaja, Pasi et al. (2017-01-01). "Continuous deployment of software intensive products and services: A systematic mapping study". Journal of Systems and Software 123: 263–291. doi:10.1016/j.jss.2015.12.015. ISSN 0164-1212. https://www.sciencedirect.com/science/article/pii/S0164121215002812.
13. ↑ Rossel, Sander (2017). Continuous Integration, Delivery, and Deployment.
14. ↑ Claps, Gerry Gerard; Berntsson Svensson, Richard; Aurum, Aybüke (2015-01-01). "On the journey to continuous deployment: Technical and social challenges along the way". Information and Software Technology 57: 21–31. doi:10.1016/j.infsof.2014.07.009. ISSN 0950-5849. https://www.sciencedirect.com/science/article/pii/S0950584914001694.
15. ↑ Olsson, Helena Holmström; Alahyari, Hiva; Bosch, Jan (September 2012). "Climbing the "Stairway to Heaven" -- A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Software". 2012 38th Euromicro Conference on Software Engineering and Advanced Applications. pp. 392–399. doi:10.1109/SEAA.2012.54. ISBN 978-0-7695-4790-9.
16. ↑ Mäkinen, Simo; Lehtonen, Timo; Kilamo, Terhi; Puonti, Mikko; Mikkonen, Tommi; Männistö, Tomi (2019-04-08). "Revisiting continuous deployment maturity: A two-year perspective" (in en). Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing. Association for Computing Machinery. pp. 1810–1817. doi:10.1145/3297280.3297458. ISBN 978-1-4503-5933-7. https://dl.acm.org/doi/10.1145/3297280.3297458.
17. ↑ "What Are CI/CD And The CI/CD Pipeline? | IBM" (in en). 2024-09-24. https://www.ibm.com/think/topics/ci-cd-pipeline.
18. ↑ Marschall, Matthias (August 2007). "Transforming a Six Month Release Cycle to Continuous Flow". Agile 2007 (Agile 2007). pp. 395–400. doi:10.1109/AGILE.2007.64. ISBN 978-0-7695-2872-4.
19. ↑ Vera-Rivera, F. H. (2018). "A development process of enterprise applications with microservices" (in en). Journal of Physics: Conference Series 1126 (1). doi:10.1088/1742-6596/1126/1/012017. ISSN 1742-6596. Bibcode: 2018JPhCS1126a2017V.
20. ↑ Serlet, Bertrand (2019). "Data-centric Software Manifesto" (in en-US). https://www.fungible.com/tech/data-centric-sw-manifesto/.
21. ↑ Butler, Brandon (2016-11-09). "What you should know about microservices" (in en). https://www.computerworld.com/article/3140198/what-you-should-know-about-microservices.html.

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Continuous deployment. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Continuous_deployment&oldid=4231314"