SlideShare une entreprise Scribd logo
1  sur  68
Continuous Delivery
                           Applied

Mike McGarr
jmcgarr@gmail.com
@jmichaelmcgarr
http://earlyandoften.wordpress.com
http://www.meetup.com/DC-continuous-integration/
About Me
• J. Michael (Mike) McGarr
• 11 years as an IT consultant
• Director of DevOps for Learn, Blackboard
• Founder of the DC Continuous Integration,
  Delivery, and Deployment Meetup




                                              2
Continuous Delivery is…

…a set of practices and principles aimed at,
building, testing, and releasing software
faster and more frequently.




                                           3
4
5
“Our highest priority is to satisfy the
customer through early and
continuous delivery of valuable
software.”
                            - First of the Twelve
          Principles behind the Agile Manifesto




                                                    6
Quality   or Speed



                     7
Cycle Time

“How long would it take your organization to
deploy a change [to production] that involves
just one single line of code? Do you do this on a
repeatable, reliable basis?”
                          - Mary and Tom Poppendieck,
                 Implementing Lean Software Development




                                                      8
The Last Mile

        Manual Deployments
Insufficient Configuration Management
Infrequent, Error Prone Deployments



                                        9
Stressful
Releases




       10
Frequent Automated
Deployments




                     http://flic.kr/p/29Ree
                                       11
Always Production Ready




                          12
Continuous Deployment

           Deployment Pipelines

         Deployment Automation



Configuration   Continuous
Management
                                  Testing
                Integration


                   Agile

                                            13
Deployment Pipelines




http://www.fotopedia.com/users/chmehl   14
Deployment Pipelines

A Deployment Pipeline is an automated
manifestation of your process for getting
software from version control into the
hands of your users.




                     15
Deployment Pipelines
  (aka Build Pipelines)




                          16
Continuous what?


Continuous     Continuous   Continuous
Integration     Delivery    Deployment




                                     17
Where do I start?
Understand your Process




  http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html
                                                                       19
Understand your Organization




                               20
Developers




         http://flic.kr/p/5cK2
                                 21
Test Driven Development




http://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx   22
Evolutionary Design




                      23
Automate the Build




                     24
Static Code Analysis




       CheckStyle


                       25
Technical Debt




                 26
The Team




           27
Agile




        28
Continuous Integration




                         29
Continuous Integration
  Check-in Daily
  Commit to Trunk
  Automate the Build
  Keep the Build Fast
  Every Commit results in Build
  Test in Clone of Production
  Automate Deployment

                                  30
Build Pipeline in Jenkins




                            31
Testing




          32
Types of Tests




                 33
Test Strategy




Taken from Growing Object-Oriented Software, Guided by Tests
                                                               34
Testing is not a Phase




                         http://flic.kr/p/6bcg   35
Specification by Example




                           36
Specification by Example




                           37
Automated Performance Testing




                                38
Configuration Management




                           39
Version Control




                  40
Build Once, Deploy Many




                          41
Externalize Configuration



 ESCAPE           Database




                             42
Artifact Repositories




                        43
Traceability




               44
Versioning Numbers




                     45
Branch by Abstraction




                        46
Deploying
        47
Automated Deployments




                        48
Code Deployments
       1.   Push New Binary to Server
       2.   Stop Server
       3.   Archive Old Binary
       4.   Deploy New Binary
       5.   Start Server




                                   49
Version your Database




                        50
Database Deployments

                      HTML    .sql
                                     Production
                DBA



  DB
Change                                  Test

  DB
           Version        Build
Change
           Control       Server

 DB                                     Dev
Change




                                                  51
52
DevOps




http://www.agileweboperations.com/lean-agile-devops-related

                                                              53
DevOps: it’s about culture




http://dev2ops.org/2012/10/devops-transformation-workshop-for-technical-managers/
                                                                           54
Infrastructure as Code




                         55
Puppet




         56
Vagrant




          57
Monitoring (sucks)




  https://github.com/monitoringsucks

                                       58
Continuous Deployment




                        59
Contact Me


Mike McGarr
jmcgarr@gmail.com
@jmichaelmcgarr
http://earlyandoften.wordpress.com




                                     60
Further Reading
• Continuous Delivery: Reliable Software Releases through Build, Test
  and Deployment Automation, by Jez Humble and David Farley -
  http://www.amazon.com/Continuous-Delivery-Deployment-Automation-
  Addison-Wesley/dp/0321601912
