Your SlideShare is downloading. ×
0
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Continuous Delivery Applied (Agile Richmond)

2,166

Published 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 …

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
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,166
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
81
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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
  • Transcript

    • 1. Continuous Delivery AppliedMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordpress.comhttp://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 softwarefaster and more frequently. 3
    • 4. 4
    • 5. 5
    • 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. Quality or Speed 7
    • 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. The Last Mile Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments 9
    • 10. StressfulReleases 10
    • 11. Frequent AutomatedDeployments http://flic.kr/p/29Ree 11
    • 12. Always Production Ready 12
    • 13. Continuous Deployment Deployment Pipelines Deployment AutomationConfiguration ContinuousManagement Testing Integration Agile 13
    • 14. Deployment Pipelineshttp://www.fotopedia.com/users/chmehl 14
    • 15. Deployment PipelinesA Deployment Pipeline is an automatedmanifestation of your process for gettingsoftware from version control into thehands of your users. 15
    • 16. Deployment Pipelines (aka Build Pipelines) 16
    • 17. Continuous what?Continuous Continuous ContinuousIntegration Delivery Deployment 17
    • 18. Where do I start?
    • 19. Understand your Process http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html 19
    • 20. Understand your Organization 20
    • 21. Developers http://flic.kr/p/5cK2 21
    • 22. Test Driven Developmenthttp://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx 22
    • 23. Evolutionary Design 23
    • 24. Automate the Build 24
    • 25. Static Code Analysis CheckStyle 25
    • 26. Technical Debt 26
    • 27. The Team 27
    • 28. Agile 28
    • 29. Continuous Integration 29
    • 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
    • 33. Types of Tests 33
    • 34. Test StrategyTaken from Growing Object-Oriented Software, Guided by Tests 34
    • 35. Testing is not a Phase http://flic.kr/p/6bcg 35
    • 36. Specification by Example 36
    • 37. Specification by Example 37
    • 38. Automated Performance Testing 38
    • 39. Configuration Management 39
    • 40. Version Control 40
    • 41. Build Once, Deploy Many 41
    • 42. Externalize Configuration ESCAPE Database 42
    • 43. Artifact Repositories 43
    • 44. Traceability 44
    • 45. Versioning Numbers 45
    • 46. Branch by Abstraction 46
    • 47. Deploying 47
    • 48. Automated Deployments 48
    • 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. Version your Database 50
    • 51. Database Deployments HTML .sql Production DBA DBChange Test DB Version BuildChange Control Server DB DevChange 51
    • 52. 52
    • 53. DevOpshttp://www.agileweboperations.com/lean-agile-devops-related 53
    • 54. DevOps: it’s about culturehttp://dev2ops.org/2012/10/devops-transformation-workshop-for-technical-managers/ 54
    • 55. Infrastructure as Code 55
    • 56. Puppet 56
    • 57. Vagrant 57
    • 58. Monitoring (sucks) https://github.com/monitoringsucks 58
    • 59. Continuous Deployment 59
    • 60. Contact MeMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordpress.com 60
    • 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

    ×