SlideShare a Scribd company logo
1 of 42
Download to read offline
Delivery Pipelines as a
First Class Citizen
Cora Iberkleid
@ciberkleid | ciberkleid@pivotal.io
Advisory Platform Architect, Pivotal
#deliverAgile2019 | @AgileAlliance
Why It Matters
Production, production, production
awesome
product in
your dev env
ok product in
user’s hands
ok > awesome ??
Is ok really ok?
Yes, if delivery is...
Fast
Safe
Secure
So you can iterate quickly & often,
because that’s how you get from ok
to awesome IN PRODUCTION
New Measures of Success
● Release frequently
● Release independently
● Roll back independently
Stand on the Shoulders of Giants
● Build on a layers of modern,
structured automation
● Employ modern coding & testing
practices
● Don’t reinvent the wheel!
The Software Defined Delivery Manifesto
● Delivery is not a detail
● Time to apply our core skills to our own work
Continuous Delivery Foundation (CDF)
CI vs CD
CI vs……………………………. CD
CI Pipeline
release branch
CI Pipeline
master branch
Artifact
Repo
CD Pipeline
master branch
test
stage
prod
Source
Code
Repo
An Example of CI vs CD Tooling
Stateless: Rather than sharing state, every task
runs in its own container, controlling its own
dependencies.
Ephemeral: Clean and consistent builds.
Minimizes test infrastructure to maintain and gives
you flexibility to scale with the cloud.
Continuous integration: Track versions of
external artifacts used for CI (e.g., Git, S3, docker
image). Build components expressed as code with
simple modeling of modular components.
Flexible workflow automation: Extensible for
compliance or other customized tasks in a
pipeline.
Stateful: Maintains awareness of the topography
(multiple clouds, PCF Foundations, etc.) and
keeps record of all pipeline activities for
compliance and audit.
Application inventory: Maintains inventory of
deployed applications, supporting activities like
rollback, canary analysis and identifying security
vulnerabilities.
Sophisticated deployment scenarios: Canary
deploys, red/black or blue/green deploys,
progressive deployments (e.g., by time zone),
multi-cloud/PCF Foundation deployments.
CI Best Practices
● Simple
● Consistent
● Early
● Follow cloud native / 12-factor principles
○ Boundaries to facilitate independent release cycles
○ Repository should contain everything necessary for build
○ Config management
○ Separate build, release, run stages
■ Containerization is plumbing - move it to release
● API-Driven Development
○ Use APIs to design / define component interactions
○ Limit the exposed surface area of your application
○ A good API decouples the “what” from the “how”
● Check for back compatibility
● Use circuit breakers
CI Best Practices
● Simple
● Consistent
● Early
● Leverage modern frameworks
● Convention over configuration
● Establish basic standards for testing organization
○ Naming conventions for test class packages
○ Naming conventions for maven/gradle profiles
CI Best Practices
● Simple
● Consistent
● Early
● Shift as much testing left into CI as possible
● Use contract-based stubs for API testing
● Check for breaking API changes
● Check for breaking database schema changes
CD Best Practices
● Simple
● Consistent
● Easy
● Leverage the highest level of abstraction possible
for the workload runtime
○ Apps with sufficient cloud maturity can be containerized
with an off-the-shelf process (e.g. Buildpacks)
○ Containerizing is plumbing, not value-add
● Cloud Foundry is a great example of a high
abstraction level runtime target
○ OSS, multi-cloud
○ Includes Buildpacks for containerization
○ Full stack automation between IaaS and app
○ Simple API-based service provisioning, too!
CD Best Practices
● Simple
● Consistent
● Easy
● Leverage purpose-built, cloud-oriented CD tooling
○ Avoid using a CI tool for CD
■ CI for getting started, team-centric CI/CD
■ Expensive (CI runs jobs individually)
■ Lack org-centric views and capabilities
● Spinnaker is a great example of a modern,
purpose-built CD tool for the cloud(s)
○ OSS, multi-cloud
○ Multi-platform integrations
○ Application Inventory
○ Efficient resource consumption
CD Best Practices
● Simple
● Consistent
● Easy
● With good CI practices and the right choice of CD
tooling, sophisticated techniques can be easy
○ Blue/green, canary, and progressive deployment strategies
○ Rollbacks, canary analysis
○ Compliance, auditing, and security vulnerability
identification
Spinnaker Integrations
Cloud Providers
App Engine
Amazon Web Services
Azure
Cloud Foundry
DC/OS
Google Compute Engine
Kubernetes
Openstack
Oracle
CI Systems
Jenkins
Travis CI
Wercker
Concourse (coming soon)
Artifact Support
Docker
Google Cloud Storage
GitHub
HTTP
S3
Monitoring
Datadog
Prometheus
Stackdriver
Atlas
SignalFx
(10+ more on
roadmap)Notifications
Email
HipChat
Slack
SMS via Twilio
Application-centric Control Plane
CI for APIs
Step 1: Agree on API Contract
Consumer Producer
API v1
Step 1: Codify the Contract
Consumer Producer
API v1
pull request
Contract.make {
description("""
should return a fortune string
""")
request {
method GET()
url "/"
}
response {
status 200
body "foo fortune"
}
}
Contract.make {
description("""
should return a fortune string
""")
request {
method GET()
url "/"
}
response {
status 200
body "foo fortune"
}
}
Tests Can* Be Auto-generated
* e.g. Spring Cloud Contract
Why is That Beneficial?
● Producer can easily ensure it complies with the contract
● Efficient
● Repeatable
● Reliable
But Wait… There’s More
● Producer can easily check for API back-compatibility
○ Use an older contract to generate tests – run them against your new code
○ If the tests pass, you won’t break older clients
○ WIN: producer can release to production independently of consumer release schedule
● Even better: do this for N older contracts
○ Guarantee API back-compatibility for a range of previous contract versions
● Sounds cool, how easy is it?
A Stub Jar is also Auto-Generated. Just publish it.
Producer uses the contract in the stub to
re-generate tests and runs them against
the new code base…
.... for N* number of older contracts
* where N is a small, manageable number
What’s inside?
contract (groovy)
stub (json)
It’s Also Good for the Consumer
Consumer can use the stub to mock out
the producer…
.... for N* number of older stubs
* where N is a small, manageable number
What’s inside?
contract (groovy)
stub (json)
Benefits to the Consumer
● The mock is more reliable
● The mock is available early
● Consumer can easily ensure it complies with the contract
● Consumer can validate cross-compatibility using older stubs
● Consumer will still work if producer needs to roll back
● WIN: consumer can release to production independently of producer release schedule
The Heart of the API Testing (local versions)
######## API CHECK: PRODUCER
./mvnw clean verify -Papicompatibility -Dproduction.version=blue -Dcontracts.mode=LOCAL
######## API CHECK: CONSUMER
./mvnw clean test -Dstubrunner.ids=com.example:producer-app:blue -Dstubrunner.stubs-mode=LOCAL
CI for DB Schemas
Database Schema Versioning & Migration
Application
Database
v1
v1
● Frameworks such as Flyway and
Liquibase handle version schema
tracking and migrations
● Write tests to validate code against
the data store
Database Schema Versioning & Migration
Application
Database
v1
v2
● Test new code against new db schema
● Check out older app code and test that
against the new db schema
.... for N* number of older app versions
No More Database Rollback Nightmares
● Ensure the app can roll back in production without having to roll back the
database
● Enable blue/green deployments to production as app versions share a
database
● Can do this in CI using an in-memory database
● Stash away the new migration scripts
● Check out the old code
● Test the old code using the new db migration files
● WIN: breaking database schema changes can be caught earlier in the process
The Heart of the DB Schema Testing
######## DB CHECK
cd ../app-blue;
./mvnw clean test -Dspring.flyway.locations=filesystem:../app-green/src/main/resources/db/migration
CD Deployment Strategies
Advanced Deployment Strategies
● Blue/green
● Automated canary analysis
● Rollbacks
Verifying back compatibility enables you to take
advantage of these advanced deployment strategies
Metrics-driven Canary Analysis for Prod Deployment
NetFlix Tech Blog: https://medium.com/netflix-techblog/automated-canary-analysis-at-netflix-with-kayenta-3260bc7acc69
CF Summit Talk & Demo: https://www.youtube.com/watch?v=9C8m7n_sG38&feature=youtu.be
Ensures your applications meet
your SLAs
Yet Another Layer of Abstraction
Code Your Pipeline - Emergent Options
● Spin CLI
● Spinnaker Managed Pipeline Templates
● Canal (in development)
○ Kotlin and Java DSL for generating Spinnaker pipelines
○ Can manage both pipelines and templates
○ Potential for integration with other CI/CD tools in the future
○ Ability to validate pipelines structure programmatically
● Atomist
● Cloud Pipelines (as a reference for CI in particular)
In Summary…
● Keep your eye on the prize
○ Production is the place to be
○ Frequent releases
○ Independent release and rollback
● Keep it simple
○ Choose tools and frameworks that will help you
○ Avoid unnecessary complexity
● CI and CD are substantially different
○ Shift left into CI - cheaper, earlier, and under developer control
○ A purpose-built CD tool has a lot built in and is more efficient
Speaking of
Giants
A Word of Gratitude
For their guidance, help, and support
(in descending order of consecutive
consonants in surname):
Marcin Grzejszczak
Jon Schneider
Olga Kundzich
Clayton McCoy
Richard Seroter
THANK YOU!
Demo guide:
https://github.com/ciberkleid/cna-demo-setup
Slides: https://www.slideshare.net/ciberkleid/delivery-pipelines-as-a-first-class-citizen-deliveragile2019