• Continuous Integration, By Paul M Duvall -
  http://www.amazon.com/Continuous-Integration-Improving-Software-
  Reducing/dp/0321336380
• Refactoring Databases, By Scott Ambler and Pramod Sadalage -
  http://www.amazon.com/Refactoring-Databases-Evolutionary-
  paperback-Addison-Wesley/dp/0321774515
• Refactoring, By Martin Fowler - http://www.amazon.com/Refactoring-
  Improving-Design-Existing-Code/dp/0201485672
• Growing Object-Oriented Software, Guided by Tests, by Steven
  Freeman and Nat Pryce - http://www.amazon.com/Growing-Object-
  Oriented-Software-Guided-Tests/dp/0321503627


                                                                        61
Further Reading
• Extreme Programming Explained, by Kent Beck -
  http://www.amazon.com/Extreme-Programming-Explained-Embrace-
  Change/dp/0201616416
• Release It!, by Michael Nygard -
  http://pragprog.com/book/mnee/release-it
• xUnit Test Patterns, by Gerard Meszaros -
  http://www.amazon.com/xUnit-Test-Patterns-Refactoring-
  Code/dp/0131495054
• Working Effectively with Legacy Code, by Michael Feathers -
  http://www.amazon.com/Working-Effectively-Legacy-Michael-
  Feathers/dp/0131177052
• Agile Testing, by Lisa Crispin and Janet Gregory -
  http://www.amazon.com/Agile-Testing-Practical-Guide-
  Testers/dp/0321534468



                                                                 62
Further Reading
• Test Driven Development (TDD) – http://en.wikipedia.org/wiki/Test-
  driven_development
• Introducing BDD, by Dan North – http://dannorth.net/introducing-bdd/
• Agile Manifesto – http://agilemanifesto.org/
• Scrum – http://www.scrumalliance.org/learn_about_scrum
• Continuous Integration, by Martin Fowler –
  http://martinfowler.com/articles/continuousIntegration.html
• Specification by Example, by Gojko Adzic -
  http://specificationbyexample.com/
• Build Pipelines - http://www.magpiebrain.com/2009/12/13/a-brief-and-
  incomplete-history-of-build-pipelines/
• Implementing Lean Software Development, by Mary and Tom
  Poppendieck - http://www.amazon.com/Implementing-Lean-Software-
  Development-Concept/dp/0321437381



                                                                         63
Further Reading
• Maven Releases on Steriods, by Axel Fontaine –
  http://www.axelfontaine.com/2011/01/maven-releases-on-steroids-
  adios.html
• What is in a Name? Usually a version number, actually., by James
  Betteley - http://jamesbetteley.wordpress.com/2011/07/07/what-is-in-a-
  name-usually-a-version-number-actually/
• Build Once, Deploy Many -
  http://earlyandoften.wordpress.com/2010/09/09/build-once-deploy-
  many/
• Evolutionary Design - http://martinfowler.com/articles/designDead.html
• Continuous Deployment -
  http://timothyfitz.wordpress.com/2009/02/08/continuous-deployment/
• Sonar’s Technical Debt Calculation -
  http://www.sonarsource.org/evaluate-your-technical-debt-with-sonar/
• Gherkin - https://github.com/cucumber/cucumber/wiki/Gherkin


                                                                           64
Further Reading
• Branch by Abstraction, by Paul Hammant
  http://paulhammant.com/blog/branch_by_abstraction.html
• Making Large Scale Changes Incrementally with Branch by
  Abstraction, by Jez Humble -
  http://continuousdelivery.com/2011/05/make-large-scale-changes-
  incrementally-with-branch-by-abstraction/
• What is DevOps?, by Damon Edwards -
  http://dev2ops.org/2010/02/what-is-devops/
• Monitoring Sucks - https://github.com/monitoringsucks




                                                                    65
Tools
•   Git - http://git-scm.com/
•   Subversion - http://subversion.tigris.org/
•   Mercurial - http://mercurial.selenic.com/
•   Rational ClearCase - http://www-
    01.ibm.com/software/awdtools/clearcase/
•   Serena Dimensions CM - http://www.serena.com/products/dimensions-
    cm/index.html
