SlideShare uma empresa Scribd logo
1 de 21
Continuous
Integration
  Evolved
The process of continuously applying
 certain practices that the project team
   holds dear in an attempt to make the
  feedback loop as tight as possible thus
enabling the team to address issues raised
                  quickly.
CI Today
1. Build the codebase
2. Automatically test the codebase
3. Create deployment packages for the
   codebase
Boundaries in Development



Development   Testing    Operations
   Team        Team        Team
Doing more?
• Auto-releasing to test environments
       …or even production
• Ensure the code works in the deployment
  environment
• Verify multiple system integrations
• Verify infrastructure integrations
Involving the Test Team
• Current involvement usually is manual
• Automated (triggered) push deployments
• Tester pulled deployments
Involving the Test Team
Build


         Automated
           Testing

                     Release Package
                         Creation

                                            Test
                                       Environment
                                        Installation
The Test Team…
• Emails someone about success/failure
• Updates a system to indicate the build
  testing status

• Almost always is a dead end step
What We Know
• If the system has passed:
  – The current version is production ‘release-
    able’
  – The different components/systems in the
    test environment work together
What We Have
• Validated build
• Known integration components
• Known configuration
What We Should Do
• Create a ‘release-able’ snapshot of the
  components/applications verified
• Creating a production release manifest
• Log information about the verified
  component combination
Multiple Systems
Development     Testing                           Production
Environment   Environment                        Environment

   Your
               v0.0.1.11                          v0.0.1.10
                                                  v0.0.1.11
   App
                                   Known
 Internal
               v1.0.8.33          Release         v1.0.8.33
  App 1
                                  Package
 Internal
               v2.9.0.1     • Log the manifest    v2.9.0.1
  App 2
                            • Archive
Known Release Package
• Manifest of integrated systems and the
  versions required to replicate the
  environment where testing passed
• Not all systems will be installed, only
  those that changed
Known Release Package
• Archive-able
• Log-able and Auditable
  – Creation of the package
  – Installation of the package
• Doesn’t have to install unchanged pieces
• Rollback capabilities
Multiple Systems

Development     Testing                Production
Environment   Environment             Environment




                                                    Automated Smoke Test
    Your
               v0.0.1.11               v0.0.1.10
                                       v0.0.1.11
    App
                             Known
  Internal
               v1.0.8.33    Release    v1.0.8.33
   App 1
                            Package
  Internal
               v2.9.0.1                v2.9.0.1
   App 2
Operations
• Receive a known release package for
  installation
• Can audit
  – Installation timestamp
  – Installer
  – Manifest contents
• Can rollback by using the previously
  installed package
Operations cont…
• Automation
  – Installation
  – Auditing
  – Verification (smoke test)
  – Rollback
Further Thought Points
• Database change management
  – Release rollbacks?
  – Incremental == Additive
• High availability
  – Multiple installations of Known Release Package
  – Additive releases
• Environment configuration
  – Treat like an application release?
  – Version, audit, package, etc.
Assumptions
• Ability to test in isolated environments
  – Tester isolation
  – *NOT* system isolation
• Some ability to manage release packages
• Automation
Challenge Your Assumptions
• Don’t Known Release Packages seem a lot
  like a Nuget Package?
• Anything you can do in a Nuget package
  becomes part of your release

• http://haacked.com/archive/2011/01/15/buil
  ding-a-self-updating-site-using-nuget.aspx
@dbelcham
donald.belcham@igloocoder.com

Mais conteúdo relacionado

Mais procurados

Continuous integration
Continuous integrationContinuous integration
Continuous integration
amscanne
 

Mais procurados (20)

Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Jenkins introduction
Jenkins introductionJenkins introduction
Jenkins introduction
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
 
Automated Infrastructure Testing
Automated Infrastructure TestingAutomated Infrastructure Testing
Automated Infrastructure Testing
 
Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Setup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CISetup Build & Deploy with Jenkins CI
Setup Build & Deploy with Jenkins CI
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Jenkins
JenkinsJenkins
Jenkins
 
Building the Test Automation Framework - Jenkins for Testers
Building the Test Automation Framework - Jenkins for TestersBuilding the Test Automation Framework - Jenkins for Testers
Building the Test Automation Framework - Jenkins for Testers
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with Jenkins
 