More Related Content

What's hot

Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOpsDaniel Oh
 
Operational Transformation: Teachers’ Journey from App Servers to VMware Tanzu
Operational Transformation: Teachers’ Journey from App Servers to VMware TanzuOperational Transformation: Teachers’ Journey from App Servers to VMware Tanzu
Operational Transformation: Teachers’ Journey from App Servers to VMware TanzuVMware Tanzu
 
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...Splunk
 
Spring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesSpring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesVMware Tanzu
 
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...OlyaSurits
 
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaAzure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaEdureka!
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsGlobalLogic Ukraine
 
Observe and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git opsObserve and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git opsWeaveworks
 
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...DevOps_Fest
 
Devops certification training course
Devops certification training courseDevops certification training course
Devops certification training courseRadsS1
 
BENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICS
BENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICSBENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICS
BENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICSbrtechnosoft2018
 
DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...
DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...
DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...Bosnia Agile
 
Oracle Cloud With Azure DevOps Pipelines
Oracle Cloud With Azure DevOps PipelinesOracle Cloud With Azure DevOps Pipelines
Oracle Cloud With Azure DevOps PipelinesJohan Louwers
 
Transformational DevOps with AWS Native Tools
Transformational DevOps with AWS Native ToolsTransformational DevOps with AWS Native Tools
Transformational DevOps with AWS Native ToolsBhuvaneswari Subramani
 
