Hi, I'm Eric Minick with IBM Cloud.
I want to talk a little bit about the difference
between continuous deployment and continuous delivery.
Now for both of these practices,
you're looking at trying to take new code, valuable,
move that as quickly as we can out to production.
That's where that valuable code is useful.
So what you're basically going to end up doing, is you're gonna take your code, you're going to
build it with a continuous integration tool,
deploy it to a test environment, or 2, or 3,
run all of your automated tests
and then it's going to move into production.
Now, the idea of continuous deployment,
the term was really coined by Timothy Fitz back in 2009
in what he described was a process by which a company called IMVU
deployed to production 50 times a day.
The code came in
and then no human touched it again
until it was in production.
How do you do that without it being completely irresponsible, right?
And that was what was really interesting here.
Well, you have the automation to move things.
They had one core test environment.
So, they brought these things together,
but thousands of tests, a really robust testing suite,
that ran across a large number of servers
so that you could run thousands and thousands of tests
in a short period of time and know that your new code was probably pretty good
because you had run these robust set of tests that you could depend on.
And because you believed in your testing,
you could put that out into production.
Now this was a consumer-facing app that wasn't taking credit cards.
And so, you could just put that out
to 2% of your users, or 5% of your users, do what's known as "canary deployment"
and make sure that the servers weren't falling over.
That people were still interacting with the app as they should.
So you had a robust testing suite and then you were also testing in production.
Right? You were monitoring really robustly
and if things were going badly out here in production, if like two of your servers keeled over,
OK, you're going to pull that change out of the load balancer,
you have the rest your servers working fine.
You can go back and fix it in code. It'll get right back out the door real quick. Nice.
So, this is really an extreme approach.
Someone writes code, it ends up in production, no one else touches it.
Where you have a little bit of regulatory approval
and you need 2 eyes on anything before it gets to production,
back here in code review, back here in code - you can do a code review,
and another developer can provide that check
and then the testing provides you with another safety net.
Now, this approach,
this continuous deployment, "continuous deployment to production" is really what it means,
that's still extreme, and something a lot of organizations
both don't have the testing for,
nor do they have either the kind of stomach or the regulatory approval
to do that without some sort of approval in here.
Right? Some sort of human decision, sign off, check,
that the move from staging, to production,
from your last test environment to production is OK.
Right? And so this sort of thing requires, you know, another check.
And it's typically that ... what distinguishes continuous delivery
is that in continuous delivery you're automating as much as you can
out of code, through end of testing.
But you're going to have a decision point here at the end for what we do with the approval.
And so, this is just one step a little bit more cautious than deployment.
That's what most organizations that I see are trying to get to today.
They still need to do a lot of automation in their testing area in order to achieve that.
To even get to the point where they can just go straight to a business decision of,
"Should we released this or not?"
But this sort of "automate as much as I can",
"make a decision to go or not",
that's what we see with continuous delivery. That's where we see people going,
but this extreme approach of continuous deployment, it works.
We've had documentation that it works now for over 10 years.
It can be a reasonable approach if you're in the right situation.
So, that's continuous deployment vs continuous delivery.
Thank you.
If you have questions, please drop us a line.
If you want to see more videos like this in the future, be sure to like and subscribe.