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 350 vues

Publié le

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

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 350
Sur SlideShare
0
Issues des intégrations
0
Intégrations
386
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Cycle Time is a measure of Continuous Delivery maturity
  • 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.
  • Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments
  • 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

    ×