Continuous deployment essentially takes continuous delivery one step further. Like continuous delivery, continuous deployment aims to enable organizations to release changes to software systems quickly and reliably. It differs from continuous delivery in that it automates the deployment to production.
Continuous delivery ensures that the software application can be delivered to staging, along with the execution of rigorous tests, using automation. When done properly, the software application should be in a state that it can be deployed to production at any time. Continuous deployment merely automates the final step so that all changes are automatically deployed to the production environment.
When the organization, the business, and the nature of the software application allow for it, continuous deployment is an ideal DevOps goal in that it automates the process from beginning to end, and is the quickest way to move application changes into production.
However, in some cases, continuous deployment is not practical. There may be business reasons that an organization does not want to automatically deploy all changes to production. Some organizations prefer that the final step, the deployment to production, be a manual process. Software architects, along with other key decision makers within the organization, will have to decide whether continuous deployment is appropriate for the organization.