Measuring ROI and Driving Adoption of TAS in an Enterprise
Measuring ROI and Driving Adoption of TAS in an EnterpriseMeasuring ROI and Driving Adoption of TAS in an Enterprise
Measuring ROI and Driving Adoption of TAS in an EnterpriseVMware Tanzu
 
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)VMware Tanzu
 
Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...OutSystems
 

What's hot (20)

Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOps
 
Demystifying DevOps
Demystifying DevOpsDemystifying DevOps
Demystifying DevOps
 
Operational Transformation: Teachers’ Journey from App Servers to VMware Tanzu
Operational Transformation: Teachers’ Journey from App Servers to VMware TanzuOperational Transformation: Teachers’ Journey from App Servers to VMware Tanzu
Operational Transformation: Teachers’ Journey from App Servers to VMware Tanzu
 
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...
Data-Driven DevOps: Improve Velocity and Quality of Software Delivery with Me...
 
Spring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesSpring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the Masses
 
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
Cloud Native Testing, 2020 Edition: A Modern Blueprint for Pre-production Tes...
 
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | EdurekaAzure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
Azure Pipeline Tutorial | Azure DevOps Tutorial | Edureka
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOps
 
Observe and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git opsObserve and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git ops
 
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
 
CI/CD@Scale
CI/CD@ScaleCI/CD@Scale
CI/CD@Scale
 
