Demystifying CI/CD

Imagine you’re getting ready to ship something…

You press the big red button

click

silence

Do you… a) Sweat and wait to see if it blows up

Do you… a) Sweat and wait to see if it blows up b) Pack up, go home & enjoy your weekend

It all boils down to automation.

The green pastures of automation Image source: Forbes

Image source: Horizon Zero Dawn

Image source: Demotivational

Timeline.jerdog.me IAmJerdog jerdog /in/jeremymeiss Director, DevRel & Community

“DEVOPS”

The DevOps Lifecycle ○ Plan Image source: C-Sharp Corner

The DevOps Lifecycle ○ Plan ○ Code Image source: C-Sharp Corner

The DevOps Lifecycle ○ Plan ○ Code ○ Build Image source: C-Sharp Corner

The DevOps Lifecycle ○ ○ ○ ○ Image source: C-Sharp Corner Plan Code Build Test

The DevOps Lifecycle ○ ○ ○ ○ ○ Image source: C-Sharp Corner Plan Code Build Test Release

The DevOps Lifecycle ○ ○ ○ ○ ○ ○ Image source: C-Sharp Corner Plan Code Build Test Release Deploy

The DevOps Lifecycle ○ ○ ○ ○ ○ ○ ○ Image source: C-Sharp Corner Plan Code Build Test Release Deploy Operate

The DevOps Lifecycle ○ ○ ○ ○ ○ ○ ○ ○ Image source: C-Sharp Corner Plan Code Build Test Release Deploy Operate Monitor

Continuous {Integration|Deployment}

Software Development without CI/CD Image source: Oursky

Software Development with CI/CD Image source: Oursky

CI == Continuous Integration the practice of merging all developers’ working copies to a shared code repository Code Shared Code Repo CI/CD Runtime Test Scan for Vulnerabilities Build Website

CI == Continuous Integration ○ Merge code changes often Code Shared Code Repo CI/CD Runtime Test Scan for Vulnerabilities Build Website

CI == Continuous Integration ○ Merge code changes often ○ Run automated tests to validate builds Code Shared Code Repo CI/CD Runtime Test Scan for Vulnerabilities Build Website

CI == Continuous Integration ○ Merge code changes often ○ Run automated tests to validate builds ○ Only integrate tested code into code base Code Shared Code Repo CI/CD Runtime Test Scan for Vulnerabilities Build Website

CI == Continuous Integration ○ ○ ○ ○ Merge code changes often Run automated tests to validate builds Only integrate tested code into code base Changes frequently merged into release branches Code Shared Code Repo CI/CD Runtime Test Scan for Vulnerabilities Build Website

CD == Continuous Deployment the practice of automatically deploying new software releases to target environments Build Website Server deployment Active Users

Continuous Deployment ○ Faster release cycles Build Website Server Deployment Active Users

Continuous Deployment ○ Faster release cycles ○ Low-risk releases Build Website Server Deployment Active Users

Continuous Deployment ○ Faster release cycles ○ Low-risk releases ○ Higher quality Build Website Server Deployment Active Users

Continuous Deployment ○ ○ ○ ○ Build Website Faster release cycles Low-risk releases Higher quality Lower costs Server Deployment Active Users

Is CI/CD a TOOL?

Are there benefits to CI/CD?

CI/CD Benefits ○ ○ ○ ○ ○ ○ Improve team productivity & efficiency Accelerate speed to market Identify product/market fit Release higher quality, more stable products Increase customer satisfaction Keep devs happy and shipping code

I feel the need… the need for SPEED! ○ Customers get access to new features faster ○ Company gets a faster ROI from new features

Implementing CI/CD

Make sure everyone is on the same page

Always start small

Do what works for you

Always measure

CI/CD Benchmarks for high performance Throughput Duration At will <10 minutes Success Rate

90% Mean Time to Recovery <1 hour

Better CI/CD Practices ○ Make testing an integral part of the dev process

Better CI/CD Practices ○ Make testing an integral part of the dev process ○ Ensure testing environment mirrors production

Better CI/CD Practices ○ Make testing an integral part of the dev process ○ Ensure testing environment mirrors production ○ Use coding better practices, i.e. pair programming

Better CI/CD Practices ○ ○ ○ ○ Make testing an integral part of the dev process Ensure testing environment mirrors production Use coding better practices, i.e. pair programming Automate the deploy workflow

Streamline deploy

Full Report https://circle.ci/ssd2020

Do not try to automate everything

Proof of concept ○ ○ ○ ○ A rigorous testing practice Consistent software environments Training on continuous integration practices. Reports to measure key metrics.

Timeline.jerdog.me Thank you. For feedback and swag: circle.ci/jeremy IAmJerdog jerdog /in/jeremymeiss