What Is Continuous Deployment?

Practicing continuous deployment means that every commit to the master branch is deployed to production without human intervention.

That's it. That's the shortest, and probably the most accurate definition of continuous deployment you'll ever find. Is that too much for you? If you don't think you can (or should) ever get there, we can fall back to continuous delivery.

Practicing continuous delivery means that every commit to the master branch is deployable to production unless it failed a fully automated pipeline.

The only substantial difference between continuous deployment (CDP) and continuous delivery (CD) is that one deploys to production while the other requires that we choose which commit is deployed to production. That's much easier, isn't it? Actually, it isn't. It's almost the same since in both cases we are so confident in the process that every commit is or can be deployed to production. In the case of continuous delivery, we (humans) do need to make a decision on what to deploy. However, that is the cause of significant confusion. What follows is the vital part so please read it carefully.

The decision which commit to deploy to production is based on business or marketing needs, and it has nothing to do with engineers.

If every commit (that did not fail the pipeline) is deployable to production, there is no need for an engineer to decide what will be deployed. Every commit is deployable, we just might not want to have a feature available to users straight away. It's a business decision. Period.

As a learning experience, you should take the least technical person in a company and put him (or her) in front of a screen with the builds and let him (or her) choose which release to deploy.

Someone from cleaning services is an excellent candidate to be that person. Now, before that person clicks the button to deploy a random release, you need to remove yourself from that room.

Here comes the critical question. How would you feel in that situation? If you'd go to the closest bar to have a coffee confident that nothing wrong will happen, you are in the right place. If you would have a nervous breakdown, you're still far from being there. If that's the case, do not despair. Most of us would have a nervous breakdown from letting a random person deploy a random release. That's not what matters. What is important is whether you want to get there. If you do, read on. If you don't, I hope you're reading a free sample of the book, and you can make an educated decision not to waste money. Get something else to read.

"Hold on," you might say. "I am already doing continuous integration," could be the thought in your head right now. "Is continuous delivery or deployment truly that different?" Well, the answer is that it's not, but that you probably misunderstood what continuous integration is. I won't even try to define it for you. Over fifteen years passed since CI became a thing. I will, however, ask you a few questions. If you answer with "no" to at least one of them, you're not doing CI. Here it goes.

  • Are you building and, at least partially, testing your application on every commit without exceptions and no matter to which branch that commit is pushed to?
  • Is everyone committing at least once a day?
  • Do you merge your branches to the master after a couple of days, if not more frequently?
  • Do you stop doing whatever you're doing to fix a failed build? Is that the highest priority (after fire emergency, earthquakes, and other life-threatening events)?

That's it. Those are the only questions you need to answer. Be honest with yourself. Did you really respond with "yes" to all four of those questions? If you did, you're my hero. If you didn't, there is only one more question left to answer.

Do you really want to do continuous integration (CI), delivery (CD), or deployment (CDP)?

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.238.161