CI/CD on AWS
CI/CD on AWSCI/CD on AWS
CI/CD on AWS
 
Devops certification training course
Devops certification training courseDevops certification training course
Devops certification training course
 
BENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICS
BENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICSBENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICS
BENEFIT OF FLUTTER APP DEVELOPMENT - INFOGRAPHICS
 
DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...
DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...
DevOps Transformation in Microsoft – Case Study by Ognjen Bajic and Ana Roje ...
 
Oracle Cloud With Azure DevOps Pipelines
Oracle Cloud With Azure DevOps PipelinesOracle Cloud With Azure DevOps Pipelines
Oracle Cloud With Azure DevOps Pipelines
 
Transformational DevOps with AWS Native Tools
Transformational DevOps with AWS Native ToolsTransformational DevOps with AWS Native Tools
Transformational DevOps with AWS Native Tools
 
Measuring ROI and Driving Adoption of TAS in an Enterprise
Measuring ROI and Driving Adoption of TAS in an EnterpriseMeasuring ROI and Driving Adoption of TAS in an Enterprise
Measuring ROI and Driving Adoption of TAS in an Enterprise
 
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
 
Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...
Automating Your Way to Greatness by Combining OutSystems CI/CD with the Power...
 

Similar to Delivery Pipelines as a First Class Citizen @deliverAgile2019

Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseVMware Tanzu
 
Evaluating Cloud Native Storage Vendors - DoK Talks #147
Evaluating Cloud Native Storage Vendors - DoK Talks #147Evaluating Cloud Native Storage Vendors - DoK Talks #147
Evaluating Cloud Native Storage Vendors - DoK Talks #147DoKC
 
CI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformCI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformDevOps Indonesia
 
CI/CD patterns for cloud native apps
CI/CD patterns for  cloud native appsCI/CD patterns for  cloud native apps
CI/CD patterns for cloud native appsHelder Klemp
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Richard Bullington-McGuire
 
Components of CI/CD in DevOps
Components of CI/CD in DevOpsComponents of CI/CD in DevOps
Components of CI/CD in DevOpssunil173422
 
Free GitOps Workshop
Free GitOps WorkshopFree GitOps Workshop
Free GitOps WorkshopWeaveworks
 
Journey Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment MaturityJourney Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment MaturityAltoros
 
GCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native ArchitecturesGCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native Architecturesnine
 
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Борис Зора
 
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationCloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationVMware Tanzu
 
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...Haggai Philip Zagury
 
Path To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfPath To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfpCloudy
 
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"Daniel Bryant
 
CICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureCICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureRatan Das
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Vietnam Open Infrastructure User Group
 
How To Build Kubernetes Policies To Ensure Compliance for Databases.pptx
How To Build Kubernetes Policies To Ensure Compliance for Databases.pptxHow To Build Kubernetes Policies To Ensure Compliance for Databases.pptx
How To Build Kubernetes Policies To Ensure Compliance for Databases.pptxLibbySchulze
 
Enterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up BudgetEnterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up BudgetDevOps.com
 
Common blind spots on the journey to production vijay raghavan aravamudhan
Common blind spots on the journey to production  vijay raghavan aravamudhanCommon blind spots on the journey to production  vijay raghavan aravamudhan
Common blind spots on the journey to production vijay raghavan aravamudhanXP Conference India
 
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)Weaveworks
 

