SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

Continuous integration
Continuous integrationContinuous integration
Continuous integration
amscanne
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment Management
Sergii Shmarkatiuk
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
Mike McGarr
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
Sumanth Vepa
 

Mais procurados (20)

Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
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...
 
2012 01-jenkins-udeploy
2012 01-jenkins-udeploy2012 01-jenkins-udeploy
2012 01-jenkins-udeploy
 
Continuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsContinuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database Insights
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment Management
 
Continuous delivery-with-maven
Continuous delivery-with-mavenContinuous delivery-with-maven
Continuous delivery-with-maven
 
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
 
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
 
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
 
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
 
Adapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex ApplicationsAdapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex Applications
 
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
 
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...
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
 
Top DevOps tools
Top DevOps toolsTop DevOps tools
Top DevOps tools
 

Destaque

IoT and Management Systems: new dimensions for research and didactics towards...
IoT and Management Systems: new dimensions for research and didactics towards...IoT and Management Systems: new dimensions for research and didactics towards...
IoT and Management Systems: new dimensions for research and didactics towards...
Scatol8
 
Virtual dj 7 audio setup guide
Virtual dj 7   audio setup guideVirtual dj 7   audio setup guide
Virtual dj 7 audio setup guide
tmgtz007
 
Pengenalan soft coral
Pengenalan soft coralPengenalan soft coral
Pengenalan soft coral
Baim Husain
 
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religia
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religiaWyewoluowane moduły ludzkiego umysłu, na których opiera się religia
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religia
Łukasz Budzicz
 
Scatol8 UUDD livello A_2
Scatol8 UUDD livello A_2Scatol8 UUDD livello A_2
Scatol8 UUDD livello A_2
Scatol8
 
ACUG 12 Clouds - Cloud Formation
ACUG 12 Clouds - Cloud FormationACUG 12 Clouds - Cloud Formation
ACUG 12 Clouds - Cloud Formation
joehack3r
 
его глазами
его глазамиего глазами
его глазами
dasha_maz
 
Scatol8 UUDD livello A_6
Scatol8 UUDD livello A_6Scatol8 UUDD livello A_6
Scatol8 UUDD livello A_6
Scatol8
 

Destaque (20)

IoT and Management Systems: new dimensions for research and didactics towards...
IoT and Management Systems: new dimensions for research and didactics towards...IoT and Management Systems: new dimensions for research and didactics towards...
IoT and Management Systems: new dimensions for research and didactics towards...
 
Ad mark presentation1
Ad mark presentation1Ad mark presentation1
Ad mark presentation1
 
Virtual dj 7 audio setup guide
Virtual dj 7   audio setup guideVirtual dj 7   audio setup guide
Virtual dj 7 audio setup guide
 
Working with Legacy Code
Working with Legacy CodeWorking with Legacy Code
Working with Legacy Code
 
Pengenalan soft coral
Pengenalan soft coralPengenalan soft coral
Pengenalan soft coral
 
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religia
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religiaWyewoluowane moduły ludzkiego umysłu, na których opiera się religia
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religia
 
Scatol8® system for education on Sustainability. Design and implementation of...
Scatol8® system for education on Sustainability. Design and implementation of...Scatol8® system for education on Sustainability. Design and implementation of...
Scatol8® system for education on Sustainability. Design and implementation of...
 
The Scatol8® for Sustainability: an update on the remote sensing system of en...
The Scatol8® for Sustainability: an update on the remote sensing system of en...The Scatol8® for Sustainability: an update on the remote sensing system of en...
The Scatol8® for Sustainability: an update on the remote sensing system of en...
 
W poszukiwaniu swojej drogi - webinar
W poszukiwaniu swojej drogi - webinarW poszukiwaniu swojej drogi - webinar
W poszukiwaniu swojej drogi - webinar
 
Unindented Code Cannot Possibly Work
Unindented Code Cannot Possibly WorkUnindented Code Cannot Possibly Work
Unindented Code Cannot Possibly Work
 
Agile Engineering and Software Craftsmanship
Agile Engineering and Software CraftsmanshipAgile Engineering and Software Craftsmanship
Agile Engineering and Software Craftsmanship
 
Scatol8 UUDD livello A_2
Scatol8 UUDD livello A_2Scatol8 UUDD livello A_2
Scatol8 UUDD livello A_2
 
Improving Design through TDD
Improving Design through TDDImproving Design through TDD
Improving Design through TDD
 
Parasitosis
ParasitosisParasitosis
Parasitosis
 
Weddings and beyond
Weddings and beyondWeddings and beyond
Weddings and beyond
 
ACUG 12 Clouds - Cloud Formation
ACUG 12 Clouds - Cloud FormationACUG 12 Clouds - Cloud Formation
ACUG 12 Clouds - Cloud Formation
 
его глазами
его глазамиего глазами
его глазами
 
[CLP] Game industry Day 3 - 1
[CLP] Game industry Day 3 - 1[CLP] Game industry Day 3 - 1
[CLP] Game industry Day 3 - 1
 
Banje u Vojvodini
Banje u VojvodiniBanje u Vojvodini
Banje u Vojvodini
 
Scatol8 UUDD livello A_6
Scatol8 UUDD livello A_6Scatol8 UUDD livello A_6
Scatol8 UUDD livello A_6
 

Semelhante a Continuous Delivery Applied

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
 

Semelhante a 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
 
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
 
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
 
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...
 
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
 
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
 
DevOps in Practice
DevOps in PracticeDevOps in Practice
DevOps in Practice
 
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...
 
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
 
How to go from waterfall app dev to secure agile development in 2 weeks
How to go from waterfall app dev to secure agile development in 2 weeks How to go from waterfall app dev to secure agile development in 2 weeks
How to go from waterfall app dev to secure agile development in 2 weeks
 
Back To Basics
Back To BasicsBack To Basics
Back To Basics
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
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
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
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
 

Último (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 
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
 

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

Notas do Editor

  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