Continuous deployment (CD) in software engineering means that features are frequently released to the production environment, using automated testing. In practice, this means that a change to an application can go live within minutes if it passes the tests.
The acronym CD can also stand for continuous delivery which is a similar practice. It can create confusion because continuous delivery is sometimes used in a way that also covers the deployment processes. However, the most important distinction between the two approaches is that in continuous delivery, there is a manual step between testing and deploying while in continuous deployment, the same step is automated.
As for main advantages, continuous deployment:
- enables earlier return on investment from each developed feature;
- provides earlier user feedback to respond to the changing market conditions;
- ensures a continuous stream of improvements for better user experience;
- facilitates fixing errors since features are deployed in small batches;
- enables developers to rapidly validate new ideas and features.
The main disadvantage of this approach is its cost. Both the initial engineering and maintenance of a smoothly working deployment pipeline can be expensive. It depends on the business goals of a company if the advantages outweigh the disadvantages.