Successfully reported this slideshow.

Continuous delivery applied (DC CI User Group)

2

Share

Loading in …3
×
1 of 63
1 of 63

Continuous delivery applied (DC CI User Group)

2

Share

Download to read offline

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.

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.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Continuous delivery applied (DC CI User Group)

  1. 1. DC Continuous Integration, Delivery and Deployment 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 software faster and more frequently. 7
  8. 8. 8
  9. 9. “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 9
  10. 10. Goals Quality Cycle Time 10
  11. 11. 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 11
  12. 12. The Last Mile Manual Deployments Insufficient Configuration Management Infrequent, Error Prone Deployments 12
  13. 13. Stressful Releases 13
  14. 14. Frequent Automated Deployments http://flic.kr/p/29Ree 14
  15. 15. Always Production Ready 15
  16. 16. Continuous Deployment Deployment Pipelines Deployment Automation Configuration Continuous Management Testing Integration Agile 16
  17. 17. Deployment Pipelines http://www.fotopedia.com/users/chmehl 17
  18. 18. Deployment Pipelines A Deployment Pipeline is an automated manifestation of your process for getting software from version control into the hands of your users. 18
  19. 19. Deployment Pipelines (aka Build Pipelines) 19
  20. 20. Continuous what? Continuous Continuous Continuous Integration 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 Development http://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 Me Mike McGarr mike.mcgarr@excella.com http://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

Editor's Notes

  • 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
  • ×