•   Ant - http://ant.apache.org/
•   Ivy - http://ant.apache.org/ivy/
•   Maven - http://maven.apache.org/
•   Gradle - http://gradle.org/
•   JUnit – http://www.junit.org/
•   Mockito – http://code.google.com/p/mockito/
•   Hamcrest – http://code.google.com/p/hamcrest/
•   Spock – http://code.google.com/p/spock/
•   dbUnit – http://www.dbunit.org/
•   Unitils – http://unitils.org/summary.html
                                                                        66
Tools
•   Findbugs – http://findbugs.sourceforge.net/
•   PMD – http://pmd.sourceforge.net/
•   Checkstyle – http://checkstyle.sourceforge.net/
•   JIRA – http://www.atlassian.com/software/jira/overview
•   GitHub – https://github.com/
•   Jenkins - http://jenkins-ci.org/
•   TeamCity – http://www.jetbrains.com/teamcity/
•   Nexus – http://www.sonatype.org/nexus/
•   Artifactory – http://www.jfrog.com/products.php
•   Sonar – http://www.sonarsource.org/
•   FitNesse – http://fitnesse.org/
•   Concordion – http://www.concordion.org/
•   Cucumber – http://cukes.info/
•   easyb – http://www.easyb.org/
•   jBehave - http://jbehave.org/
•   geb - http://www.gebish.org/

                                                             67
Tools
•   Liquibase – www.liquibase.org/
•   Flyway – http://code.google.com/p/flyway/
•   Escape – http://code.google.com/p/escservesconfig/
•   Capistrano - https://github.com/capistrano/capistrano
•   Deployinator - https://github.com/etsy/deployinator
•   Puppet – http://puppetlabs.com/
•   Chef – http://www.opscode.com/chef/
•   Ansible - http://ansible.cc/
•   Vagrant – http://vagrantup.com/
•   JMeter – http://jmeter.apache.org/
•   Nagios - http://www.nagios.org/
•   Logstash - http://logstash.net/
•   StatsD – https://github.com/etsy/statsd
•   Metrics – http://metrics.codahale.com/
•   Ganglia – http://ganglia.sourceforge.net/
•   Graphite - http://graphite.wikidot.com/

                                                            68

Contenu connexe

Tendances

Continuous integration
Continuous integrationContinuous integration
Continuous integrationamscanne
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment ManagementSergii Shmarkatiuk
 
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...JKI
 
Continuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsContinuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsMichael Medin
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CDCprime
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svnAnkur Goyal
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsXebiaLabs
 
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW Developer
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW DeveloperNIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW Developer
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW DeveloperJKI
 
Ordina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CDOrdina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CDBert Koorengevel
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentIBM UrbanCode Products
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Baruch Sadogursky
 
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesOrdina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesBert Koorengevel
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup PuneUmesh Kumhar
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestMarcin Grzejszczak
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery appliedMike McGarr
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1Sumanth Vepa
 
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...Edureka!
 
Docker and Jenkins Pipeline
Docker and Jenkins PipelineDocker and Jenkins Pipeline
Docker and Jenkins PipelineMark Waite
 

Tendances (20)

Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous delivery-with-maven
Continuous delivery-with-mavenContinuous delivery-with-maven
Continuous delivery-with-maven
 
2012 01-jenkins-udeploy
2012 01-jenkins-udeploy2012 01-jenkins-udeploy
2012 01-jenkins-udeploy
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment Management
 
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
 
Continuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsContinuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database Insights
 
Transforming Organizations with CI/CD
Transforming Organizations with CI/CDTransforming Organizations with CI/CD
Transforming Organizations with CI/CD
 
Ci jenkins maven svn
Ci jenkins maven svnCi jenkins maven svn
Ci jenkins maven svn
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOps
 
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW Developer
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW DeveloperNIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW Developer
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW Developer
 
Ordina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CDOrdina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CD
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel Development
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!
 
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesOrdina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfest
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
 
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
 
Docker and Jenkins Pipeline
Docker and Jenkins PipelineDocker and Jenkins Pipeline
Docker and Jenkins Pipeline
 

En vedette

Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...
Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...
Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...CA Technologies
 
Li liq liqui liquibase
Li liq liqui liquibaseLi liq liqui liquibase
Li liq liqui liquibaseYoram Michaeli
 
