The short answer is — because you don’t have time to spend on tedious tasks of maintaining system state and hunting for those weird errors that happen when you deploy by hand.
What is Continuous Delivery?
Continuous Delivery is an idea that grew out of Continuous Integration and Agile Development practices. It’s main tenet is that at any time your code should be working and deploy-able (you should have scripts and tools setup to be able to deploy your system on stock image or better create the image) At any time you should be able to run a script and be able to see the results in production environment.
How to achieve it?
Up to this point I have been explaining basic building blocks of creating more or less complete even thought more relaxed system for CD using Python tools.
So I invite you to read through the older posts to see how it is done.
Here is short outline:
- Keep your code under source control. (Always)
- Run test, lint, compile, package loop on every commit.
- When the previous step is successful deploy artifact to a repository.
- Only deploy packages from that repository to production.
- Everything should be automated.
You should be able to run a script and create the whole product (db, system, code, dependencies) even if your data center burned down and you have to host it on a spare box under your desk.
Okay, done with basics — on to actually creating something useful.