Continuous Delivery works as a pipeline of steps. If a step fails, you simply feed the results back to your developers and start the pipeline again once the issue is fixed. You can implement the pipeline one item at a time. It doesn't have to be all or nothing, implementing each of these concepts will help you ship faster and will result in improved software.
It may seem daunting but most teams are just a few steps away from Continuous Delivery. Even if you don't use version control, you'll most likely test your changes before you release them to production! You're already halfway there, you just need to implement a few more of the Continuous Delivery concepts below and you'll be ready to deploy many times a day.
Having your developers and operations staff working together in the same team can really help with productivity. This is known as DevOps and can really help you work efficiently.
Using source version control is a no-brainer. If you don't already use it, use it. You won't have to worry about losing old versions of files and you'll be able to rollback to old versions of your site in case you need to. You'll also be able to work on different new features and bug fixes at the same time.
Using workflow tools that integrate with your version control and Continuous Delivery pipeline can help project managers, management and developers keep clear oversight on how a project is progressing but can also be used to trigger automatic procedures and production deployments.
Unit testing can seem daunting to begin with and writing tests can even initially seem to slow your developers down. If you are a developer who only works on a single website and is able to remember how everything you've ever coded should work and the reason for every decision you have made when coding then you probably don't need unit tests. For the rest of us however, unit tests allow us to prevent regressions appearing in our code. Unit tests also act as documentation of how code should work. With unit tests you can add new features and fix bugs without worrying that you might break existing code.
Put simply, Continuous Integration is the process of combining all your code and continuously running tests on it to ensure nothing has broken. When a bug is found, whoever wrote the code that caused the tests to fail is alerted and can fix it straight away when what they did is fresh in their minds rather than trying to remember changes they made weeks ago.
Continuous Integration can combine unit tests and automated acceptance tests. All your unit tests could pass but your changes might have broken the interaction between two parts of your system. Automated acceptance tests can be used to simulate sign up, logins and other crucial interactions with users that must work!
If it seems like the QA team are always the bottleneck for releases, they are probably finding bugs which can be caught by unit tests and automated acceptance testing. Continuous Delivery will keep your QA team testing new features instead of trudging through the same repetitive tests for every release.
How approval procedures are implemented will depend on your organisation. Smaller companies might find it sufficient if another member of staff checks work before it goes live. Larger companies might need sign off from a product owner or director. Some companies may even be so confident in their tests that they push changes live automatically once all tests pass and don't require an approval procedure.
One-click or automated deployments are crucial for Continuous Delivery because they allow you to deploy quickly and often. If issues can be quickly rectified and released to production then deployments are stress free and can happen often.
If you like the sound of Continuous Delivery but need help getting started, contact us!