Liquibase – a time machine for your data
Liquibase – a time machine for your dataLiquibase – a time machine for your data
Liquibase – a time machine for your dataNeev Technologies
 
New MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 APINew MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 APITrayan Iliev
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsStephan Kaps
 
Liquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsLiquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsAndrei Solntsev
 
Continuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseContinuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseAidas Dragūnas
 
Database migrations with Flyway and Liquibase
Database migrations with Flyway and LiquibaseDatabase migrations with Flyway and Liquibase
Database migrations with Flyway and LiquibaseLars Östling
 

En vedette (10)

Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...
Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...
Intelligent DevOps - Driving Continuous Delivery by Harnessing the Power of A...
 
Li liq liqui liquibase
Li liq liqui liquibaseLi liq liqui liquibase
Li liq liqui liquibase
 
Liquibase – a time machine for your data
Liquibase – a time machine for your dataLiquibase – a time machine for your data
Liquibase – a time machine for your data
 
New MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 APINew MVC 1.0 JavaEE 8 API
New MVC 1.0 JavaEE 8 API
 
Liquibase
LiquibaseLiquibase
Liquibase
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
 
Liquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOpsLiquibase & Flyway @ Baltic DevOps
Liquibase & Flyway @ Baltic DevOps
 
Continuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseContinuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With Liquibase
 
Database migrations with Flyway and Liquibase
Database migrations with Flyway and LiquibaseDatabase migrations with Flyway and Liquibase
Database migrations with Flyway and Liquibase
 
LiquiBase
LiquiBaseLiquiBase
LiquiBase
 

Similaire à Continuous Delivery Applied

Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Mike McGarr
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniquesMike McGarr
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...CloudBees
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous IntegrationZahra Golmirzaei
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle ManagementAmazon Web Services
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthPittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthGrace Jansen
 
Quality management in continuous delivery and dev ops world pm footprints v1
Quality management in continuous delivery and dev ops world  pm footprints v1Quality management in continuous delivery and dev ops world  pm footprints v1
Quality management in continuous delivery and dev ops world pm footprints v1Dr. Anish Cheriyan (PhD)
 
Relational Database CI/CD
Relational Database CI/CDRelational Database CI/CD
Relational Database CI/CDJasmin Fluri
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...Puppet
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applicationsSunil Dalal
 
Continuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and JenkinsContinuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and JenkinsMahmoud Ali
 
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Atlassian
 
DevOps in Practice
DevOps in PracticeDevOps in Practice
DevOps in PracticeDerek Chen
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Marcin Grzejszczak
 
DevOps Overview in my own words
DevOps Overview in my own wordsDevOps Overview in my own words
DevOps Overview in my own wordsSUBHENDU KARMAKAR
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013David Funaro
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitisSteve Povilaitis
 
Back To Basics
Back To BasicsBack To Basics
Back To Basicskamalikamj
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesIBM UrbanCode Products
 

Similaire à Continuous Delivery Applied (20)

Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniques
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthPittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
 
Quality management in continuous delivery and dev ops world pm footprints v1
Quality management in continuous delivery and dev ops world  pm footprints v1Quality management in continuous delivery and dev ops world  pm footprints v1
Quality management in continuous delivery and dev ops world pm footprints v1
 
Relational Database CI/CD
Relational Database CI/CDRelational Database CI/CD
Relational Database CI/CD
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Continuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and JenkinsContinuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and Jenkins
 
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
 
DevOps in Practice
DevOps in PracticeDevOps in Practice
DevOps in Practice
 
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...
 
DevOps Overview in my own words
DevOps Overview in my own wordsDevOps Overview in my own words
DevOps Overview in my own words
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Back To Basics
Back To BasicsBack To Basics
Back To Basics
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for Databases
 

Plus de Excella

DCSUG - What's Really Going On? Observer Worksheet
DCSUG - What's Really Going On? Observer WorksheetDCSUG - What's Really Going On? Observer Worksheet
DCSUG - What's Really Going On? Observer WorksheetExcella
 
DCSUG - We Are The Leaders We Have Been Waiting For by Lyssa Adkins
DCSUG - We Are The Leaders We Have Been Waiting For by Lyssa AdkinsDCSUG - We Are The Leaders We Have Been Waiting For by Lyssa Adkins
DCSUG - We Are The Leaders We Have Been Waiting For by Lyssa AdkinsExcella
 