Similar to Delivery Pipelines as a First Class Citizen @deliverAgile2019 (20)

Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
 
Evaluating Cloud Native Storage Vendors - DoK Talks #147
Evaluating Cloud Native Storage Vendors - DoK Talks #147Evaluating Cloud Native Storage Vendors - DoK Talks #147
Evaluating Cloud Native Storage Vendors - DoK Talks #147
 
CI/CD on Google Cloud Platform
CI/CD on Google Cloud PlatformCI/CD on Google Cloud Platform
CI/CD on Google Cloud Platform
 
CI/CD patterns for cloud native apps
CI/CD patterns for  cloud native appsCI/CD patterns for  cloud native apps
CI/CD patterns for cloud native apps
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
Components of CI/CD in DevOps
Components of CI/CD in DevOpsComponents of CI/CD in DevOps
Components of CI/CD in DevOps
 
Free GitOps Workshop
Free GitOps WorkshopFree GitOps Workshop
Free GitOps Workshop
 
Journey Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment MaturityJourney Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment Maturity
 
GCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native ArchitecturesGCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native Architectures
 
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
 
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous IntegrationCloud-Native Fundamentals: Accelerating Development with Continuous Integration
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
 
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
 
Path To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdfPath To Continuous Test Automation Using CICD Pipeline.pdf
Path To Continuous Test Automation Using CICD Pipeline.pdf
 
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
 
CICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureCICD Pipeline - AWS Azure
CICD Pipeline - AWS Azure
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
 
How To Build Kubernetes Policies To Ensure Compliance for Databases.pptx
How To Build Kubernetes Policies To Ensure Compliance for Databases.pptxHow To Build Kubernetes Policies To Ensure Compliance for Databases.pptx
How To Build Kubernetes Policies To Ensure Compliance for Databases.pptx
 
Enterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up BudgetEnterprise-Grade DevOps Solutions for a Start Up Budget
Enterprise-Grade DevOps Solutions for a Start Up Budget
 
Common blind spots on the journey to production vijay raghavan aravamudhan
Common blind spots on the journey to production  vijay raghavan aravamudhanCommon blind spots on the journey to production  vijay raghavan aravamudhan
Common blind spots on the journey to production vijay raghavan aravamudhan
 
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
 

Recently uploaded

CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 

Recently uploaded (20)

CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 

