Successfully reported this slideshow.
Continuous Delivery                           AppliedMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordp...
About Me• J. Michael (Mike) McGarr• 11 years as an IT consultant• Director of DevOps for Learn, Blackboard• Founder of the...
Continuous Delivery is……a set of practices and principles aimedat, building, testing, and releasing softwarefaster and mor...
4
5
“Our highest priority is to satisfy thecustomer through early andcontinuous delivery of valuablesoftware.”                ...
Quality   or Speed                     7
Cycle Time“How long would it take your organization todeploy a change [to production] that involvesjust one single line of...
The Last Mile        Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments           ...
StressfulReleases       10
Frequent AutomatedDeployments                     http://flic.kr/p/29Ree                                       11
Always Production Ready                          12
Continuous Deployment           Deployment Pipelines         Deployment AutomationConfiguration   ContinuousManagement    ...
Deployment Pipelineshttp://www.fotopedia.com/users/chmehl   14
Deployment PipelinesA Deployment Pipeline is an automatedmanifestation of your process for gettingsoftware from version co...
Deployment Pipelines  (aka Build Pipelines)                          16
Continuous what?Continuous     Continuous   ContinuousIntegration     Delivery    Deployment                              ...
Where do I start?
Understand your Process  http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html                        ...
Understand your Organization                               20
Developers         http://flic.kr/p/5cK2                                 21
Test Driven Developmenthttp://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 Pipeline in Jenkins                            31
Testing          32
Types of Tests                 33
Test StrategyTaken from Growing Object-Oriented Software, Guided by Tests                                                 ...
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.   Depl...
Version your Database                        50
Database Deployments                      HTML    .sql                                     Production                DBA  ...
52
DevOpshttp://www.agileweboperations.com/lean-agile-devops-related                                                         ...
DevOps: it’s about culturehttp://dev2ops.org/2012/10/devops-transformation-workshop-for-technical-managers/               ...
Infrastructure as Code                         55
Puppet         56
Vagrant          57
Monitoring (sucks)  https://github.com/monitoringsucks                                       58
Continuous Deployment                        59
Contact MeMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordpress.com                                   ...
Further Reading• Continuous Delivery: Reliable Software Releases through Build, Test  and Deployment Automation, by Jez Hu...
Further Reading• Extreme Programming Explained, by Kent Beck -  http://www.amazon.com/Extreme-Programming-Explained-Embrac...
Further Reading• Test Driven Development (TDD) – http://en.wikipedia.org/wiki/Test-  driven_development• Introducing BDD, ...
Further Reading• Maven Releases on Steriods, by Axel Fontaine –  http://www.axelfontaine.com/2011/01/maven-releases-on-ste...
Further Reading• Branch by Abstraction, by Paul Hammant  http://paulhammant.com/blog/branch_by_abstraction.html• Making La...
Tools•   Git - http://git-scm.com/•   Subversion - http://subversion.tigris.org/•   Mercurial - http://mercurial.selenic.c...
Tools•   Findbugs – http://findbugs.sourceforge.net/•   PMD – http://pmd.sourceforge.net/•   Checkstyle – http://checkstyl...
Tools•   Liquibase – www.liquibase.org/•   Flyway – http://code.google.com/p/flyway/•   Escape – http://code.google.com/p/...
Prochain SlideShare
Chargement dans…5
×

Continuous Delivery Applied

1 366 vues

Publié le

Mike McGarr presented "Continuous Delivery Applied" at the 2012 DC Agile Engineering Conference

Publié dans : Technologie
  • Soyez le premier à commenter

Continuous Delivery Applied

  1. 1. Continuous Delivery AppliedMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordpress.comhttp://www.meetup.com/DC-continuous-integration/
  2. 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. 3. Continuous Delivery is……a set of practices and principles aimedat, building, testing, and releasing softwarefaster and more frequently. 3
  4. 4. 4
  5. 5. 5
  6. 6. “Our highest priority is to satisfy thecustomer through early andcontinuous delivery of valuablesoftware.” - First of the Twelve Principles behind the Agile Manifesto 6
  7. 7. Quality or Speed 7
  8. 8. Cycle Time“How long would it take your organization todeploy a change [to production] that involvesjust one single line of code? Do you do this on arepeatable, reliable basis?” - Mary and Tom Poppendieck, Implementing Lean Software Development 8
  9. 9. The Last Mile Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments 9
  10. 10. StressfulReleases 10
  11. 11. Frequent AutomatedDeployments http://flic.kr/p/29Ree 11
  12. 12. Always Production Ready 12
  13. 13. Continuous Deployment Deployment Pipelines Deployment AutomationConfiguration ContinuousManagement Testing Integration Agile 13
  14. 14. Deployment Pipelineshttp://www.fotopedia.com/users/chmehl 14
  15. 15. Deployment PipelinesA Deployment Pipeline is an automatedmanifestation of your process for gettingsoftware from version control into thehands of your users. 15
  16. 16. Deployment Pipelines (aka Build Pipelines) 16
  17. 17. Continuous what?Continuous Continuous ContinuousIntegration Delivery Deployment 17
  18. 18. Where do I start?
  19. 19. Understand your Process http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html 19
  20. 20. Understand your Organization 20
  21. 21. Developers http://flic.kr/p/5cK2 21
  22. 22. Test Driven Developmenthttp://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx 22
  23. 23. Evolutionary Design 23
  24. 24. Automate the Build 24
  25. 25. Static Code Analysis CheckStyle 25
  26. 26. Technical Debt 26
  27. 27. The Team 27
  28. 28. Agile 28
  29. 29. Continuous Integration 29
  30. 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. 31. Build Pipeline in Jenkins 31
  32. 32. Testing 32
  33. 33. Types of Tests 33
  34. 34. Test StrategyTaken from Growing Object-Oriented Software, Guided by Tests 34
  35. 35. Testing is not a Phase http://flic.kr/p/6bcg 35
  36. 36. Specification by Example 36
  37. 37. Specification by Example 37
  38. 38. Automated Performance Testing 38
  39. 39. Configuration Management 39
  40. 40. Version Control 40
  41. 41. Build Once, Deploy Many 41
  42. 42. Externalize Configuration ESCAPE Database 42
  43. 43. Artifact Repositories 43
  44. 44. Traceability 44
  45. 45. Versioning Numbers 45
  46. 46. Branch by Abstraction 46
  47. 47. Deploying 47
  48. 48. Automated Deployments 48
  49. 49. Code Deployments 1. Push New Binary to Server 2. Stop Server 3. Archive Old Binary 4. Deploy New Binary 5. Start Server 49
  50. 50. Version your Database 50
  51. 51. Database Deployments HTML .sql Production DBA DBChange Test DB Version BuildChange Control Server DB DevChange 51
  52. 52. 52
  53. 53. DevOpshttp://www.agileweboperations.com/lean-agile-devops-related 53
  54. 54. DevOps: it’s about culturehttp://dev2ops.org/2012/10/devops-transformation-workshop-for-technical-managers/ 54
  55. 55. Infrastructure as Code 55
  56. 56. Puppet 56
  57. 57. Vagrant 57
  58. 58. Monitoring (sucks) https://github.com/monitoringsucks 58
  59. 59. Continuous Deployment 59
  60. 60. Contact MeMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordpress.com 60
  61. 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. 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. 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. 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. 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. 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. 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. 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

×