DCSUG - Servant Leadership Handout
DCSUG - Servant Leadership HandoutDCSUG - Servant Leadership Handout
DCSUG - Servant Leadership HandoutExcella
 
DCSUG - Servant Leadership
DCSUG - Servant LeadershipDCSUG - Servant Leadership
DCSUG - Servant LeadershipExcella
 
DCSUG - Applying Analysis in an Agile World
DCSUG - Applying Analysis in an Agile WorldDCSUG - Applying Analysis in an Agile World
DCSUG - Applying Analysis in an Agile WorldExcella
 
DCSUG - The Art and Practice of the Agile Leader
DCSUG - The Art and Practice of the Agile LeaderDCSUG - The Art and Practice of the Agile Leader
DCSUG - The Art and Practice of the Agile LeaderExcella
 
DCSUG - Finding Lean in Agile
DCSUG - Finding Lean in AgileDCSUG - Finding Lean in Agile
DCSUG - Finding Lean in AgileExcella
 
DCSUG - Impact Mapping
DCSUG - Impact MappingDCSUG - Impact Mapping
DCSUG - Impact MappingExcella
 
DCSUG - Happiness: A Key Component of Agile
DCSUG - Happiness: A Key Component of AgileDCSUG - Happiness: A Key Component of Agile
DCSUG - Happiness: A Key Component of AgileExcella
 
The Awkward Teenager of Testing
The Awkward Teenager of TestingThe Awkward Teenager of Testing
The Awkward Teenager of TestingExcella
 
Let's Sharpen Your Agile Ax, It's Story Splitting Time
Let's Sharpen Your Agile Ax, It's Story Splitting TimeLet's Sharpen Your Agile Ax, It's Story Splitting Time
Let's Sharpen Your Agile Ax, It's Story Splitting TimeExcella
 
Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016
Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016
Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016Excella
 
The 7 Secrets of Highly Effective Retrospectives (DCSUG)
The 7 Secrets of Highly Effective Retrospectives (DCSUG)The 7 Secrets of Highly Effective Retrospectives (DCSUG)
The 7 Secrets of Highly Effective Retrospectives (DCSUG)Excella
 
Get Your Productivity Game On!!
Get Your Productivity Game On!!Get Your Productivity Game On!!
Get Your Productivity Game On!!Excella
 
How to Structure Multi Team Organizations
How to Structure Multi Team OrganizationsHow to Structure Multi Team Organizations
How to Structure Multi Team OrganizationsExcella
 
Tactics to Kickstart Your Journey Toward DevOps
Tactics to Kickstart Your Journey Toward DevOpsTactics to Kickstart Your Journey Toward DevOps
Tactics to Kickstart Your Journey Toward DevOpsExcella
 
Intro to Mocking - DjangoCon 2015
Intro to Mocking - DjangoCon 2015Intro to Mocking - DjangoCon 2015
Intro to Mocking - DjangoCon 2015Excella
 
Tactics to Kickstart Your Journey Toward Continuous Delivery
Tactics to Kickstart Your Journey Toward Continuous DeliveryTactics to Kickstart Your Journey Toward Continuous Delivery
Tactics to Kickstart Your Journey Toward Continuous DeliveryExcella
 
Using ansible vault to protect your secrets
Using ansible vault to protect your secretsUsing ansible vault to protect your secrets
Using ansible vault to protect your secretsExcella
 
Using Lean Thinking to Increase the Value of Agile
Using Lean Thinking to Increase the Value of AgileUsing Lean Thinking to Increase the Value of Agile
Using Lean Thinking to Increase the Value of AgileExcella
 

Plus de Excella (20)

DCSUG - What's Really Going On? Observer Worksheet
DCSUG - What's Really Going On? Observer WorksheetDCSUG - What's Really Going On? Observer Worksheet
DCSUG - What's Really Going On? Observer Worksheet
 
DCSUG - We Are The Leaders We Have Been Waiting For by Lyssa Adkins
DCSUG - We Are The Leaders We Have Been Waiting For by Lyssa AdkinsDCSUG - We Are The Leaders We Have Been Waiting For by Lyssa Adkins
DCSUG - We Are The Leaders We Have Been Waiting For by Lyssa Adkins
 
DCSUG - Servant Leadership Handout
DCSUG - Servant Leadership HandoutDCSUG - Servant Leadership Handout
DCSUG - Servant Leadership Handout
 
