SlideShare a Scribd company logo
1 of 69
Download to read offline
Designing a
Release Pipeline
Jose Luis Soria
jlsoriat@gmail.com - @jlsoriat
What is a Release Pipeline?
• Automated manifestation of
your delivery process.
• Feedback mechanism.
• Detection of unfit release
candidates.
• Pull system.
• Useful for CD or any other
delivery model.
Pipeline design considerations
• Emergent design. No BDUF.
• Start early.
• Start simple and evolve with the system.
• Begin with the most valuable assets.
• Address the bottlenecks.
#1 Define Components
What is a Component?
• A set of artifacts (binaries, dynamic code,
configuration files, other supporting files) that can
be deployed and verified together without affecting
other areas of the application.
Tips for choosing components
• Deploy and test the smallest independent entity.
• Rely on the architecture:
• Logical / physical.
• Layers / tenants.
• See the whole.
What do we need to know?
For each component:
• Meaningful name.
• Description.
• Priority / order (when to address it?)
• Source (most likely, version control.)
• Target (where it gets deployed.)
• Pre-requisites.
• Dependencies.
• Configuration tokens.
Configuration tokens
• Make a list of environment-dependent information.
• Tokenize it in the configuration.
• Gather the values for all the environments.
Component sheet
Activity: defining
components
„Our application consists on:
A web site built on top this technology stack:
• MVC framework.
• Client-side logic (HTML5, JavaScript.)
• Entity model mapped to the DB using a ORM.
• Data model residing in a DB.‰
Activity: defining
components
„Our application consists on:
A web site built on top this technology stack:
• MVC framework.
• Client-side logic (HTML5, JavaScript.)
• Entity model mapped to the DB using a ORM.
• Data model residing in a DB.
Key business logic resides on a web services layer.
We also maintain a mobile client for two platforms.‰
Activity: defining
components
„Our application consists on:
A web site built on top this technology stack:
• MVC framework.
• Client-side logic (HTML5, JavaScript.)
• Entity model mapped to the DB using a ORM.
• Data model residing in a DB.
Key business logic resides on a web services layer.
We also maintain a mobile client for two platforms.
For some operations we make calls to third-party web
services.‰
Example: component sheet
Implementation notes
• It should be possible to independently build, deploy
and test anything defined as a component.
• You should decide how dependencies will be made
available:
• Source Control.
• Artifact repositories (NuGet, Maven⁄)
• Deployed artifacts.
• Etc.
#2 Identify
sub-pipelines
Single pipeline
• A single pipeline servicing all the components and
teams.
• May be able to detect which component has
changed and operate only on that one.
One pipeline per component
• Each component has its own pipeline.
• Different pipelines may have different designs.
• Individual pipelines may fan-in to a system pipeline.
• More flexible but more complex.
One pipeline per team
• Each team has its own pipeline.
• Different pipelines may have different designs.
• Individual pipelines may fan-in to an integration
pipeline.
Mixed approach
• Different teams building different components.
• Keep it simple!
Implementation notes
• It is better to use a tool that allows to define sub-
pipelines, fan-in, fan-out, etc.
#3 Define Stages &
Orchestration
What is a Stage?
• A set of steps or activities that are performed on a
release candidate.
• I lets any release candidate advance towards
production, or discards it.
• When a release candidate passes through a stage,
our confidence on it is increased.
• It is a source for feedback.
What is Orchestration?
• It is the way we arrange the stages so release
candidates flow through them, in their way to
production.
Tips for stages & orchestration
• Feedback is the key. Arrange stages and
orchestration based on the feedback we need.
• Stages are filters.The orchestration should be
arranged to stop the pipeline if a stage fails.
• Stages can contain both manual and automated
steps.
• Stages can be manually or automatically triggered
(approvals.)
• Automate as much as possible. Including approvals.
More tips for stages &
orchestration
• Grow your pipeline wide, not long
http://bit.ly/1jsNGP5.
• Build only once.
• Use environment-agnostic binaries.
• Version everything.
What do we need to know?
For each stage:
• Meaningful name.
• Clear goal.
• Does it need a manual approval to be triggered?
• Does it need a manual verification when it has
finished?
• Sources.
• Flow (orchestration.)
Pipeline-level orchestration
(examples)
Commit Acceptance testing Manualtesting Release
Minimum pipeline
Commit Acceptance testing Release
Exploratory testing
Capacity testing Security testing
User Acceptance
testing
Complex pipeline
Fully automated
Partially automated, or manual
Legend:
Stage-level
orchestration
(example)
About sources
• Version control.
• Artifact repositories.
• Environment libraries.
Which stages do I need?
• Think about the kind of feedback you need.
• Think about what should stop a release candidate
to get to production.
• Create aValue Stream Map.
Value Stream Map (example)
Assessment Approval Planning
UAT
Release
Acceptance
tests
CodeSpecification
2 days 1 day
Value-
added
time
Wait
time
Development: cycle time ~ ?
3 days 3 days ? ?
?
?
4 days 1 day 2 days 2 weeks ? ?
Delivery: lead time ~ ?
Prevalent stages: the Commit
stage
• Eliminate early release candidates that are unfit for
production.
• Close to (or the same as) a CI build.
• Quick validations: build, unit testing, static analysis,
etc.
• Packaging.
• For Continuous Delivery, it runs on each commit
(no branches – feature toggles.)
• For other models, decide when it gets triggered
(for example, on each merge to trunk.)
Prevalent stages: the Commit
stage
http://bit.ly/1jsSkwA
Prevalent stages: the Automated
Acceptance Test stage
http://bit.ly/1jsSkwA
Prevalent stages: the Manual
Test stage
http://bit.ly/1jsSkwA
Prevalent stages:
non-Functional Testing stages
http://bit.ly/1jsSkwA
Activity: defining
stages & orchestration
„We have a basic suite of automated acceptance
tests that we plan to grow along with the system.‰
„The team does (manual) functional testing.‰
Activity: defining
stages & orchestration
„We have a basic suite of automated acceptance
tests that we plan to grow along with the system.‰
„The team does (manual) functional testing.‰
„We need to support 2,000 concurrent users.‰
Implementation notes
• Choose a tool that allows to easily model and
visualize the flow.
• Choose a tool that supports what you need for
orchestration:
• Approvals.
• Validations.
• Parallelization.
• Alerts.
• Etc.
#4 Define
environments
What is an Environment?
• A set servers, devices or any other resources we
need in order to run and validate a release
candidate in its way to production.
Tips for defining environments
• Prepare for deployment automation.
• Lock down environments. Restrict access.
• Different stages could target the same environment
if needed.
• Prepare for auto-provision.
• Make environments disposable. DonÊt turn them
into bottlenecks.
• Environments may not be tied to stages. It should
be easy to point any stage to any environment.
Activity: defining
environments
„We have a basic suite of automated acceptance
tests that we plan to grow along with the system.‰
„The team does (manual) functional testing.‰
„We need to support 2,000 concurrent users.‰
Implementation notes
• Use virtualization.
• Use cloud-based environments.
• Use tools for managing templates, configuration,
auto-provision, etc.
#5 Define Steps
What is a Step?
• Any activity that is done in the context of a stage,
that allows us to get feedback and prove the fitness
of the release candidate.
• Examples:
• Deploy a component.
• Run automated tests.
• Run manual tests.
• Update metrics.
• Alert the user of some event.
• Etc.
Tips for defining steps
• Consider:
• The goal of the stage.
• The kind of feedback you need.
• Sources.
• Targets (environments.)
• Build and package only in the Commit stage.
• Most times, deployment is present, but not always.
• (Automated) Smoke Testing should follow any
deployment.
• Think about both automated and manual steps.
Activity: defining steps
„We want to filter out anything producing static
analysis warnings.‰
„We want to try exploratory testing.‰
„We may use the same environment for load testing
and security testing‰
#6 Define automation
& tooling
Tips for step automation
• Automate everything.
• Automate everywhere (for all the environments.)
• Preference for automation:
• Fully automated steps.
• Manually triggered automatic steps.
• Manual steps.
• Build only once.
• Version everything.
• Have environment lockdown in mind.
Deployment automation
considerations
• Deploy the same way to every environment.The
target environment should be a (implicit)
parameter for the automations.
• Set up (tool-agnostic) one-click deployments.
• Treat configuration tokens as parameters for the
automations.
• Prepare for rollbacks.
Database deployment
considerations
• Database deployment is not the same as database
development.
• Decide about the deployment strategy:
• Schema & Data compare.
• Delta scripts (better for Continuous Delivery.)
• ORM tools (schema update, migrations, etc.)
Test automation considerations
• Q2 tests are not necessarily run through the UI.
• Smoke tests may be run through the UI.
• Frequently, non-functional testing can be
automated.
• Leave environments and data in a known state.
• A few things canÊt be automated (UAT & Q3
testing.)
What do we need to know
For each step to be automated:
• Automation tool or technology.
• Execution model.
• Parameters (at least youÊll have the configuration
tokens.)
• Source / target.
About execution models
• Native OS tool.
• Agent.
• Remote execution.
Activity: defining
automation & tooling
„Production environment is in an isolated network‰
„Our operations people wonÊt allow us to install
anything there‰
#7 Define execution
model, monitoring and
metrics
Continuous Delivery flow model
• Pipeline instances are created on each commit.Any
commit is a release candidate.
• One-piece continuous flow model.
• There is no way back.Any error makes the release
candidate to be discarded.
• Fixes are treated as new release candidates.They
are run through the entire pipeline from the
beginning.
Other flow models
• Pipeline instances are created as needed.A release
candidate might comprise several commits.
• Decide on the batch size. Larger batches are
cheaper but limit feedback.
• Errors might be fixed in the context of the stage
where they arise.
Monitoring the pipeline
• Transparency.
• Rely on a proper tool.
• Set up alerts for key events.
• Use a Cumulative Flow Diagram (CFD.)
• Gather metrics and act on them.
Primary metrics (direct
evidence)
• Cycle time.
• Mean Time Between Failures (MTBF.)
• Mean Time To Recover (MTTR.)
Secondary metrics
(circumstantial evidence)
• Test coverage.
• Duplication of code.
• Coupling.
• Compilation warnings.
• Code churn.
• Build frequency
• Etc.
#8 Plan for future
enhancements
Examples – DevOps culture
• Improve branching model if needed.
• Debugging optimization, symbol servers.
• Canary releases.
• Blue/green deployments.
• A/BTesting.
• Preventive profiling.
• Telemetry, analytics,Application Performance
Monitoring (APM.)
• Proactive resiliency enablement (Simian army
http://nflx.it/SPeTGj)
Example: Advanced pipeline
#9 Inspect & adapt
Continuously improve the
pipeline
• Component or architectural changes.
• New skills in the team.
• New resources, tools, environments.
• Reserve time, and make the team accountable for
improvement.
Summary
1. Define components.
2. Identify sub-pipelines.
3. Define Stages & Orchestration.
4. Define Environments.
5. Define Steps.
6. Define Automation & Tooling.
7. Define execution model, monitoring and metrics.
8. Plan for future enhancements.
9. Inspect & adapt.
Thanks!
Jose Luis Soria
Continuous Improvement Manager at Ria Financial
jlsoriat@gmail.com - @jlsoriat
http://geeks.ms/blogs/jlsoria
Slides: http://www.slideshare.net/jlsoria
http://aka.ms/releasepipeline
Get a book! #xp2014 @jlsoriat

More Related Content

What's hot

[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOpsBaruch Sadogursky
 
Continuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarContinuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarPascal Larocque
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOpsEklove Mohan
 
The Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ LinkedinThe Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ LinkedinC4Media
 
LCE13: Linaro Infrastructure Update
LCE13: Linaro Infrastructure UpdateLCE13: Linaro Infrastructure Update
LCE13: Linaro Infrastructure UpdateLinaro
 
Implementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise MiddlewareImplementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise MiddlewareXebiaLabs
 
JBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring PlatformJBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring Platformjbugkorea
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftYaniv cohen
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer DayKimihiko Kitase
 
LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015Jeffrey Habets
 
Alina Cojocariu - Flex and Android tests with Ranorex
Alina Cojocariu - Flex and Android tests with RanorexAlina Cojocariu - Flex and Android tests with Ranorex
Alina Cojocariu - Flex and Android tests with RanorexCodecamp Romania
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the DatabaseMichaela Murray
 
Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Jose Luis Soria
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXSergei Martens
 
The New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonThe New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonAll Things Open
 
Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gatesStrannik_2013
 

What's hot (20)

[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
 
Continuous integration using Jenkins and Sonar
Continuous integration using Jenkins and SonarContinuous integration using Jenkins and Sonar
Continuous integration using Jenkins and Sonar
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Preparing for DevOps
Preparing for DevOpsPreparing for DevOps
Preparing for DevOps
 
The Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ LinkedinThe Evolution of Continuous Delivery at Scale @ Linkedin
The Evolution of Continuous Delivery at Scale @ Linkedin
 
LCE13: Linaro Infrastructure Update
LCE13: Linaro Infrastructure UpdateLCE13: Linaro Infrastructure Update
LCE13: Linaro Infrastructure Update
 
Implementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise MiddlewareImplementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise Middleware
 
JBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring PlatformJBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring Platform
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day
 
Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen
Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen
Oracle 12c Launch Event 02 ADF 12c and Maven in Jdeveloper / By Aino Andriessen
 
PP_Eric_Gandt
PP_Eric_GandtPP_Eric_Gandt
PP_Eric_Gandt
 
LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015
 
Alina Cojocariu - Flex and Android tests with Ranorex
Alina Cojocariu - Flex and Android tests with RanorexAlina Cojocariu - Flex and Android tests with Ranorex
Alina Cojocariu - Flex and Android tests with Ranorex
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the Database
 
Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO
 
Apex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEXApex world 2018 continuously delivering APEX
Apex world 2018 continuously delivering APEX
 
The New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonThe New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by Python
 
Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gates
 

Viewers also liked

#Collab365 Setting up your release pipeline for SharePoint in Azure
#Collab365 Setting up your release pipeline for SharePoint in Azure#Collab365 Setting up your release pipeline for SharePoint in Azure
#Collab365 Setting up your release pipeline for SharePoint in AzureVincent Biret
 
Dev ops cd tool chains
Dev ops cd tool chainsDev ops cd tool chains
Dev ops cd tool chainsIgor Moochnick
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryMike McGarr
 
Release Management
Release Management Release Management
Release Management Vyom Labs
 
DevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerDevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerSonatype
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryJez Humble
 
Release Management: Successful Software Releases Start with a Plan
Release Management: Successful Software Releases Start with a PlanRelease Management: Successful Software Releases Start with a Plan
Release Management: Successful Software Releases Start with a Planconnielharper
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...Sonatype
 

Viewers also liked (10)

#Collab365 Setting up your release pipeline for SharePoint in Azure
#Collab365 Setting up your release pipeline for SharePoint in Azure#Collab365 Setting up your release pipeline for SharePoint in Azure
#Collab365 Setting up your release pipeline for SharePoint in Azure
 
Dev ops cd tool chains
Dev ops cd tool chainsDev ops cd tool chains
Dev ops cd tool chains
 
The power of symmetry
The power of symmetryThe power of symmetry
The power of symmetry
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Release Management
Release Management Release Management
Release Management
 
DevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerDevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for Docker
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Release Management: Successful Software Releases Start with a Plan
Release Management: Successful Software Releases Start with a PlanRelease Management: Successful Software Releases Start with a Plan
Release Management: Successful Software Releases Start with a Plan
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 

Similar to Designing a Release Pipeline

Training Slides: 103 - Basics - Simple Tungsten Clustering Installation
Training Slides: 103 - Basics - Simple Tungsten Clustering InstallationTraining Slides: 103 - Basics - Simple Tungsten Clustering Installation
Training Slides: 103 - Basics - Simple Tungsten Clustering InstallationContinuent
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayAgile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayJordi Pradel
 
KrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfKrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfQA or the Highway
 
Architecting for the cloud storage build test
Architecting for the cloud storage build testArchitecting for the cloud storage build test
Architecting for the cloud storage build testLen Bass
 
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Denim Group
 
The QA/Testing Process
The QA/Testing ProcessThe QA/Testing Process
The QA/Testing ProcessSynerzip
 
Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008Pete Schneider
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud RoadGert Drapers
 
Testing Below the Application
Testing Below the ApplicationTesting Below the Application
Testing Below the ApplicationAsh Winter
 
Bsides Knoxville - APT2
Bsides Knoxville - APT2Bsides Knoxville - APT2
Bsides Knoxville - APT2Adam Compton
 
Super chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsSuper chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsNikola Gotsev
 
Supercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsSupercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsNikola Gotsev
 
Introduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaIntroduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaAmulya Sharma
 
Grant Fritchey Justin Caldicott - Best practices for database deployments
Grant Fritchey Justin Caldicott - Best practices for database deploymentsGrant Fritchey Justin Caldicott - Best practices for database deployments
Grant Fritchey Justin Caldicott - Best practices for database deploymentsRed Gate Software
 
Configuration Management in the Cloud | AWS Public Sector Summit 2017
Configuration Management in the Cloud | AWS Public Sector Summit 2017Configuration Management in the Cloud | AWS Public Sector Summit 2017
Configuration Management in the Cloud | AWS Public Sector Summit 2017Amazon Web Services
 
Serena Release Management approach and solutions
Serena Release Management approach and solutionsSerena Release Management approach and solutions
Serena Release Management approach and solutionsSoftmart
 
Part of the DLM story: Get your Database under Source Control - SQL In The City
Part of the DLM story: Get your Database under Source Control - SQL In The City Part of the DLM story: Get your Database under Source Control - SQL In The City
Part of the DLM story: Get your Database under Source Control - SQL In The City Red Gate Software
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practicesCode Mastery
 

Similar to Designing a Release Pipeline (20)

Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Training Slides: 103 - Basics - Simple Tungsten Clustering Installation
Training Slides: 103 - Basics - Simple Tungsten Clustering InstallationTraining Slides: 103 - Basics - Simple Tungsten Clustering Installation
Training Slides: 103 - Basics - Simple Tungsten Clustering Installation
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayAgile Software Testing the Agilogy Way
Agile Software Testing the Agilogy Way
 
KrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfKrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdf
 
Architecting for the cloud storage build test
Architecting for the cloud storage build testArchitecting for the cloud storage build test
Architecting for the cloud storage build test
 
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
 
The QA/Testing Process
The QA/Testing ProcessThe QA/Testing Process
The QA/Testing Process
 
Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
Testing Below the Application
Testing Below the ApplicationTesting Below the Application
Testing Below the Application
 
Bsides Knoxville - APT2
Bsides Knoxville - APT2Bsides Knoxville - APT2
Bsides Knoxville - APT2
 
Super chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeploymentsSuper chargeyourcontiniousintegrationdeployments
Super chargeyourcontiniousintegrationdeployments
 
Supercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration DeploymentsSupercharge Your Continuous Integration Deployments
Supercharge Your Continuous Integration Deployments
 
Introduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya SharmaIntroduction to GOCD - Amulya Sharma
Introduction to GOCD - Amulya Sharma
 
Grant Fritchey Justin Caldicott - Best practices for database deployments
Grant Fritchey Justin Caldicott - Best practices for database deploymentsGrant Fritchey Justin Caldicott - Best practices for database deployments
Grant Fritchey Justin Caldicott - Best practices for database deployments
 
Configuration Management in the Cloud | AWS Public Sector Summit 2017
Configuration Management in the Cloud | AWS Public Sector Summit 2017Configuration Management in the Cloud | AWS Public Sector Summit 2017
Configuration Management in the Cloud | AWS Public Sector Summit 2017
 
Serena Release Management approach and solutions
Serena Release Management approach and solutionsSerena Release Management approach and solutions
Serena Release Management approach and solutions
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
 
Part of the DLM story: Get your Database under Source Control - SQL In The City
Part of the DLM story: Get your Database under Source Control - SQL In The City Part of the DLM story: Get your Database under Source Control - SQL In The City
Part of the DLM story: Get your Database under Source Control - SQL In The City
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 

More from Jose Luis Soria

Project Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international companyProject Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international companyJose Luis Soria
 
Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015Jose Luis Soria
 
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...Jose Luis Soria
 
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...Jose Luis Soria
 
Proyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITTProyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITTJose Luis Soria
 
ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?Jose Luis Soria
 
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valorALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valorJose Luis Soria
 
ALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresJose Luis Soria
 
Bcn devcon jose luis soria - patterns & antipatterns for delivery
Bcn devcon   jose luis soria - patterns & antipatterns for deliveryBcn devcon   jose luis soria - patterns & antipatterns for delivery
Bcn devcon jose luis soria - patterns & antipatterns for deliveryJose Luis Soria
 
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilJose Luis Soria
 
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFSALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFSJose Luis Soria
 
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaRoadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaJose Luis Soria
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria
 
Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Jose Luis Soria
 
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coachingJose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coachingJose Luis Soria
 
Cargo Cult Agile training & coaching
Cargo Cult Agile training & coachingCargo Cult Agile training & coaching
Cargo Cult Agile training & coachingJose Luis Soria
 
Agile Database Development - SDC2012
Agile Database Development - SDC2012Agile Database Development - SDC2012
Agile Database Development - SDC2012Jose Luis Soria
 
Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureJose Luis Soria
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesJose Luis Soria
 
12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...
12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...
12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...Jose Luis Soria
 

More from Jose Luis Soria (20)

Project Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international companyProject Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international company
 
Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015
 
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
 
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
 
Proyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITTProyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITT
 
ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?
 
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valorALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
 
ALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin errores
 
Bcn devcon jose luis soria - patterns & antipatterns for delivery
Bcn devcon   jose luis soria - patterns & antipatterns for deliveryBcn devcon   jose luis soria - patterns & antipatterns for delivery
Bcn devcon jose luis soria - patterns & antipatterns for delivery
 
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
 
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFSALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
 
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaRoadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
 
Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8
 
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coachingJose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
 
Cargo Cult Agile training & coaching
Cargo Cult Agile training & coachingCargo Cult Agile training & coaching
Cargo Cult Agile training & coaching
 
Agile Database Development - SDC2012
Agile Database Development - SDC2012Agile Database Development - SDC2012
Agile Database Development - SDC2012
 
Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para Azure
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 
12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...
12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...
12 Horas Visual Studio - Gestion de código y librerías compartidas con TFS y ...
 

Recently uploaded

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Designing a Release Pipeline

  • 1. Designing a Release Pipeline Jose Luis Soria jlsoriat@gmail.com - @jlsoriat
  • 2. What is a Release Pipeline? • Automated manifestation of your delivery process. • Feedback mechanism. • Detection of unfit release candidates. • Pull system. • Useful for CD or any other delivery model.
  • 3. Pipeline design considerations • Emergent design. No BDUF. • Start early. • Start simple and evolve with the system. • Begin with the most valuable assets. • Address the bottlenecks.
  • 5. What is a Component? • A set of artifacts (binaries, dynamic code, configuration files, other supporting files) that can be deployed and verified together without affecting other areas of the application.
  • 6. Tips for choosing components • Deploy and test the smallest independent entity. • Rely on the architecture: • Logical / physical. • Layers / tenants. • See the whole.
  • 7. What do we need to know? For each component: • Meaningful name. • Description. • Priority / order (when to address it?) • Source (most likely, version control.) • Target (where it gets deployed.) • Pre-requisites. • Dependencies. • Configuration tokens.
  • 8. Configuration tokens • Make a list of environment-dependent information. • Tokenize it in the configuration. • Gather the values for all the environments.
  • 10. Activity: defining components „Our application consists on: A web site built on top this technology stack: • MVC framework. • Client-side logic (HTML5, JavaScript.) • Entity model mapped to the DB using a ORM. • Data model residing in a DB.‰
  • 11. Activity: defining components „Our application consists on: A web site built on top this technology stack: • MVC framework. • Client-side logic (HTML5, JavaScript.) • Entity model mapped to the DB using a ORM. • Data model residing in a DB. Key business logic resides on a web services layer. We also maintain a mobile client for two platforms.‰
  • 12. Activity: defining components „Our application consists on: A web site built on top this technology stack: • MVC framework. • Client-side logic (HTML5, JavaScript.) • Entity model mapped to the DB using a ORM. • Data model residing in a DB. Key business logic resides on a web services layer. We also maintain a mobile client for two platforms. For some operations we make calls to third-party web services.‰
  • 14. Implementation notes • It should be possible to independently build, deploy and test anything defined as a component. • You should decide how dependencies will be made available: • Source Control. • Artifact repositories (NuGet, Maven⁄) • Deployed artifacts. • Etc.
  • 16. Single pipeline • A single pipeline servicing all the components and teams. • May be able to detect which component has changed and operate only on that one.
  • 17. One pipeline per component • Each component has its own pipeline. • Different pipelines may have different designs. • Individual pipelines may fan-in to a system pipeline. • More flexible but more complex.
  • 18. One pipeline per team • Each team has its own pipeline. • Different pipelines may have different designs. • Individual pipelines may fan-in to an integration pipeline.
  • 19. Mixed approach • Different teams building different components. • Keep it simple!
  • 20. Implementation notes • It is better to use a tool that allows to define sub- pipelines, fan-in, fan-out, etc.
  • 21. #3 Define Stages & Orchestration
  • 22. What is a Stage? • A set of steps or activities that are performed on a release candidate. • I lets any release candidate advance towards production, or discards it. • When a release candidate passes through a stage, our confidence on it is increased. • It is a source for feedback.
  • 23. What is Orchestration? • It is the way we arrange the stages so release candidates flow through them, in their way to production.
  • 24. Tips for stages & orchestration • Feedback is the key. Arrange stages and orchestration based on the feedback we need. • Stages are filters.The orchestration should be arranged to stop the pipeline if a stage fails. • Stages can contain both manual and automated steps. • Stages can be manually or automatically triggered (approvals.) • Automate as much as possible. Including approvals.
  • 25. More tips for stages & orchestration • Grow your pipeline wide, not long http://bit.ly/1jsNGP5. • Build only once. • Use environment-agnostic binaries. • Version everything.
  • 26. What do we need to know? For each stage: • Meaningful name. • Clear goal. • Does it need a manual approval to be triggered? • Does it need a manual verification when it has finished? • Sources. • Flow (orchestration.)
  • 27. Pipeline-level orchestration (examples) Commit Acceptance testing Manualtesting Release Minimum pipeline Commit Acceptance testing Release Exploratory testing Capacity testing Security testing User Acceptance testing Complex pipeline Fully automated Partially automated, or manual Legend:
  • 29. About sources • Version control. • Artifact repositories. • Environment libraries.
  • 30. Which stages do I need? • Think about the kind of feedback you need. • Think about what should stop a release candidate to get to production. • Create aValue Stream Map.
  • 31. Value Stream Map (example) Assessment Approval Planning UAT Release Acceptance tests CodeSpecification 2 days 1 day Value- added time Wait time Development: cycle time ~ ? 3 days 3 days ? ? ? ? 4 days 1 day 2 days 2 weeks ? ? Delivery: lead time ~ ?
  • 32. Prevalent stages: the Commit stage • Eliminate early release candidates that are unfit for production. • Close to (or the same as) a CI build. • Quick validations: build, unit testing, static analysis, etc. • Packaging. • For Continuous Delivery, it runs on each commit (no branches – feature toggles.) • For other models, decide when it gets triggered (for example, on each merge to trunk.)
  • 33. Prevalent stages: the Commit stage http://bit.ly/1jsSkwA
  • 34. Prevalent stages: the Automated Acceptance Test stage http://bit.ly/1jsSkwA
  • 35. Prevalent stages: the Manual Test stage http://bit.ly/1jsSkwA
  • 36. Prevalent stages: non-Functional Testing stages http://bit.ly/1jsSkwA
  • 37. Activity: defining stages & orchestration „We have a basic suite of automated acceptance tests that we plan to grow along with the system.‰ „The team does (manual) functional testing.‰
  • 38. Activity: defining stages & orchestration „We have a basic suite of automated acceptance tests that we plan to grow along with the system.‰ „The team does (manual) functional testing.‰ „We need to support 2,000 concurrent users.‰
  • 39. Implementation notes • Choose a tool that allows to easily model and visualize the flow. • Choose a tool that supports what you need for orchestration: • Approvals. • Validations. • Parallelization. • Alerts. • Etc.
  • 41. What is an Environment? • A set servers, devices or any other resources we need in order to run and validate a release candidate in its way to production.
  • 42. Tips for defining environments • Prepare for deployment automation. • Lock down environments. Restrict access. • Different stages could target the same environment if needed. • Prepare for auto-provision. • Make environments disposable. DonÊt turn them into bottlenecks. • Environments may not be tied to stages. It should be easy to point any stage to any environment.
  • 43. Activity: defining environments „We have a basic suite of automated acceptance tests that we plan to grow along with the system.‰ „The team does (manual) functional testing.‰ „We need to support 2,000 concurrent users.‰
  • 44. Implementation notes • Use virtualization. • Use cloud-based environments. • Use tools for managing templates, configuration, auto-provision, etc.
  • 46. What is a Step? • Any activity that is done in the context of a stage, that allows us to get feedback and prove the fitness of the release candidate. • Examples: • Deploy a component. • Run automated tests. • Run manual tests. • Update metrics. • Alert the user of some event. • Etc.
  • 47. Tips for defining steps • Consider: • The goal of the stage. • The kind of feedback you need. • Sources. • Targets (environments.) • Build and package only in the Commit stage. • Most times, deployment is present, but not always. • (Automated) Smoke Testing should follow any deployment. • Think about both automated and manual steps.
  • 48. Activity: defining steps „We want to filter out anything producing static analysis warnings.‰ „We want to try exploratory testing.‰ „We may use the same environment for load testing and security testing‰
  • 50. Tips for step automation • Automate everything. • Automate everywhere (for all the environments.) • Preference for automation: • Fully automated steps. • Manually triggered automatic steps. • Manual steps. • Build only once. • Version everything. • Have environment lockdown in mind.
  • 51. Deployment automation considerations • Deploy the same way to every environment.The target environment should be a (implicit) parameter for the automations. • Set up (tool-agnostic) one-click deployments. • Treat configuration tokens as parameters for the automations. • Prepare for rollbacks.
  • 52. Database deployment considerations • Database deployment is not the same as database development. • Decide about the deployment strategy: • Schema & Data compare. • Delta scripts (better for Continuous Delivery.) • ORM tools (schema update, migrations, etc.)
  • 53. Test automation considerations • Q2 tests are not necessarily run through the UI. • Smoke tests may be run through the UI. • Frequently, non-functional testing can be automated. • Leave environments and data in a known state. • A few things canÊt be automated (UAT & Q3 testing.)
  • 54. What do we need to know For each step to be automated: • Automation tool or technology. • Execution model. • Parameters (at least youÊll have the configuration tokens.) • Source / target.
  • 55. About execution models • Native OS tool. • Agent. • Remote execution.
  • 56. Activity: defining automation & tooling „Production environment is in an isolated network‰ „Our operations people wonÊt allow us to install anything there‰
  • 57. #7 Define execution model, monitoring and metrics
  • 58. Continuous Delivery flow model • Pipeline instances are created on each commit.Any commit is a release candidate. • One-piece continuous flow model. • There is no way back.Any error makes the release candidate to be discarded. • Fixes are treated as new release candidates.They are run through the entire pipeline from the beginning.
  • 59. Other flow models • Pipeline instances are created as needed.A release candidate might comprise several commits. • Decide on the batch size. Larger batches are cheaper but limit feedback. • Errors might be fixed in the context of the stage where they arise.
  • 60. Monitoring the pipeline • Transparency. • Rely on a proper tool. • Set up alerts for key events. • Use a Cumulative Flow Diagram (CFD.) • Gather metrics and act on them.
  • 61. Primary metrics (direct evidence) • Cycle time. • Mean Time Between Failures (MTBF.) • Mean Time To Recover (MTTR.)
  • 62. Secondary metrics (circumstantial evidence) • Test coverage. • Duplication of code. • Coupling. • Compilation warnings. • Code churn. • Build frequency • Etc.
  • 63. #8 Plan for future enhancements
  • 64. Examples – DevOps culture • Improve branching model if needed. • Debugging optimization, symbol servers. • Canary releases. • Blue/green deployments. • A/BTesting. • Preventive profiling. • Telemetry, analytics,Application Performance Monitoring (APM.) • Proactive resiliency enablement (Simian army http://nflx.it/SPeTGj)
  • 66. #9 Inspect & adapt
  • 67. Continuously improve the pipeline • Component or architectural changes. • New skills in the team. • New resources, tools, environments. • Reserve time, and make the team accountable for improvement.
  • 68. Summary 1. Define components. 2. Identify sub-pipelines. 3. Define Stages & Orchestration. 4. Define Environments. 5. Define Steps. 6. Define Automation & Tooling. 7. Define execution model, monitoring and metrics. 8. Plan for future enhancements. 9. Inspect & adapt.
  • 69. Thanks! Jose Luis Soria Continuous Improvement Manager at Ria Financial jlsoriat@gmail.com - @jlsoriat http://geeks.ms/blogs/jlsoria Slides: http://www.slideshare.net/jlsoria http://aka.ms/releasepipeline Get a book! #xp2014 @jlsoriat