SlideShare a Scribd company logo
The Evolution of a Continuous Integration Pipeline
Greg Sypolt unsplash.com
The Scale Of USA TODAY NETWORK
Gannett is a leading local-to-
national media & marketing
solutions company, and the
largest local media company in
America, with 100+ newsrooms
spanning 34 states.
Who we are.
2,000+ 100+ 124M+ 1.1B 500+
JOURNALISTS NEWSROOMS UNIQUE
MONTHLY
USERS
TOTAL PAGES

PER MONTH
DIGITAL
PRODUCTS
@gregsypolt
Happy CustomerReduce Cost
Addressing The Problem With Innovation
Speed
@gregsypolt
Evolution of Continuous Integration
Hosted CI Platform
Manual
On-Premise
Self-Service
@gregsypolt
The Vision
Shifting LEFT with DevOps and Automated Testing
Code Build Test Deploy MonitorPlanCollaborate
building quality into every stage
Repeat
It takes a COMMUNITY
Dev | Staging | Prod
Discovery Execute Release Review
How We Test Things
Shift RIGHT
@gregsypolt
Setting Expectations
@gregsypoltunsplash.com
ConfidenceShareAdapt
Expectations for Continuous Integration
Goals
@gregsypolt
Ownership
@gregsypoltunsplash.com
CI Ownership as a Community
Product EngineeringPlatform Engineering Quality Engineering
</>
</>
Build Unit Integration
Pull Request
Code
√
√
√
Tests
√
√
√
√
√
√
Others Stage Acceptance Others
√
√
√
√
√
√
Tests
Production Others
√
√
√
Synthetics
√
√
√
Tests
Build better
software by
improving
speed,
efficiency, and
collaboration
Teamwork
Vision
Goals
StrategyInnovation Success
MeasureElevate Ideas
Culture of Quality
Best Practices
Collect Requirements
Coach and Mentor
Create Pipeline Code
Maintain Infrastructure
Containerization
Monitoring Results
Identifying Quality Gaps
@gregsypolt
Defining A Single Path To Production
@gregsypoltunsplash.com
Pre-Commit Commit Acceptance Performance Exploratory Production
Pipeline Stages
Infrastructure
Any plan that defers testing is BROKEN …
Defining a Single Path to Production
@gregsypolt
Defining a Continuous Testing Strategy
@gregsypoltunsplash.com
Define a Continuous Testing Strategy
Commit
Creation Pull Request
Merged Pull Request
Deployment
Trigger Points
Development
Staging
Production
Environments
Infrastructure
Unit
Module/Component
API
Integration
User Acceptance
Visual
Accessibility
Targeted
Performance
Stress
Security
Scalability
Quality Playbook
Test Continuously
Instant Feedback on Quality
Reduce Risk
Build Confidence
Faster Release Cycles
Shift Left
Disposable Infrastructure
Automate Everything
Application Monitoring
Blue/Green Deployments
Canary
DevOps
@gregsypolt
Designing a CI/CD Platform
@gregsypoltunsplash.com
The CI/CD Platform
PlatformEng
APIs & Tools
Plumbing
Helm
Source Control
Artifact
Storage
Artifact
Storage
Dev Stage ProdD
CI/CD
Server
CI/CD
Workers
Sauce Labs Applitools SumoLogic
Selenoid
Grid
@gregsypolt
Setting CI/CD Standards
@gregsypoltunsplash.com
CI/CD Standards
Multiple Teams
Jenkinsfile Notifications
Manage SecretsWebhooksMonitoring More
…
Kubernetes
Containers
Shared Libraries
Dashboards
Artifact Storage Google Storage
@gregsypolt
CI/CD Plumbing
Change Logs
Consul
HTTP
Kubectl
Artifactory
DNS
Deployment
Lights Out
Release Notes
Tagging
Vault Credentials
Test Aggregator
GitHub Repo Inform
Semantic Versioning
Build Status Color
JIRA Tickets
@gregsypolt
16
Pipeline as Code
Agent
Stages
Stage
Parallel
Basic Pipeline Terms
Restricting Builds
Retrieving Repositories
Docker Image
Build (Compiling Code)
Running Tests
Deploy to Environment
Reporting Test Details
Push Build Artifacts
Notification
Scripting Pipeline Code
In general, most Pipeline scripts look more or less like this…
Jenkinsfile
Commit
Acceptance
Performance
Exploratory
Production
@gregsypolt
Pre-Fabricated Pipelines
pipeline {
agent any
environment {
APP_NAME = 'hello'
}
stages {
stage('dependencies') {
when {
expression { opts.stageDeps ==
'true' }
}
steps {
sh "go mod download"
}
}
stage('tests-parallel') {
when {
expression { opts.stageTest ==
'true' }
}
failFast true
parallel {
stage('vet') {
steps {
script {
sh "go vet ${env.APP_NAME}"
}
}
}
stage('unit') {
steps {
script {
sh "go test -v $
{env.APP_NAME}"
...
Pipeline as Code
ci ([
stageDeps: 'true',
stageTest: 'true',
stageBuild: ‘true’,
stageDeploy: ‘true’
])
Pre-fabricated Pipeline
@gregsypolt
CI/CD Platform Responsibilities
@gregsypoltunsplash.com
Shifting Ownership Responsibilities
27
LEGACY CI/CD SELF-SERVICE
13
HOSTED CI/CD PLATFORM
@gregsypolt
By The Numbers
@gregsypolt unsplash.com
Availability
LEGACY CI/CD SELF-SERVICE HOSTED CI/CD PLATFORM
Q4 2018
Q1 2019
Q2 2019
99.97%
99.77%
99.89%
@gregsypolt
Legacy CI/CD Solution
$14,000/yr
AVERAGE LEGACY CI/CD COST SCALR FARM
LEGACY CI/CD SELF-SERVICE
@gregsypolt
Hosted | CI/CD Without Autoscaling
80%COST REDUCTION
$3,000/yr
AVERAGE CI/CD COST W/O AUTOSCALING
HOSTED CI/CD PLATFORM
@gregsypolt
2
4
6
8
10
12
10:30 10:35 10:40 10:45 10:50 10:55 11:00 11:05
Active Build Count (running + queued) Worker Pod Count
BULK BUILD STARTS
BUILDS COMPLETE
COOLDOWN BEGINS COOLDOWN ENDS
Auto-Scaling Workers
@gregsypolt
Hosted | CI/CD Platform With Autoscaling
93%COST REDUCTION
$960/yr
AVERAGE CI/CD COST WITH AUTOSCALING
HOSTED CI/CD PLATFORM
@gregsypolt
4,000+AVERAGE BUILDS PER WEEK
600%BUILDS INCREASED
HOSTED CI/CD PLATFORM
Builds | Hosted CI/CD Platform
@gregsypolt
1.08M May 97.9%
1.36M April 97.5%
1.17M March 98.5%
Tests | Hosted CI/CD Platform
HOSTED CI/CD PLATFORM
Total Tests
@gregsypolt
The CI/CD Evolution Path
Innovation
Adoption
Maintain
You don’t know your
limits until you push yourself
@gregsypoltunsplash.com
Thank You!
Remember why you walked in here today
It’s entirely up to you push your evolution forward
Nothing feels better than new knowledge
@gregsypoltunsplash.com

More Related Content

What's hot

Consumer Driven Contracts and Your Microservice Architecture @ Warsaw JUG
Consumer Driven Contracts and Your Microservice Architecture @ Warsaw JUGConsumer Driven Contracts and Your Microservice Architecture @ Warsaw JUG
Consumer Driven Contracts and Your Microservice Architecture @ Warsaw JUG
Marcin Grzejszczak
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Optimizely
 
Cloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud PlatformCloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud Platform
Bret McGowen - NYC Google Developer Advocate
 
Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins
Criando pipelines de entrega contínua multilinguagem com Docker e JenkinsCriando pipelines de entrega contínua multilinguagem com Docker e Jenkins
Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins
Camilo Ribeiro
 
Using Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge InteractiveUsing Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge Interactive
Matthew McCullough
 
Amsterdam JUG - Continuous performance
Amsterdam JUG - Continuous performanceAmsterdam JUG - Continuous performance
Amsterdam JUG - Continuous performance
Bert Jan Schrijver
 
Refine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testRefine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated test
Malang QA Community
 
Codemotion tech pills - Continuous performance
Codemotion tech pills  - Continuous performanceCodemotion tech pills  - Continuous performance
Codemotion tech pills - Continuous performance
Bert Jan Schrijver
 
Automated Testing with Selenium
Automated Testing with SeleniumAutomated Testing with Selenium
Automated Testing with Selenium
Robert Kaiser
 
iOS Indie Developer Toolkit - CocoaHeads 3city
iOS Indie Developer Toolkit - CocoaHeads 3cityiOS Indie Developer Toolkit - CocoaHeads 3city
iOS Indie Developer Toolkit - CocoaHeads 3city
Michał Zygar
 
Kubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateKubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 Update
Matthew Farina
 
Spring Boot & Spring Cloud on k8s and PCF
Spring Boot & Spring Cloud on k8s and PCFSpring Boot & Spring Cloud on k8s and PCF
Spring Boot & Spring Cloud on k8s and PCF
Lars Rosenquist
 
James Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL appJames Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL app
React Conf Brasil
 
API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+Cucumber
Knoldus Inc.
 
Continuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsContinuously Delivering Distributed Systems
Continuously Delivering Distributed Systems
Daniel Löffelholz
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
Lars Rosenquist
 
Continuous Delivery @ Codemotion
Continuous Delivery @ Codemotion Continuous Delivery @ Codemotion
Continuous Delivery @ Codemotion
Miguel Serrano Milano
 
Redux vs GraphQL
Redux vs GraphQLRedux vs GraphQL
Redux vs GraphQL
Jordon McKoy
 
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
Paulo Clavijo
 
Seaside Web 2.0
Seaside Web 2.0Seaside Web 2.0
Seaside Web 2.0
ESUG
 

What's hot (20)

Consumer Driven Contracts and Your Microservice Architecture @ Warsaw JUG
Consumer Driven Contracts and Your Microservice Architecture @ Warsaw JUGConsumer Driven Contracts and Your Microservice Architecture @ Warsaw JUG
Consumer Driven Contracts and Your Microservice Architecture @ Warsaw JUG
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team Offering
 
Cloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud PlatformCloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud Platform
 
Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins
Criando pipelines de entrega contínua multilinguagem com Docker e JenkinsCriando pipelines de entrega contínua multilinguagem com Docker e Jenkins
Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins
 
Using Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge InteractiveUsing Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge Interactive
 
Amsterdam JUG - Continuous performance
Amsterdam JUG - Continuous performanceAmsterdam JUG - Continuous performance
Amsterdam JUG - Continuous performance
 
Refine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testRefine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated test
 
Codemotion tech pills - Continuous performance
Codemotion tech pills  - Continuous performanceCodemotion tech pills  - Continuous performance
Codemotion tech pills - Continuous performance
 
Automated Testing with Selenium
Automated Testing with SeleniumAutomated Testing with Selenium
Automated Testing with Selenium
 
iOS Indie Developer Toolkit - CocoaHeads 3city
iOS Indie Developer Toolkit - CocoaHeads 3cityiOS Indie Developer Toolkit - CocoaHeads 3city
iOS Indie Developer Toolkit - CocoaHeads 3city
 
Kubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateKubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 Update
 
Spring Boot & Spring Cloud on k8s and PCF
Spring Boot & Spring Cloud on k8s and PCFSpring Boot & Spring Cloud on k8s and PCF
Spring Boot & Spring Cloud on k8s and PCF
 
James Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL appJames Baxley - Statically typing your GraphQL app
James Baxley - Statically typing your GraphQL app
 
API Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+CucumberAPI Automation Testing Using RestAssured+Cucumber
API Automation Testing Using RestAssured+Cucumber
 
Continuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsContinuously Delivering Distributed Systems
Continuously Delivering Distributed Systems
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
Continuous Delivery @ Codemotion
Continuous Delivery @ Codemotion Continuous Delivery @ Codemotion
Continuous Delivery @ Codemotion
 
Redux vs GraphQL
Redux vs GraphQLRedux vs GraphQL
Redux vs GraphQL
 
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
CI/CD non-breaking changes exercise - Cork Software Crafters - February 2020
 
Seaside Web 2.0
Seaside Web 2.0Seaside Web 2.0
Seaside Web 2.0
 

Similar to Agile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline

Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
KenAtIndeed
 
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
VMware Tanzu
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
All Things Open
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
ciberkleid
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
POSSCON
 
Modernizing Traditional Applications with Docker EE: From PoC to Production
Modernizing Traditional Applications with Docker EE: From PoC to ProductionModernizing Traditional Applications with Docker EE: From PoC to Production
Modernizing Traditional Applications with Docker EE: From PoC to Production
Docker, Inc.
 
Continuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile DevelopmentContinuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile Development
Dynatrace
 
H2O World - Building a Smarter Application - Tom Kraljevic
H2O World - Building a Smarter Application - Tom KraljevicH2O World - Building a Smarter Application - Tom Kraljevic
H2O World - Building a Smarter Application - Tom Kraljevic
Sri Ambati
 
Continuous Delivery in the Enterprise
Continuous Delivery in the EnterpriseContinuous Delivery in the Enterprise
Continuous Delivery in the Enterprise
IBM UrbanCode Products
 
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Andreas Grabner
 
Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)
Nordic APIs
 
Achieving CI Excellence With Quality Engineering by Greg Sypolt
Achieving CI Excellence With Quality Engineering by Greg SypoltAchieving CI Excellence With Quality Engineering by Greg Sypolt
Achieving CI Excellence With Quality Engineering by Greg Sypolt
Sauce Labs
 
DevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More DefectsDevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More Defects
TechWell
 
Neotys PAC - Stijn Schepers
Neotys PAC - Stijn SchepersNeotys PAC - Stijn Schepers
Neotys PAC - Stijn Schepers
Neotys_Partner
 
Front-End Test Fest Keynote: The State of the Union for Front End Testing.pdf
Front-End Test Fest Keynote: The State of the Union for Front End Testing.pdfFront-End Test Fest Keynote: The State of the Union for Front End Testing.pdf
Front-End Test Fest Keynote: The State of the Union for Front End Testing.pdf
Applitools
 
Continuous delivery from the trenches
Continuous delivery from the trenchesContinuous delivery from the trenches
Continuous delivery from the trenches
Michael Medin
 
Track c how do we break - jasper
Track c   how do we break - jasperTrack c   how do we break - jasper
Track c how do we break - jasperchiportal
 
Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...
Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...
Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...
Flink Forward
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Mozaic Works
 
Big rewrites without big risks
Big rewrites without big risksBig rewrites without big risks
Big rewrites without big risks
Flavius Stef
 

Similar to Agile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline (20)

Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
 
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Modernizing Traditional Applications with Docker EE: From PoC to Production
Modernizing Traditional Applications with Docker EE: From PoC to ProductionModernizing Traditional Applications with Docker EE: From PoC to Production
Modernizing Traditional Applications with Docker EE: From PoC to Production
 
Continuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile DevelopmentContinuous Performance Testing and Monitoring in Agile Development
Continuous Performance Testing and Monitoring in Agile Development
 
H2O World - Building a Smarter Application - Tom Kraljevic
H2O World - Building a Smarter Application - Tom KraljevicH2O World - Building a Smarter Application - Tom Kraljevic
H2O World - Building a Smarter Application - Tom Kraljevic
 
Continuous Delivery in the Enterprise
Continuous Delivery in the EnterpriseContinuous Delivery in the Enterprise
Continuous Delivery in the Enterprise
 
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
 
Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)Operational API design anti-patterns (Jason Harmon)
Operational API design anti-patterns (Jason Harmon)
 
Achieving CI Excellence With Quality Engineering by Greg Sypolt
Achieving CI Excellence With Quality Engineering by Greg SypoltAchieving CI Excellence With Quality Engineering by Greg Sypolt
Achieving CI Excellence With Quality Engineering by Greg Sypolt
 
DevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More DefectsDevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More Defects
 
Neotys PAC - Stijn Schepers
Neotys PAC - Stijn SchepersNeotys PAC - Stijn Schepers
Neotys PAC - Stijn Schepers
 
Front-End Test Fest Keynote: The State of the Union for Front End Testing.pdf
Front-End Test Fest Keynote: The State of the Union for Front End Testing.pdfFront-End Test Fest Keynote: The State of the Union for Front End Testing.pdf
Front-End Test Fest Keynote: The State of the Union for Front End Testing.pdf
 
Continuous delivery from the trenches
Continuous delivery from the trenchesContinuous delivery from the trenches
Continuous delivery from the trenches
 
Track c how do we break - jasper
Track c   how do we break - jasperTrack c   how do we break - jasper
Track c how do we break - jasper
 
Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...
Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...
Flink Forward Berlin 2018: Raj Subramani - "A streaming Quantitative Analytic...
 
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. UnconferenceFlavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference
 
Big rewrites without big risks
Big rewrites without big risksBig rewrites without big risks
Big rewrites without big risks
 

Recently uploaded

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 

Recently uploaded (20)

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 

Agile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline

  • 1. The Evolution of a Continuous Integration Pipeline Greg Sypolt unsplash.com
  • 2. The Scale Of USA TODAY NETWORK Gannett is a leading local-to- national media & marketing solutions company, and the largest local media company in America, with 100+ newsrooms spanning 34 states. Who we are. 2,000+ 100+ 124M+ 1.1B 500+ JOURNALISTS NEWSROOMS UNIQUE MONTHLY USERS TOTAL PAGES
 PER MONTH DIGITAL PRODUCTS @gregsypolt
  • 3. Happy CustomerReduce Cost Addressing The Problem With Innovation Speed @gregsypolt
  • 4. Evolution of Continuous Integration Hosted CI Platform Manual On-Premise Self-Service @gregsypolt
  • 5. The Vision Shifting LEFT with DevOps and Automated Testing Code Build Test Deploy MonitorPlanCollaborate building quality into every stage Repeat It takes a COMMUNITY Dev | Staging | Prod Discovery Execute Release Review How We Test Things Shift RIGHT @gregsypolt
  • 9. CI Ownership as a Community Product EngineeringPlatform Engineering Quality Engineering </> </> Build Unit Integration Pull Request Code √ √ √ Tests √ √ √ √ √ √ Others Stage Acceptance Others √ √ √ √ √ √ Tests Production Others √ √ √ Synthetics √ √ √ Tests Build better software by improving speed, efficiency, and collaboration Teamwork Vision Goals StrategyInnovation Success MeasureElevate Ideas Culture of Quality Best Practices Collect Requirements Coach and Mentor Create Pipeline Code Maintain Infrastructure Containerization Monitoring Results Identifying Quality Gaps @gregsypolt
  • 10. Defining A Single Path To Production @gregsypoltunsplash.com
  • 11. Pre-Commit Commit Acceptance Performance Exploratory Production Pipeline Stages Infrastructure Any plan that defers testing is BROKEN … Defining a Single Path to Production @gregsypolt
  • 12. Defining a Continuous Testing Strategy @gregsypoltunsplash.com
  • 13. Define a Continuous Testing Strategy Commit Creation Pull Request Merged Pull Request Deployment Trigger Points Development Staging Production Environments Infrastructure Unit Module/Component API Integration User Acceptance Visual Accessibility Targeted Performance Stress Security Scalability Quality Playbook Test Continuously Instant Feedback on Quality Reduce Risk Build Confidence Faster Release Cycles Shift Left Disposable Infrastructure Automate Everything Application Monitoring Blue/Green Deployments Canary DevOps @gregsypolt
  • 14. Designing a CI/CD Platform @gregsypoltunsplash.com
  • 15. The CI/CD Platform PlatformEng APIs & Tools Plumbing Helm Source Control Artifact Storage Artifact Storage Dev Stage ProdD CI/CD Server CI/CD Workers Sauce Labs Applitools SumoLogic Selenoid Grid @gregsypolt
  • 17. CI/CD Standards Multiple Teams Jenkinsfile Notifications Manage SecretsWebhooksMonitoring More … Kubernetes Containers Shared Libraries Dashboards Artifact Storage Google Storage @gregsypolt
  • 18. CI/CD Plumbing Change Logs Consul HTTP Kubectl Artifactory DNS Deployment Lights Out Release Notes Tagging Vault Credentials Test Aggregator GitHub Repo Inform Semantic Versioning Build Status Color JIRA Tickets @gregsypolt 16
  • 19. Pipeline as Code Agent Stages Stage Parallel Basic Pipeline Terms Restricting Builds Retrieving Repositories Docker Image Build (Compiling Code) Running Tests Deploy to Environment Reporting Test Details Push Build Artifacts Notification Scripting Pipeline Code In general, most Pipeline scripts look more or less like this… Jenkinsfile Commit Acceptance Performance Exploratory Production @gregsypolt
  • 20. Pre-Fabricated Pipelines pipeline { agent any environment { APP_NAME = 'hello' } stages { stage('dependencies') { when { expression { opts.stageDeps == 'true' } } steps { sh "go mod download" } } stage('tests-parallel') { when { expression { opts.stageTest == 'true' } } failFast true parallel { stage('vet') { steps { script { sh "go vet ${env.APP_NAME}" } } } stage('unit') { steps { script { sh "go test -v $ {env.APP_NAME}" ... Pipeline as Code ci ([ stageDeps: 'true', stageTest: 'true', stageBuild: ‘true’, stageDeploy: ‘true’ ]) Pre-fabricated Pipeline @gregsypolt
  • 22. Shifting Ownership Responsibilities 27 LEGACY CI/CD SELF-SERVICE 13 HOSTED CI/CD PLATFORM @gregsypolt
  • 24. Availability LEGACY CI/CD SELF-SERVICE HOSTED CI/CD PLATFORM Q4 2018 Q1 2019 Q2 2019 99.97% 99.77% 99.89% @gregsypolt
  • 25. Legacy CI/CD Solution $14,000/yr AVERAGE LEGACY CI/CD COST SCALR FARM LEGACY CI/CD SELF-SERVICE @gregsypolt
  • 26. Hosted | CI/CD Without Autoscaling 80%COST REDUCTION $3,000/yr AVERAGE CI/CD COST W/O AUTOSCALING HOSTED CI/CD PLATFORM @gregsypolt
  • 27. 2 4 6 8 10 12 10:30 10:35 10:40 10:45 10:50 10:55 11:00 11:05 Active Build Count (running + queued) Worker Pod Count BULK BUILD STARTS BUILDS COMPLETE COOLDOWN BEGINS COOLDOWN ENDS Auto-Scaling Workers @gregsypolt
  • 28. Hosted | CI/CD Platform With Autoscaling 93%COST REDUCTION $960/yr AVERAGE CI/CD COST WITH AUTOSCALING HOSTED CI/CD PLATFORM @gregsypolt
  • 29. 4,000+AVERAGE BUILDS PER WEEK 600%BUILDS INCREASED HOSTED CI/CD PLATFORM Builds | Hosted CI/CD Platform @gregsypolt
  • 30. 1.08M May 97.9% 1.36M April 97.5% 1.17M March 98.5% Tests | Hosted CI/CD Platform HOSTED CI/CD PLATFORM Total Tests @gregsypolt
  • 31. The CI/CD Evolution Path Innovation Adoption Maintain You don’t know your limits until you push yourself @gregsypoltunsplash.com
  • 32. Thank You! Remember why you walked in here today It’s entirely up to you push your evolution forward Nothing feels better than new knowledge @gregsypoltunsplash.com