Delivery Pipelines as a First Class Citizen @deliverAgile2019

  • 1. Delivery Pipelines as a First Class Citizen Cora Iberkleid @ciberkleid | ciberkleid@pivotal.io Advisory Platform Architect, Pivotal #deliverAgile2019 | @AgileAlliance
  • 3. Production, production, production awesome product in your dev env ok product in user’s hands ok > awesome ??
  • 4. Is ok really ok? Yes, if delivery is... Fast Safe Secure So you can iterate quickly & often, because that’s how you get from ok to awesome IN PRODUCTION
  • 5. New Measures of Success ● Release frequently ● Release independently ● Roll back independently
  • 6. Stand on the Shoulders of Giants ● Build on a layers of modern, structured automation ● Employ modern coding & testing practices ● Don’t reinvent the wheel!
  • 7. The Software Defined Delivery Manifesto ● Delivery is not a detail ● Time to apply our core skills to our own work
  • 10. CI vs……………………………. CD CI Pipeline release branch CI Pipeline master branch Artifact Repo CD Pipeline master branch test stage prod Source Code Repo
  • 11. An Example of CI vs CD Tooling Stateless: Rather than sharing state, every task runs in its own container, controlling its own dependencies. Ephemeral: Clean and consistent builds. Minimizes test infrastructure to maintain and gives you flexibility to scale with the cloud. Continuous integration: Track versions of external artifacts used for CI (e.g., Git, S3, docker image). Build components expressed as code with simple modeling of modular components. Flexible workflow automation: Extensible for compliance or other customized tasks in a pipeline. Stateful: Maintains awareness of the topography (multiple clouds, PCF Foundations, etc.) and keeps record of all pipeline activities for compliance and audit. Application inventory: Maintains inventory of deployed applications, supporting activities like rollback, canary analysis and identifying security vulnerabilities. Sophisticated deployment scenarios: Canary deploys, red/black or blue/green deploys, progressive deployments (e.g., by time zone), multi-cloud/PCF Foundation deployments.
  • 12. CI Best Practices ● Simple ● Consistent ● Early ● Follow cloud native / 12-factor principles ○ Boundaries to facilitate independent release cycles ○ Repository should contain everything necessary for build ○ Config management ○ Separate build, release, run stages ■ Containerization is plumbing - move it to release ● API-Driven Development ○ Use APIs to design / define component interactions ○ Limit the exposed surface area of your application ○ A good API decouples the “what” from the “how” ● Check for back compatibility ● Use circuit breakers
  • 13. CI Best Practices ● Simple ● Consistent ● Early ● Leverage modern frameworks ● Convention over configuration ● Establish basic standards for testing organization ○ Naming conventions for test class packages ○ Naming conventions for maven/gradle profiles
  • 14. CI Best Practices ● Simple ● Consistent ● Early ● Shift as much testing left into CI as possible ● Use contract-based stubs for API testing ● Check for breaking API changes ● Check for breaking database schema changes
  • 15. CD Best Practices ● Simple ● Consistent ● Easy ● Leverage the highest level of abstraction possible for the workload runtime ○ Apps with sufficient cloud maturity can be containerized with an off-the-shelf process (e.g. Buildpacks) ○ Containerizing is plumbing, not value-add ● Cloud Foundry is a great example of a high abstraction level runtime target ○ OSS, multi-cloud ○ Includes Buildpacks for containerization ○ Full stack automation between IaaS and app ○ Simple API-based service provisioning, too!
  • 16. CD Best Practices ● Simple ● Consistent ● Easy ● Leverage purpose-built, cloud-oriented CD tooling ○ Avoid using a CI tool for CD ■ CI for getting started, team-centric CI/CD ■ Expensive (CI runs jobs individually) ■ Lack org-centric views and capabilities ● Spinnaker is a great example of a modern, purpose-built CD tool for the cloud(s) ○ OSS, multi-cloud ○ Multi-platform integrations ○ Application Inventory ○ Efficient resource consumption
  • 17. CD Best Practices ● Simple ● Consistent ● Easy ● With good CI practices and the right choice of CD tooling, sophisticated techniques can be easy ○ Blue/green, canary, and progressive deployment strategies ○ Rollbacks, canary analysis ○ Compliance, auditing, and security vulnerability identification
  • 18. Spinnaker Integrations Cloud Providers App Engine Amazon Web Services Azure Cloud Foundry DC/OS Google Compute Engine Kubernetes Openstack Oracle CI Systems Jenkins Travis CI Wercker Concourse (coming soon) Artifact Support Docker Google Cloud Storage GitHub HTTP S3 Monitoring Datadog Prometheus Stackdriver Atlas SignalFx (10+ more on roadmap)Notifications Email HipChat Slack SMS via Twilio
  • 21. Step 1: Agree on API Contract Consumer Producer API v1
  • 22. Step 1: Codify the Contract Consumer Producer API v1 pull request Contract.make { description(""" should return a fortune string """) request { method GET() url "/" } response { status 200 body "foo fortune" } } Contract.make { description(""" should return a fortune string """) request { method GET() url "/" } response { status 200 body "foo fortune" } }
  • 23. Tests Can* Be Auto-generated * e.g. Spring Cloud Contract
  • 24. Why is That Beneficial? ● Producer can easily ensure it complies with the contract ● Efficient ● Repeatable ● Reliable
  • 25. But Wait… There’s More ● Producer can easily check for API back-compatibility ○ Use an older contract to generate tests – run them against your new code ○ If the tests pass, you won’t break older clients ○ WIN: producer can release to production independently of consumer release schedule ● Even better: do this for N older contracts ○ Guarantee API back-compatibility for a range of previous contract versions ● Sounds cool, how easy is it?
  • 26. A Stub Jar is also Auto-Generated. Just publish it. Producer uses the contract in the stub to re-generate tests and runs them against the new code base… .... for N* number of older contracts * where N is a small, manageable number What’s inside? contract (groovy) stub (json)
  • 27. It’s Also Good for the Consumer Consumer can use the stub to mock out the producer… .... for N* number of older stubs * where N is a small, manageable number What’s inside? contract (groovy) stub (json)
  • 28. Benefits to the Consumer ● The mock is more reliable ● The mock is available early ● Consumer can easily ensure it complies with the contract ● Consumer can validate cross-compatibility using older stubs ● Consumer will still work if producer needs to roll back ● WIN: consumer can release to production independently of producer release schedule
  • 29. The Heart of the API Testing (local versions) ######## API CHECK: PRODUCER ./mvnw clean verify -Papicompatibility -Dproduction.version=blue -Dcontracts.mode=LOCAL ######## API CHECK: CONSUMER ./mvnw clean test -Dstubrunner.ids=com.example:producer-app:blue -Dstubrunner.stubs-mode=LOCAL
  • 30. CI for DB Schemas
  • 31. Database Schema Versioning & Migration Application Database v1 v1 ● Frameworks such as Flyway and Liquibase handle version schema tracking and migrations ● Write tests to validate code against the data store
  • 32. Database Schema Versioning & Migration Application Database v1 v2 ● Test new code against new db schema ● Check out older app code and test that against the new db schema .... for N* number of older app versions
  • 33. No More Database Rollback Nightmares ● Ensure the app can roll back in production without having to roll back the database ● Enable blue/green deployments to production as app versions share a database ● Can do this in CI using an in-memory database ● Stash away the new migration scripts ● Check out the old code ● Test the old code using the new db migration files ● WIN: breaking database schema changes can be caught earlier in the process
  • 34. The Heart of the DB Schema Testing ######## DB CHECK cd ../app-blue; ./mvnw clean test -Dspring.flyway.locations=filesystem:../app-green/src/main/resources/db/migration
  • 36. Advanced Deployment Strategies ● Blue/green ● Automated canary analysis ● Rollbacks Verifying back compatibility enables you to take advantage of these advanced deployment strategies
  • 37. Metrics-driven Canary Analysis for Prod Deployment NetFlix Tech Blog: https://medium.com/netflix-techblog/automated-canary-analysis-at-netflix-with-kayenta-3260bc7acc69 CF Summit Talk & Demo: https://www.youtube.com/watch?v=9C8m7n_sG38&feature=youtu.be Ensures your applications meet your SLAs
  • 38. Yet Another Layer of Abstraction
  • 39. Code Your Pipeline - Emergent Options ● Spin CLI ● Spinnaker Managed Pipeline Templates ● Canal (in development) ○ Kotlin and Java DSL for generating Spinnaker pipelines ○ Can manage both pipelines and templates ○ Potential for integration with other CI/CD tools in the future ○ Ability to validate pipelines structure programmatically ● Atomist ● Cloud Pipelines (as a reference for CI in particular)
  • 40. In Summary… ● Keep your eye on the prize ○ Production is the place to be ○ Frequent releases ○ Independent release and rollback ● Keep it simple ○ Choose tools and frameworks that will help you ○ Avoid unnecessary complexity ● CI and CD are substantially different ○ Shift left into CI - cheaper, earlier, and under developer control ○ A purpose-built CD tool has a lot built in and is more efficient
  • 41. Speaking of Giants A Word of Gratitude For their guidance, help, and support (in descending order of consecutive consonants in surname): Marcin Grzejszczak Jon Schneider Olga Kundzich Clayton McCoy Richard Seroter
  • 42. THANK YOU! Demo guide: https://github.com/ciberkleid/cna-demo-setup Slides: https://www.slideshare.net/ciberkleid/delivery-pipelines-as-a-first-class-citizen-deliveragile2019