Continuous delivery (CD) is one of those techy development methods used to automate the delivery of software development.
Continuous delivery encompasses techniques such as automated testing, continuous integration and continuous deployment to test environment that result in high quality, tested code quickly and rapidly.
The idea is to really push out bug fixes and improvement in code quickly as possible with minimal overhead and low risk to customers. Continuous delivery isn't a skill of a novice and can take a lot of experience to master and set up correctly.
But when done right, it can delivery awesome software, quickly and efficiently to customers and users of that software with minimal fuss.
At JoomlaDay Thailand 2014, Jirayut Nimsaeng did a presentation about continuous delivery using Docker and Joomla!
There are a lot of benefits in regards to using a continuous delivery method in regards to reducing costs and delivering maximum value to your customers or user base.
Waterfall Method of Software Development
Older methods of software and application development using older waterfall methods of development are high in costs and usually have more risks in that they aren't tested until after the implementation phase of development meaning that users won't see the product or software well into the products/applications development.
If the design or development was interpreted incorrectly in regards to how users are intending to use it then the cost of redevelopment is usually much higher.
Continuous Delivery - Agile Development
With continuous delivery, testing is done after small lots of development is complete. This helps users, developers and designers determine the best solution for the software/application. Testing is done is smaller and shorter sprints with the testing feedback loop added at the end of each one of these smaller development sprints.
It helps bring a minimum viable product to the customer ready, ready for deployment faster and more accurately.
How Does Docker Help
So now that we are shipping or delivering the software more often from a developer's test environment to a staging/test/production environment we need a fast and easy way to deploy that software, patches and updates to these other servers with minimal fuss, all testing done and so forth.
Docker allows for this making the process easier and simpler compared to how it is done previously. Having a piece of code working perfectly on a developer's machine doesn't mean that it will work perfectly on a staging environment or production server and it all needs to be tested and delivered in a way that will work on all of these environments. Docker works locally on your development environments allowing you to more easily make these deployments.
A Docker file contains all of the information required to run and deploy the code that you are working on. It allows applications to be quickly assembled from components and eliminates the friction between the development, testing and production environments.
This all results in faster deployment and delivery of code.
Introduction to Docker by Twitter University
If you'd like to learn more about Docker, watch this great presentation by Solomon Hykes, CTO & Founder of dotCloud.
The video is of his hour long presentation about Docker, how it works and the problems that it solves for developers that want to delivery software quickly and efficiently to these multiple environments.