
Why Continuous Integration and Delivery Is Important - thailor3
https://levelup.gitconnected.com/heres-why-continuous-integration-and-deployment-is-so-important-to-the-software-development-c0caeead5881
======
hyko
Is it possible to tag Medium posts so we can filter them out?

~~~
thailor3
Yeah, i can do that next time, sorry about that... I can also share the
"friend link" so that everyone can view without needing a membership.. thanks
for the feedback

~~~
hyko
No problem, it was more of a general comment really. Thank you!

------
gfs78
On continuous delivery: "Given that all of the changes deployed are individual
commits, the deployments are low risk and cause less bugs".

I would like to know the source of this claim. I guess someone did an study on
this...

~~~
ses1984
There's an implied "other things being equal" in there.

Given the commits follow some normal distribution of quality and risk, it's
less risky on average to apply one of those average commits than it is to
apply a bunch of them.

But if you try to deliver one giant risky commit, you're doing CD in name
only.

------
digitalsushi
Why is washing dishes as you cook so much easier than washing them a week
later when the crust is difficult to remember what your code meant when you
wrote it?

------
treyhuffine
Friend Link (no paywall): [https://levelup.gitconnected.com/heres-why-
continuous-integr...](https://levelup.gitconnected.com/heres-why-continuous-
integration-and-deployment-is-so-important-to-the-software-
development-c0caeead5881?source=friends_link&sk=82592dcef8b9de843ed7192555c4f000)

------
notyourday
The blast radius of CD covers company's bank accounts.

The only way to safely do CD in a customer facing non-toy project ( aka
there's a revenue attached to the project ) is to have stack built from the
ground up to support request pinning, request tracing, request shifting in
addition to the regular instrumentation monitoring and 100% integration test
coverage.

One can probably do it if that one is Google or Facebook. You aren't Google or
Facebook. Don't be a hero. Don't do CD.

~~~
jpdb
There seems to be a misunderstanding regarding what Continuous Delivery (CD)
is, as well as what is all required.

CD doesn't necessarily refer to Deployment of Delivered artifacts. Instead,
once code is merged back into your release branch (sometimes master branch,
sometimes tag, sometimes an actual release branch), it should be made
available to be launched to production. This doesn't mean more testing isn't
required and it doesn't mean that humans are not involved. Continuous
Deployment is the process of releasing software to production automatically.

If you did in fact mean Continuous Deployment then you do not need 100%
integration test coverage or anything of that nature. Typically, the process
might work by releasing a canary deploy which receives a fraction of the
traffic going to production. In the unlikely event a breaking change has
silently made it through your other tests, it should likely be caught when it
is deployed as a canary. If in the extremely unlikely scenario it makes it
through both then the existing pipeline you have can be used to "roll-forward"
a fix automatically instead of via the human process that is much more likely
to fail.

This may seem like a lot to you, but you are front-loading quite a bit of work
and a mature pipeline is much less error prone than manual deploys.

~~~
choeger
Note that "canary deployment" (I hate the usage of 'deploy' as noun.) is only
possible under specific circumstances. You would not want to do that with your
database, for instance (aka, "0.5% of your data might now be corrupt or lost)
or your development tooling (aka, 0.5% of your deployed code might not do what
it should do according to its source code).

~~~
plopz
You also need a large enough user base/level of traffic where releasing to a
small percentage of your users would even uncover a problem.

I've had similar problems with A/B testing where a low amount of traffic means
I would have to wait a long time to get meaningful data during which
confounding variables naturally get introduced.

