DOP 308: The Truth of CI/CD

Episode 308

Show Notes

#308: In this episode, hosts Darin and Viktor are joined by guest Ricardo Castro to delve into the complexities and misconceptions surrounding Continuous Integration (CI) and Continuous Deployment (CD). The discussion begins with Ricardo’s insights from a previous talk on the overestimation of automated systems in CI/CD and transitions into a broader conversation about the true essence of CI/CD practices. Key points include the critical distinctions between CI and CD, the importance of small batch deployments, the role of automation in scaling these processes, and the vital connection between CI/CD and business needs. The episode also touches on the contributions to open source projects and the need for balancing automation with risk management, ultimately questioning whether CI/CD can ever be truly solved.

Frequently Asked Questions

Does having automation mean you are doing CI/CD?

Ricardo Castro says no on DevOps Paradox episode 308, and that this is the core of his argument. Building and deploying in an automated way does not make it continuous integration. He accepts the converse, that CI does not scale without automation. Viktor Farcic extends the same reasoning to architecture: having multiple deployable applications does not make them microservices if releasing one requires changing another.

What is continuous integration actually?

Ricardo Castro defines it on DevOps Paradox episode 308 as integrating your work with the rest of the code base often, at least daily, keeping it in a releasable state. The reason is arithmetic: “you do this so often and so repeatedly that when you have integrations problems, they are small”. Someone who disappears for a month and then merges is doing integration, but not continuously.

Can you do CI without CD?

Viktor Farcic argues on DevOps Paradox episode 308 that a team claiming CI without CD is probably not doing CI either. If you are afraid of what happens when you deploy, the outputs of your CI are not reliable. Ricardo Castro agrees and adds the missing ingredient is trust, in the testing and in the ability to roll back quickly if something goes wrong.

Where does CI end and CD begin?

Darin Pope puts the boundary at the artifact on DevOps Paradox episode 308: the output of CI is a versioned artifact and the input to CD is that same artifact, with a repository in between. Ricardo Castro agrees while noting the line stays blurry, since producing an artifact does not make it shippable, and the testing that determines shippability happens after the build.

Can a deployment batch be too small?

Ricardo Castro offers one caveat on DevOps Paradox episode 308: committing one or two lines to satisfy a daily target tends to surround them with defensive code and feature flags to guarantee nothing activates. Viktor Farcic treats the queueing problem Darin Pope raises as solved by deploying whatever is at the head of the main line, and thinks a pipeline iterating too quickly is a problem nobody has ever complained about.

Why should a company contribute to open source?

Viktor Farcic argues on DevOps Paradox episode 308 that companies should be selfish about it rather than framing it as the right thing to do. You fix the vulnerability because you need it fixed, and contributing is cheaper than abandoning the project over one missing feature. Ricardo Castro says that is already how most companies behave, and that giving back is the by-product everyone benefits from.

What is the DevOps Paradox podcast?

DevOps Paradox is a weekly podcast co-hosted by Darin Pope and Viktor Farcic, covering DevOps, platform engineering, and modern software delivery. Episode 308 brings in Ricardo Castro to argue that automation is not continuous integration, work out where CI ends and CD begins, and question whether a team doing one without the other is doing either. Every episode page carries the audio, the video, and a full transcript.

Topics

Share and Download

Guests

Hosts

Viktor Farcic

Viktor Farcic

Viktor Farcic is a member of the Google Developer Experts and Docker Captains groups, and published author.

His big passions are DevOps, Containers, Kubernetes, Microservices, Continuous Integration, Delivery and Deployment (CI/CD) and Test-Driven Development (TDD).

He often speaks at community gatherings and conferences.

He has published DevOps Paradox and Test-Driven Java Development.

His random thoughts and tutorials can be found in his blog The DevOps Toolkit.