Continuous deployment

Last updated

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

Contents

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]

Principles

Diagram highlighting the difference in deployment processes between continuous delivery and continuous deployment Continuous Delivery Vs. Continuous Deployment.svg
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 [12] , which in turn increases customer satisfaction and provides companies with more marketing opportunities. [13]

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. [14] 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. [15] [13]

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. [13] [12]

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. [16] [17] [18] [19] Customers may also find software that is constantly changing creates a learning curve which can negatively affect their experience. [19]

Moving to continuous delivery is also a culture shift for developers who are accustomed to traditional release cycles, often requiring a proven DevOps process [20] . 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." [21]

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. [22] [23] [24]

See also

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. arXiv: 1703.07019 . Bibcode:2017arXiv170307019S. doi:10.1109/ACCESS.2017.2685629. S2CID   11638909.
  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. S2CID   15199568.
  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. S2CID   3479812.
  5. "Continuous Deployment: An Essential Guide". IBM. 2019-10-02. Retrieved 2022-11-28. 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?". Amazon Web Services, Inc. Retrieved 2025-10-03.
  8. "What Is Continuous Deployment? | IBM". www.ibm.com. 2024-08-28. Retrieved 2025-09-29.
  9. 1 2 Atlassian. "Continuous integration vs. delivery vs. deployment". Atlassian. Retrieved 2025-09-29.
  10. Parnin, Chris; Helms, Eric; Atlee, Chris; Boughton, Harley; Ghattas, Mark; Glover, Andy; Holman, James; Micco, John; Murphy, Brendan; Savor, Tony; Stumm, Michael; Whitaker, Shari; Williams, Laurie (2017). "The Top 10 Adages in Continuous Deployment". IEEE Software. 34 (3): 86–95. Bibcode:2017ISoft..34c..86P. doi:10.1109/MS.2017.86. ISSN   0740-7459.
  11. "What is Continuous Deployment?". GitHub. 2024-11-14. Retrieved 2025-09-29.
  12. 1 2 "What Is Continuous Deployment? | IBM". www.ibm.com. 2024-08-28. Retrieved 2025-09-29.
  13. 1 2 3 Rodríguez, Pilar; Haghighatkhah, Alireza; Lwakatare, Lucy Ellen; Teppola, Susanna; Suomalainen, Tanja; Eskeli, Juho; Karvonen, Teemu; Kuvaja, Pasi; Verner, June M.; Oivo, Markku (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.
  14. Rossel, Sander (2017). Continuous Integration, Delivery, and Deployment.
  15. 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.
  16. 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: 392–399. doi:10.1109/SEAA.2012.54. ISBN   978-0-7695-4790-9.
  17. 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". Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing. Association for Computing Machinery. pp. 1810–1817. doi:10.1145/3297280.3297458. hdl:10138/321583. ISBN   978-1-4503-5933-7.
  18. "What is Continuous Deployment?". GitHub. 2024-11-14. Retrieved 2025-09-29.
  19. 1 2 Rodríguez, Pilar; Haghighatkhah, Alireza; Lwakatare, Lucy Ellen; Teppola, Susanna; Suomalainen, Tanja; Eskeli, Juho; Karvonen, Teemu; Kuvaja, Pasi; Verner, June M.; Oivo, Markku (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.
  20. "What Are CI/CD And The CI/CD Pipeline? | IBM". www.ibm.com. 2024-09-24. Retrieved 2025-10-05.
  21. Marschall, Matthias (August 2007). "Transforming a Six Month Release Cycle to Continuous Flow". Agile 2007 (AGILE 2007): 395–400. doi:10.1109/AGILE.2007.64. ISBN   978-0-7695-2872-4.
  22. Vera-Rivera, F. H. (2018). "A development process of enterprise applications with microservices". Journal of Physics: Conference Series. 1126 (1) 012017. Bibcode:2018JPhCS1126a2017V. doi: 10.1088/1742-6596/1126/1/012017 . ISSN   1742-6596.
  23. Serlet, Bertrand (2019). "Data-centric Software Manifesto". Fungible. Archived from the original on 2019-10-14. Retrieved 2019-10-14.
  24. Butler, Brandon (2016-11-09). "What you should know about microservices". Computerworld. Retrieved 2019-10-14.