The distinction between continuous deployment vs. continuous delivery can be confusing because of the nomenclature. They are both abbreviated as CD and have very similar responsibilities. Delivery is the precursor to deployment. In delivery, there is a final manual approval step before the production release.
The following is a mnemonic exercise to help remember the distinction between the two. Think about receiving a package from your favorite online retail store. When waiting for a package to arrive you coordinate with a delivery service. This is the delivery phase. Once the package has successfully arrived, you open the package and review its contents to make sure it matches your expectations. If it does not, it may be rejected and returned. If the package is correct you are ready to “deploy” and use the new purchase!
In the delivery phase, developers will review and merge code changes that are then packaged into an artifact. This package is then moved to a production environment where it awaits approval to be opened for deployment. In the deployment phase, the package is opened and reviewed with a system of automated checks. If the checks fail the package is rejected.
When the checks pass the package is automatically deployed to production. Continuous deployment is the full end-to-end, automated software deployment pipeline.