Demystifying DevOps and CI/CD

Image credit: https://github.com/infrabricks/wordcloud

Image credit: https://github.com/infrabricks/wordcloud

Jeremy Meiss Director, DevRel & Community timeline.jerdog.me

Image credit: https://github.com/infrabricks/wordcloud

What is DevOps?

1910s to 1930s “Flow production”

1990s

“10+ Deploys per Day: Dev and Ops Cooperation at Flickr” - John Allspaw, Paul Hammond

Image credit: freepik

Image credit: ROELBOB at DevOps.com

Image credit: ROELBOB at DevOps.com

Image credit: ROELBOB at DevOps.com

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.

Image source: Horizon Zero Dawn

Image source: Demotivational

Continuous {Integration|Deployment}

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

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

Scrumban!

Quick History of CI/CD 1991

Quick History of CI/CD 1991 1997

Quick History of CI/CD 2001 1991 1997

Quick History of CI/CD

Quick History of CI/CD

Quick History of CI/CD

Software Development without CI/CD

Software Development without 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, keeping team informed on code base / future conflicts Code Shared Code Repo CI/CD Runtime Test Scan for Vulnerabilities Build Website

CI == Continuous Integration ● ● Merge code changes often, keeping team informed on code base / future conflicts Run automated tests to validate builds, ensuring quality code pushes Code Shared Code Repo CI/CD Runtime Test Scan for Vulnerabilities Build Website

CI == Continuous Integration ● ● ● Merge code changes often, keeping team informed on code base / future conflicts Run automated tests to validate builds, ensuring quality code pushes 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, keeping team informed on code base / future conflicts Run automated tests to validate builds, ensuring quality code pushes 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

Image credit: Product Coalition

Image credit: Giphy

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

CD == Continuous Deployment ● Build Website Faster release cycles Server Deployment Active Users

CD == Continuous Deployment ● ● Build Website Faster release cycles Low-risk releases Server Deployment Active Users

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

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

Implementing CI/CD

Image credit: Giphy

Make sure everyone is on the same page

Always start small

Do what works for you

Always measure

95% 50% Image credit: Giphy

CI/CD Benchmarks 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/ssd2022

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