DCSUG - Servant Leadership
DCSUG - Servant LeadershipDCSUG - Servant Leadership
DCSUG - Servant Leadership
 
DCSUG - Applying Analysis in an Agile World
DCSUG - Applying Analysis in an Agile WorldDCSUG - Applying Analysis in an Agile World
DCSUG - Applying Analysis in an Agile World
 
DCSUG - The Art and Practice of the Agile Leader
DCSUG - The Art and Practice of the Agile LeaderDCSUG - The Art and Practice of the Agile Leader
DCSUG - The Art and Practice of the Agile Leader
 
DCSUG - Finding Lean in Agile
DCSUG - Finding Lean in AgileDCSUG - Finding Lean in Agile
DCSUG - Finding Lean in Agile
 
DCSUG - Impact Mapping
DCSUG - Impact MappingDCSUG - Impact Mapping
DCSUG - Impact Mapping
 
DCSUG - Happiness: A Key Component of Agile
DCSUG - Happiness: A Key Component of AgileDCSUG - Happiness: A Key Component of Agile
DCSUG - Happiness: A Key Component of Agile
 
The Awkward Teenager of Testing
The Awkward Teenager of TestingThe Awkward Teenager of Testing
The Awkward Teenager of Testing
 
Let's Sharpen Your Agile Ax, It's Story Splitting Time
Let's Sharpen Your Agile Ax, It's Story Splitting TimeLet's Sharpen Your Agile Ax, It's Story Splitting Time
Let's Sharpen Your Agile Ax, It's Story Splitting Time
 
Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016
Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016
Managing for Happiness by Jurgen Appelo at DCSUG on 8/9/2016
 
The 7 Secrets of Highly Effective Retrospectives (DCSUG)
The 7 Secrets of Highly Effective Retrospectives (DCSUG)The 7 Secrets of Highly Effective Retrospectives (DCSUG)
The 7 Secrets of Highly Effective Retrospectives (DCSUG)
 
Get Your Productivity Game On!!
Get Your Productivity Game On!!Get Your Productivity Game On!!
Get Your Productivity Game On!!
 
How to Structure Multi Team Organizations
How to Structure Multi Team OrganizationsHow to Structure Multi Team Organizations
How to Structure Multi Team Organizations
 
Tactics to Kickstart Your Journey Toward DevOps
Tactics to Kickstart Your Journey Toward DevOpsTactics to Kickstart Your Journey Toward DevOps
Tactics to Kickstart Your Journey Toward DevOps
 
Intro to Mocking - DjangoCon 2015
Intro to Mocking - DjangoCon 2015Intro to Mocking - DjangoCon 2015
Intro to Mocking - DjangoCon 2015
 
Tactics to Kickstart Your Journey Toward Continuous Delivery
Tactics to Kickstart Your Journey Toward Continuous DeliveryTactics to Kickstart Your Journey Toward Continuous Delivery
Tactics to Kickstart Your Journey Toward Continuous Delivery
 
Using ansible vault to protect your secrets
Using ansible vault to protect your secretsUsing ansible vault to protect your secrets
Using ansible vault to protect your secrets
 
Using Lean Thinking to Increase the Value of Agile
Using Lean Thinking to Increase the Value of AgileUsing Lean Thinking to Increase the Value of Agile
Using Lean Thinking to Increase the Value of Agile
 

