Deploying software in an automated way has become the norm now. Also, the emphasis is now more on greater collaboration between the development, testing and operations teams. It is imperative to be ready with shippable code at the end of each development iteration and also to be able to do one click or fully automated deployments.
The state of being ready with a shippable set of tasks at the end of each sprint or at the end of the development & testing cycle, is called Continuous Delivery.
The tasks may not be deployed immediately to production, but after all approvals they may be deployed on a scheduled date automatically with single or a few clicks (manual intervention).
Teams can wait for multiple features to be deployed together on a chosen date instead of deploying single tasks frequently.
The binaries to be deployed are usually stored in binary repositories like Nexus, Artifactory etc. On the day of release the automated deployment pipeline is triggered with a few clicks through the release orchestration tool to complete the deployment.
The automated way to deploy a task to production as soon as it passes all phases without manual intervention is continuous deployment. The release happens through an automated pipeline using release orchestration and configuration management software.
As soon as the tested & signed off code is merged into the main branch of the version control system, a pipeline is triggered to do the deployment on production servers with no manual interference. The teams need to be on standby to be able to monitor and get feedback at different stages of the pipeline.
In continuous deployment too, the binaries are stored in binary repositories as a part of the Continuous Integration pipeline is completed.
In both Continuous Delivery & Deployment the post production testing can be done automatically using test automation tools.
Tools for Continuous Delivery / Deployment
XLRelease, UrbanCode Deploy, Octopus Deploy, Ansible Tower etc.
Ansible, Terraform, Chef, Puppet, Salt etc.
Both continuous delivery and deployment are an extension of Continuous Integration (CI). Typically, at the end of CI stages CD is triggered. You can read more on continuous integration here.
In many organizations the deployment workflow is single or a few clicks deployment for all types of environments constituting as Continuous Delivery. However, some organizations have achieved high velocity of production releases by implementing fully automated release pipelines constituting as Continuous Deployment.