InSpec - June 2018 at Open28.be
InSpec - June 2018 at Open28.beInSpec - June 2018 at Open28.be
InSpec - June 2018 at Open28.be
 
Inspec: Turn your compliance, security, and other policy requirements into au...
Inspec: Turn your compliance, security, and other policy requirements into au...Inspec: Turn your compliance, security, and other policy requirements into au...
Inspec: Turn your compliance, security, and other policy requirements into au...
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topic
 
Continuous Integration for Configuration Management
Continuous Integration for Configuration ManagementContinuous Integration for Configuration Management
Continuous Integration for Configuration Management
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Standardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamStandardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins Team
 

Destaque

Taming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOPTaming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOP
Donald Belcham
 

Destaque (9)

Source Control Abominations
Source Control AbominationsSource Control Abominations
Source Control Abominations
 
Introduction To AOP
Introduction To AOPIntroduction To AOP
Introduction To AOP
 
Reliability and Reslience
Reliability and ReslienceReliability and Reslience
Reliability and Reslience
 
Taming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOPTaming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOP
 
AOP & Patterns
AOP & PatternsAOP & Patterns
AOP & Patterns
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
SOLID Principles part 1
SOLID Principles part 1SOLID Principles part 1
SOLID Principles part 1
 
Death of the batch job - NServiceBus Sagas
Death of the batch job - NServiceBus SagasDeath of the batch job - NServiceBus Sagas
Death of the batch job - NServiceBus Sagas
 
Distributed Systems Principles
Distributed Systems PrinciplesDistributed Systems Principles
Distributed Systems Principles
 

Semelhante a Continuous Deployment

Linuxtag 2012 - continuous delivery - dream to reality
Linuxtag 2012  - continuous delivery - dream to realityLinuxtag 2012  - continuous delivery - dream to reality
Linuxtag 2012 - continuous delivery - dream to reality
Clément Escoffier
 
Java build tools
Java build toolsJava build tools
Java build tools
Sujit Kumar
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Bamdad Dashtban
 

Semelhante a Continuous Deployment (20)

Linuxtag 2012 - continuous delivery - dream to reality
Linuxtag 2012  - continuous delivery - dream to realityLinuxtag 2012  - continuous delivery - dream to reality
Linuxtag 2012 - continuous delivery - dream to reality
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Java build tools
Java build toolsJava build tools
Java build tools
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous Integration
 
Prescriptive System Security with InSpec
Prescriptive System Security with InSpecPrescriptive System Security with InSpec
Prescriptive System Security with InSpec
 
Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019
 
Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 
Continuous delivery chernivcy
Continuous delivery chernivcyContinuous delivery chernivcy
Continuous delivery chernivcy
 
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 Maven for beginners and DevOps
Introduction to Maven for beginners and DevOpsIntroduction to Maven for beginners and DevOps
Introduction to Maven for beginners and DevOps
 
Bug zillatestopiajenkins
Bug zillatestopiajenkinsBug zillatestopiajenkins
Bug zillatestopiajenkins
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
 
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
Continuous Test Automation, by Richard Langlois P. Eng. and Yuri Pechenko.
 
Octopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of CodeOctopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of Code
 
4 maven junit
4 maven junit4 maven junit
4 maven junit
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 

Mais de Donald Belcham

Design patterns you didn't know about
Design patterns you didn't know aboutDesign patterns you didn't know about
Design patterns you didn't know about
Donald Belcham
 
Programming Closer to the Iron
Programming Closer to the IronProgramming Closer to the Iron
Programming Closer to the Iron
Donald Belcham
 
The Dark Side of Code Metrics
The Dark Side of Code MetricsThe Dark Side of Code Metrics
The Dark Side of Code Metrics
Donald Belcham
 

Mais de Donald Belcham (14)

Introduction to Messaging
Introduction to MessagingIntroduction to Messaging
Introduction to Messaging
 
Advanced messaging patterns
Advanced messaging patternsAdvanced messaging patterns
Advanced messaging patterns
 
Microservices: The Nitty Gritty
Microservices: The Nitty GrittyMicroservices: The Nitty Gritty
Microservices: The Nitty Gritty
 
Microservices: A Gentle Introduction
Microservices: A Gentle IntroductionMicroservices: A Gentle Introduction
Microservices: A Gentle Introduction
 