Continuous Delivery Applied

  • 1. Continuous Delivery Applied Mike McGarr jmcgarr@gmail.com @jmichaelmcgarr http://earlyandoften.wordpress.com http://www.meetup.com/DC-continuous-integration/
  • 2. About Me • J. Michael (Mike) McGarr • 11 years as an IT consultant • Director of DevOps for Learn, Blackboard • Founder of the DC Continuous Integration, Delivery, and Deployment Meetup 2
  • 3. Continuous Delivery is… …a set of practices and principles aimed at, building, testing, and releasing software faster and more frequently. 3
  • 4. 4
  • 5. 5
  • 6. “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” - First of the Twelve Principles behind the Agile Manifesto 6
  • 7. Quality or Speed 7
  • 8. Cycle Time “How long would it take your organization to deploy a change [to production] that involves just one single line of code? Do you do this on a repeatable, reliable basis?” - Mary and Tom Poppendieck, Implementing Lean Software Development 8
  • 9. The Last Mile Manual Deployments Insufficient Configuration Management Infrequent, Error Prone Deployments 9
  • 11. Frequent Automated Deployments http://flic.kr/p/29Ree 11
  • 13. Continuous Deployment Deployment Pipelines Deployment Automation Configuration Continuous Management Testing Integration Agile 13
  • 15. Deployment Pipelines A Deployment Pipeline is an automated manifestation of your process for getting software from version control into the hands of your users. 15
  • 16. Deployment Pipelines (aka Build Pipelines) 16
  • 17. Continuous what? Continuous Continuous Continuous Integration Delivery Deployment 17
  • 18. Where do I start?
  • 19. Understand your Process http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html 19
  • 21. Developers http://flic.kr/p/5cK2 21
  • 25. Static Code Analysis CheckStyle 25
  • 27. The Team 27
  • 28. Agile 28
  • 30. Continuous Integration Check-in Daily Commit to Trunk Automate the Build Keep the Build Fast Every Commit results in Build Test in Clone of Production Automate Deployment 30
  • 31. Build Pipeline in Jenkins 31
  • 32. Testing 32
  • 34. Test Strategy Taken from Growing Object-Oriented Software, Guided by Tests 34
  • 35. Testing is not a Phase http://flic.kr/p/6bcg 35
  • 47. Deploying 47
  • 49. Code Deployments 1. Push New Binary to Server 2. Stop Server 3. Archive Old Binary 4. Deploy New Binary 5. Start Server 49
  • 51. Database Deployments HTML .sql Production DBA DB Change Test DB Version Build Change Control Server DB Dev Change 51
  • 52. 52
  • 54. DevOps: it’s about culture http://dev2ops.org/2012/10/devops-transformation-workshop-for-technical-managers/ 54
  • 56. Puppet 56
  • 57. Vagrant 57
  • 58. Monitoring (sucks) https://github.com/monitoringsucks 58
  • 61. Further Reading • Continuous Delivery: Reliable Software Releases through Build, Test and Deployment Automation, by Jez Humble and David Farley - http://www.amazon.com/Continuous-Delivery-Deployment-Automation- Addison-Wesley/dp/0321601912 • Continuous Integration, By Paul M Duvall - http://www.amazon.com/Continuous-Integration-Improving-Software- Reducing/dp/0321336380 • Refactoring Databases, By Scott Ambler and Pramod Sadalage - http://www.amazon.com/Refactoring-Databases-Evolutionary- paperback-Addison-Wesley/dp/0321774515 • Refactoring, By Martin Fowler - http://www.amazon.com/Refactoring- Improving-Design-Existing-Code/dp/0201485672 • Growing Object-Oriented Software, Guided by Tests, by Steven Freeman and Nat Pryce - http://www.amazon.com/Growing-Object- Oriented-Software-Guided-Tests/dp/0321503627 61
  • 62. Further Reading • Extreme Programming Explained, by Kent Beck - http://www.amazon.com/Extreme-Programming-Explained-Embrace- Change/dp/0201616416 • Release It!, by Michael Nygard - http://pragprog.com/book/mnee/release-it • xUnit Test Patterns, by Gerard Meszaros - http://www.amazon.com/xUnit-Test-Patterns-Refactoring- Code/dp/0131495054 • Working Effectively with Legacy Code, by Michael Feathers - http://www.amazon.com/Working-Effectively-Legacy-Michael- Feathers/dp/0131177052 • Agile Testing, by Lisa Crispin and Janet Gregory - http://www.amazon.com/Agile-Testing-Practical-Guide- Testers/dp/0321534468 62
  • 63. Further Reading • Test Driven Development (TDD) – http://en.wikipedia.org/wiki/Test- driven_development • Introducing BDD, by Dan North – http://dannorth.net/introducing-bdd/ • Agile Manifesto – http://agilemanifesto.org/ • Scrum – http://www.scrumalliance.org/learn_about_scrum • Continuous Integration, by Martin Fowler – http://martinfowler.com/articles/continuousIntegration.html • Specification by Example, by Gojko Adzic - http://specificationbyexample.com/ • Build Pipelines - http://www.magpiebrain.com/2009/12/13/a-brief-and- incomplete-history-of-build-pipelines/ • Implementing Lean Software Development, by Mary and Tom Poppendieck - http://www.amazon.com/Implementing-Lean-Software- Development-Concept/dp/0321437381 63
  • 64. Further Reading • Maven Releases on Steriods, by Axel Fontaine – http://www.axelfontaine.com/2011/01/maven-releases-on-steroids- adios.html • What is in a Name? Usually a version number, actually., by James Betteley - http://jamesbetteley.wordpress.com/2011/07/07/what-is-in-a- name-usually-a-version-number-actually/ • Build Once, Deploy Many - http://earlyandoften.wordpress.com/2010/09/09/build-once-deploy- many/ • Evolutionary Design - http://martinfowler.com/articles/designDead.html • Continuous Deployment - http://timothyfitz.wordpress.com/2009/02/08/continuous-deployment/ • Sonar’s Technical Debt Calculation - http://www.sonarsource.org/evaluate-your-technical-debt-with-sonar/ • Gherkin - https://github.com/cucumber/cucumber/wiki/Gherkin 64
  • 65. Further Reading • Branch by Abstraction, by Paul Hammant http://paulhammant.com/blog/branch_by_abstraction.html • Making Large Scale Changes Incrementally with Branch by Abstraction, by Jez Humble - http://continuousdelivery.com/2011/05/make-large-scale-changes- incrementally-with-branch-by-abstraction/ • What is DevOps?, by Damon Edwards - http://dev2ops.org/2010/02/what-is-devops/ • Monitoring Sucks - https://github.com/monitoringsucks 65
  • 66. Tools • Git - http://git-scm.com/ • Subversion - http://subversion.tigris.org/ • Mercurial - http://mercurial.selenic.com/ • Rational ClearCase - http://www- 01.ibm.com/software/awdtools/clearcase/ • Serena Dimensions CM - http://www.serena.com/products/dimensions- cm/index.html • Ant - http://ant.apache.org/ • Ivy - http://ant.apache.org/ivy/ • Maven - http://maven.apache.org/ • Gradle - http://gradle.org/ • JUnit – http://www.junit.org/ • Mockito – http://code.google.com/p/mockito/ • Hamcrest – http://code.google.com/p/hamcrest/ • Spock – http://code.google.com/p/spock/ • dbUnit – http://www.dbunit.org/ • Unitils – http://unitils.org/summary.html 66
  • 67. Tools • Findbugs – http://findbugs.sourceforge.net/ • PMD – http://pmd.sourceforge.net/ • Checkstyle – http://checkstyle.sourceforge.net/ • JIRA – http://www.atlassian.com/software/jira/overview • GitHub – https://github.com/ • Jenkins - http://jenkins-ci.org/ • TeamCity – http://www.jetbrains.com/teamcity/ • Nexus – http://www.sonatype.org/nexus/ • Artifactory – http://www.jfrog.com/products.php • Sonar – http://www.sonarsource.org/ • FitNesse – http://fitnesse.org/ • Concordion – http://www.concordion.org/ • Cucumber – http://cukes.info/ • easyb – http://www.easyb.org/ • jBehave - http://jbehave.org/ • geb - http://www.gebish.org/ 67
  • 68. Tools • Liquibase – www.liquibase.org/ • Flyway – http://code.google.com/p/flyway/ • Escape – http://code.google.com/p/escservesconfig/ • Capistrano - https://github.com/capistrano/capistrano • Deployinator - https://github.com/etsy/deployinator • Puppet – http://puppetlabs.com/ • Chef – http://www.opscode.com/chef/ • Ansible - http://ansible.cc/ • Vagrant – http://vagrantup.com/ • JMeter – http://jmeter.apache.org/ • Nagios - http://www.nagios.org/ • Logstash - http://logstash.net/ • StatsD – https://github.com/etsy/statsd • Metrics – http://metrics.codahale.com/ • Ganglia – http://ganglia.sourceforge.net/ • Graphite - http://graphite.wikidot.com/ 68

Notes de l'éditeur

  1. Cycle Time is a measure of Continuous Delivery maturity
  2. Collaboration (DEV + Customer, DEV + Operations)Talking early and often…break down walls. [DevOps]Automation. Automate Everything! Build, Test, Deploy!Frequency. Frequent means small. Easier to troubleshoot, rollback. Reduces Risk.Feedback. Change triggers feedback. Feedback is fast. Team acts on it.
  3. Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments