DC ContinuousIntegration, Delivery andDeployment User Group
Thank you Excella Consulting                               2
Excella is Hiring!                     3
Upcoming Events• October 15th – Continuous Delivery in the  Cloud Case Study (Paul Duvall)• November 7th – Anatomy of a Bu...
Continuous Delivery      Applied          Mike McGarr          mike.mcgarr@excella.com          http://earlyandoften.wordp...
About Me• J. Michael (Mike) McGarr• Excella Consulting, Arlington VA• Lead of Excella’s Java Center of Excellence• Founder...
Continuous Delivery is……a set of practices and principles aimed at,building, testing, and releasing softwarefaster and mor...
8
“Our highest priority is to satisfy thecustomer through early andcontinuous delivery of valuablesoftware.”                ...
GoalsQuality      Cycle Time                          10
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       13
Frequent AutomatedDeployments                     http://flic.kr/p/29Ree                                       14
Always Production Ready                          15
Continuous Deployment           Deployment Pipelines         Deployment AutomationConfiguration   ContinuousManagement    ...
Deployment Pipelineshttp://www.fotopedia.com/users/chmehl   17
Deployment PipelinesA Deployment Pipeline is an automatedmanifestation of your process for gettingsoftware from version co...
Deployment Pipelines  (aka Build Pipelines)                          19
Continuous what?Continuous     Continuous   ContinuousIntegration     Delivery    Deployment                              ...
Getting Started         Continuous Delivery Applied
Understand your Process  http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html                        ...
Understand your Organization                               23
Developers         http://flic.kr/p/5cK2                                 24
Deployment Pipelines  (aka Build Pipelines)                          25
Test Driven Developmenthttp://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx   26
Evolutionary Design                      27
Automate the Build                     28
Static Code Analysis       CheckStyle                       29
Technical Debt                 30
The Team           31
Agile        32
Continuous Integration                         33
Continuous Integration  Check-in Daily  Commit to Trunk  Automate the Build  Keep the Build Fast  Every Commit results in ...
Testing          35
Testing Phases                 36
Testing is not a Phase                         http://flic.kr/p/6bcg   37
Specification by Example                           38
Specification by Example                           39
Automated Performance Testing                                40
Configuration Management                           41
Version Control                  42
Build Once, Deploy Many                          43
Artifact Repositories                        44
Traceability               45
Versioning Numbers                     46
Externalize Configuration ESCAPE           Database                             47
Deploying        48
Deployment Pipelines  (aka Build Pipelines)                          49
Code Deployments                   50
Version your Database                        51
52
Infrastructure as Code                         53
Puppet         54
Vagrant          55
Monitoring (sucks)  https://github.com/monitoringsucks                                       56
Continuous Deployment                        57
Contact MeMike McGarrmike.mcgarr@excella.comhttp://earlyandoften.wordpress.com@jmichaelmcgarr                             ...
Further Reading• Continuous Delivery: Reliable Software Releases through Build, Test  and Deployment Automation, by Jez Hu...
Further Reading• Maven Releases on Steriods, by Axel Fontaine –  http://www.axelfontaine.com/2011/01/maven-releases-on-ste...
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/...
Upcoming SlideShare
Loading in …5
×

Continuous delivery applied (DC CI User Group)

2,348 views

Published on

These are slides I used to present to the DC Continuous Integration, Delivery and Deployment User Group on

Writing code is fun, but deploying to production is not. Production releases are scary events that last all weekend, and you find yourself worrying about how it will go. Did we miss a configuration file? Is the database schema the same as the one in the test environment? Does the last minute hot fix we just applied break any other features? Did I forget to include an installation instruction for the system administrators?

Continuous Delivery is a collection of principles and practices aimed at addressing the problems teams typically face when releasing changes to production. By applying rigorous automation, testing and configuration management, teams are able to confidently and consistently deploy changes from version control to production without fear.

In this talk, Mike McGarr will provide listeners with an introduction into the world of Continuous Delivery. After an introduction into the concepts and principles of Continuous Delivery, he will discuss many of the techniques for implementing Continuous Delivery and recommend some tools that can be used on your development project.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,348
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
103
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • The Last Mile tends to be an obstacle to achieving thisTransition – why are automated deployment so important? Because a feature doesn’t add value until it is in production.
  • 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 (DC CI User Group)

    1. 1. DC ContinuousIntegration, Delivery andDeployment User Group
    2. 2. Thank you Excella Consulting 2
    3. 3. Excella is Hiring! 3
    4. 4. Upcoming Events• October 15th – Continuous Delivery in the Cloud Case Study (Paul Duvall)• November 7th – Anatomy of a Build Pipeline (Sam Brown)• December 13th – Finalizing Speaker 4
    5. 5. Continuous Delivery Applied Mike McGarr mike.mcgarr@excella.com http://earlyandoften.wordpress.com http://www.meetup.com/DC-continuous- integration/ @jmichaelmcgarr
    6. 6. About Me• J. Michael (Mike) McGarr• Excella Consulting, Arlington VA• Lead of Excella’s Java Center of Excellence• Founder of the DC Continuous Integration, Delivery, and Deployment Meetup 6
    7. 7. Continuous Delivery is……a set of practices and principles aimed at,building, testing, and releasing softwarefaster and more frequently. 7
    8. 8. 8
    9. 9. “Our highest priority is to satisfy thecustomer through early andcontinuous delivery of valuablesoftware.” - First of the Twelve Principles behind the Agile Manifesto 9
    10. 10. GoalsQuality Cycle Time 10
    11. 11. 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 11
    12. 12. The Last Mile Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments 12
    13. 13. StressfulReleases 13
    14. 14. Frequent AutomatedDeployments http://flic.kr/p/29Ree 14
    15. 15. Always Production Ready 15
    16. 16. Continuous Deployment Deployment Pipelines Deployment AutomationConfiguration ContinuousManagement Testing Integration Agile 16
    17. 17. Deployment Pipelineshttp://www.fotopedia.com/users/chmehl 17
    18. 18. Deployment PipelinesA Deployment Pipeline is an automatedmanifestation of your process for gettingsoftware from version control into thehands of your users. 18
    19. 19. Deployment Pipelines (aka Build Pipelines) 19
    20. 20. Continuous what?Continuous Continuous ContinuousIntegration Delivery Deployment 20
    21. 21. Getting Started Continuous Delivery Applied
    22. 22. Understand your Process http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html 22
    23. 23. Understand your Organization 23
    24. 24. Developers http://flic.kr/p/5cK2 24
    25. 25. Deployment Pipelines (aka Build Pipelines) 25
    26. 26. Test Driven Developmenthttp://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx 26
    27. 27. Evolutionary Design 27
    28. 28. Automate the Build 28
    29. 29. Static Code Analysis CheckStyle 29
    30. 30. Technical Debt 30
    31. 31. The Team 31
    32. 32. Agile 32
    33. 33. Continuous Integration 33
    34. 34. 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 34
    35. 35. Testing 35
    36. 36. Testing Phases 36
    37. 37. Testing is not a Phase http://flic.kr/p/6bcg 37
    38. 38. Specification by Example 38
    39. 39. Specification by Example 39
    40. 40. Automated Performance Testing 40
    41. 41. Configuration Management 41
    42. 42. Version Control 42
    43. 43. Build Once, Deploy Many 43
    44. 44. Artifact Repositories 44
    45. 45. Traceability 45
    46. 46. Versioning Numbers 46
    47. 47. Externalize Configuration ESCAPE Database 47
    48. 48. Deploying 48
    49. 49. Deployment Pipelines (aka Build Pipelines) 49
    50. 50. Code Deployments 50
    51. 51. Version your Database 51
    52. 52. 52
    53. 53. Infrastructure as Code 53
    54. 54. Puppet 54
    55. 55. Vagrant 55
    56. 56. Monitoring (sucks) https://github.com/monitoringsucks 56
    57. 57. Continuous Deployment 57
    58. 58. Contact MeMike McGarrmike.mcgarr@excella.comhttp://earlyandoften.wordpress.com@jmichaelmcgarr 58
    59. 59. 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• 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/ 59
    60. 60. 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 60
    61. 61. 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 61
    62. 62. 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 –• Concordion – http://www.concordion.org/• Cucumber – http://cukes.info/• easyb – http://www.easyb.org/• jBehave - http://jbehave.org/• geb - http://www.gebish.org/ 62
    63. 63. Tools• Liquibase – www.liquibase.org/• Flyway – http://code.google.com/p/flyway/• Escape – http://code.google.com/p/escservesconfig/• Puppet – http://puppetlabs.com/• Chef – http://www.opscode.com/chef/• Vagrant – http://vagrantup.com/• JMeter – http://jmeter.apache.org/• Nagios - http://www.nagios.org/ 63

    ×