Is There Room for Craftsmanship in Software Development
Is There Room for Craftsmanship in Software DevelopmentIs There Room for Craftsmanship in Software Development
Is There Room for Craftsmanship in Software Development
 
Reducing External Risk
Reducing External RiskReducing External Risk
Reducing External Risk
 
Performance Tuning in the Trenches
Performance Tuning in the TrenchesPerformance Tuning in the Trenches
Performance Tuning in the Trenches
 
Reliability and Resilience
Reliability and ResilienceReliability and Resilience
Reliability and Resilience
 
Design patterns you didn't know about
Design patterns you didn't know aboutDesign patterns you didn't know about
Design patterns you didn't know about
 
Programming Closer to the Iron
Programming Closer to the IronProgramming Closer to the Iron
Programming Closer to the Iron
 
Domain Driven Design Primer
Domain Driven Design PrimerDomain Driven Design Primer
Domain Driven Design Primer
 
Hacking Hardware
Hacking HardwareHacking Hardware
Hacking Hardware
 
Advanced AOP
Advanced AOPAdvanced AOP
Advanced AOP
 
The Dark Side of Code Metrics
The Dark Side of Code MetricsThe Dark Side of Code Metrics
The Dark Side of Code Metrics
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

Continuous Deployment

  • 2. The process of continuously applying certain practices that the project team holds dear in an attempt to make the feedback loop as tight as possible thus enabling the team to address issues raised quickly.
  • 3. CI Today 1. Build the codebase 2. Automatically test the codebase 3. Create deployment packages for the codebase
  • 4. Boundaries in Development Development Testing Operations Team Team Team
  • 5. Doing more? • Auto-releasing to test environments …or even production • Ensure the code works in the deployment environment • Verify multiple system integrations • Verify infrastructure integrations
  • 6. Involving the Test Team • Current involvement usually is manual • Automated (triggered) push deployments • Tester pulled deployments
  • 7. Involving the Test Team Build Automated Testing Release Package Creation Test Environment Installation
  • 8. The Test Team… • Emails someone about success/failure • Updates a system to indicate the build testing status • Almost always is a dead end step
  • 9. What We Know • If the system has passed: – The current version is production ‘release- able’ – The different components/systems in the test environment work together
  • 10. What We Have • Validated build • Known integration components • Known configuration
  • 11. What We Should Do • Create a ‘release-able’ snapshot of the components/applications verified • Creating a production release manifest • Log information about the verified component combination
  • 12. Multiple Systems Development Testing Production Environment Environment Environment Your v0.0.1.11 v0.0.1.10 v0.0.1.11 App Known Internal v1.0.8.33 Release v1.0.8.33 App 1 Package Internal v2.9.0.1 • Log the manifest v2.9.0.1 App 2 • Archive
  • 13. Known Release Package • Manifest of integrated systems and the versions required to replicate the environment where testing passed • Not all systems will be installed, only those that changed
  • 14. Known Release Package • Archive-able • Log-able and Auditable – Creation of the package – Installation of the package • Doesn’t have to install unchanged pieces • Rollback capabilities
  • 15. Multiple Systems Development Testing Production Environment Environment Environment Automated Smoke Test Your v0.0.1.11 v0.0.1.10 v0.0.1.11 App Known Internal v1.0.8.33 Release v1.0.8.33 App 1 Package Internal v2.9.0.1 v2.9.0.1 App 2
  • 16. Operations • Receive a known release package for installation • Can audit – Installation timestamp – Installer – Manifest contents • Can rollback by using the previously installed package
  • 17. Operations cont… • Automation – Installation – Auditing – Verification (smoke test) – Rollback
  • 18. Further Thought Points • Database change management – Release rollbacks? – Incremental == Additive • High availability – Multiple installations of Known Release Package – Additive releases • Environment configuration – Treat like an application release? – Version, audit, package, etc.
  • 19. Assumptions • Ability to test in isolated environments – Tester isolation – *NOT* system isolation • Some ability to manage release packages • Automation
  • 20. Challenge Your Assumptions • Don’t Known Release Packages seem a lot like a Nuget Package? • Anything you can do in a Nuget package becomes part of your release • http://haacked.com/archive/2011/01/15/buil ding-a-self-updating-site-using-nuget.aspx