The goal of continuous delivery is to establish an optimized end-to-end process, enhance the development to production cycles, lower the risk of release problems and provide a quicker time to market. To that point, Jez Humble and Dave Farley initially defined 8 principles of continuous delivery in their Book “Continuous Delivery” as follows:
1. Repeatable Reliable Process
Use the same release process in all environments. If a feature or enhancement has to work through one process on its way into the integration environment, and another process into QA, issues find a way of popping up.
2. Automate Everything
Automate your builds, your testing, your releases, your configuration changes and everything else. Manual processes are inherently less repeatable, more prone to error and less efficient. Once you automate a process, less effort is needed to run it and monitor its progress – and it will ensure you get consistent results.
3. Version Control Everything
Code, configuration, scripts, databases, documentation. Everything! Having one source of truth – and a reliable one – gives you a stable foundation to build your processes upon. You can learn more about DBmaestro’s Source Control here.
4. Bring the Pain Forward
Deal with the hard stuff first. Time-consuming or error prone tasks should be dealt with as soon as you can. Once you get the painful issues out of the way, the rest will most likely be easier to perfect.
5. Build-in Quality
Create short feedback loops to deal with bugs as soon as they are created. By having issues looped back to developers as soon as they fail post-build test, it will enable them to produce higher quality code quicker. In addition, fewer issues will be found later on in the process, when it will be more expensive to fix.
6. “Done” Means Released
Create short feedback loops to deal with bugs as soon as they are created. By having issues looped back to developers as soon as they fail post-build test, it will enable them to produce higher quality code quicker. In addition, fewer issues will be found later in the process, when it will be more expensive to fix.
7. Everyone is Responsible
“It works on my station” is never a valid excuse. Responsibility should extend all the way to production. Cultural change can be the hardest to implement. However, having management support and an enthusiastic champion will certainly help.
8. Continuous Improvement
Out of the first 8 principles of continuous delivery listed here, this principle is the most important for effective automation. If “practice makes perfect” then automation represents the ultimate expression of a practice-making-perfect iterative process.
Culture is a non-starter. You absolutely must have a culture that seeks out continuous improvement. Moving beyond the motivation though, often automation provides the most accessible and effective means to that end.
Moving in the direction of ever more repeatable, reliable and efficient practices, automated iteration is the key ingredient to realizing substantial ROI on your continuous delivery efforts.
9. Don’t Forget the Database
As Agile has become the standard in software development, source control and DevOps best practices may be mainstream thinking today. Why, then, would database releases still go through a manual process? There are very sound source control and DevOps solutions for databases today, enabling safe, secure and smart solutions for database release automation today, that accelerate feedback loops between developers and DBAs, saving time and eliminating costly rework.