In Softwware Development, Continuous Delivery can be defined as the capacity to modify quickly and safely the software including new features, configuration changes, bug-fixes and others, being able to continuosly adjust the software, realize new versions, correct issues and be fast in deploy new features.
In order to reach that goal, we need to start from how the software has been developed: the application of Agile Development as methodology is the easiest way to be able to build a continuous delivery framework.
Continuous delivery is not usually a goal, it is more a methodology that must be adopted by the organization. And more importantly that tools, frameworks, middleware is the mental approach to the software development cycle.
Continuous delivery (CD) is a software engineering approach in which teams develop software in short cycles in order to be sure that the software can be reliably released at any time.
The general goal is to build, develop, manage, modify and deliver software faster and more frequently. The main advantage is to reduce cost, time and to lower the risk of delivery changes.
A straightforward and repeatable deployment process is important for continuous delivery.
Continuous delivery can be defined as a deployment flow pipeline: the software development is organized by milestones each of them caracterized by validations and checks and the software must pass each of them in order to be ready to release.
A key element is a source control repository where all the software code is stored and shared among the team. Every time the repository is updated, then the software is tested and released. Any code can be released in any moment, therefore developers need to change their approach in developing software.
Continuous delivery is actually realized using a deployment pipeline. It has three components: visibility, feedback, and continually deploy.
Visibility in order to empower the team collaboration: any developed elements must be visible and accessible to promote teamworking
Feedback: every member of the team must share the feedback so that a solved problem by anyone becomes a software best practice for everyone.
Using a fully automated process, you can deliver any software in any moment for any platform.