• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Continuous Delivery Applied (AgileDC)

Continuous Delivery Applied (AgileDC)



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.



Total Views
Views on SlideShare
Embed Views



2 Embeds 5

http://www.linkedin.com 4
https://www.linkedin.com 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • 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 (AgileDC) Continuous Delivery Applied (AgileDC) Presentation Transcript

  • Continuous Delivery AppliedMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordpress.comhttp://www.meetup.com/DC-continuous-integration/
  • About Me• J. Michael (Mike) McGarr• 11 years as a consultant, Excella Consulting• Founder of the DC Continuous Integration, Delivery, and Deployment Meetup 2
  • Continuous Delivery is……a set of practices and principles aimed at,building, testing, and releasing softwarefaster and more frequently. 3
  • 4
  • “Our highest priority is to satisfy thecustomer through early andcontinuous delivery of valuablesoftware.” - First of the Twelve Principles behind the Agile Manifesto 5
  • Quality or Speed 6
  • 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 7
  • The Last Mile Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments 8
  • StressfulReleases 9
  • Frequent AutomatedDeployments http://flic.kr/p/29Ree 10
  • Always Production Ready 11
  • Continuous Deployment Deployment Pipelines Deployment AutomationConfiguration ContinuousManagement Testing Integration Agile 12
  • Deployment Pipelineshttp://www.fotopedia.com/users/chmehl 13
  • Deployment PipelinesA Deployment Pipeline is an automatedmanifestation of your process for gettingsoftware from version control into thehands of your users. 14
  • Deployment Pipelines (aka Build Pipelines) 15
  • Continuous what?Continuous Continuous ContinuousIntegration Delivery Deployment 16
  • Where do I start?
  • Understand your Process http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html 18
  • Understand your Organization 19
  • Developers http://flic.kr/p/5cK2 20
  • Test Driven Developmenthttp://reddevnews.com/articles/2007/11/01/testdriven-development-tdd.aspx 21
  • Evolutionary Design 22
  • Automate the Build 23
  • Static Code Analysis CheckStyle 24
  • Technical Debt 25
  • The Team 26
  • Agile 27
  • Continuous Integration 28
  • 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 29
  • Testing 30
  • Types of Tests 31
  • Testing is not a Phase http://flic.kr/p/6bcg 32
  • Specification by Example 33
  • Specification by Example 34
  • Automated Performance Testing 35
  • Configuration Management 36
  • Version Control 37
  • Build Once, Deploy Many 38
  • Externalize Configuration ESCAPE Database 39
  • Artifact Repositories 40
  • Traceability 41
  • Versioning Numbers 42
  • Branch by Abstraction 43
  • Deploying 44
  • Deployment Pipelines (aka Build Pipelines) 45
  • Build Pipeline in Jenkins 46
  • Code Deployments 47
  • Version your Database 48
  • 49
  • Infrastructure as Code 50
  • Puppet 51
  • Vagrant 52
  • Monitoring (sucks) https://github.com/monitoringsucks 53
  • Continuous Deployment 54
  • Contact MeMike McGarrjmcgarr@gmail.com@jmichaelmcgarrhttp://earlyandoften.wordpress.com 55
  • 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/ 56
  • 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• Branch by Abstraction, by Paul Hammat - http://paulhammant.com/blog/branch_by_abstraction.html 57
  • 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/• Findbugs – http://findbugs.sourceforge.net/• PMD – http://pmd.sourceforge.net/• Checkstyle – http://checkstyle.sourceforge.net/ 58
  • Tools• Jenkins - http://jenkins-ci.org/• Jenkins Performance Plugin – https://wiki.jenkins- ci.org/display/JENKINS/Performance+Plugin• Jenkins Build Pipeline Plugin - https://wiki.jenkins- ci.org/display/JENKINS/Build+Pipeline+Plugin• Nexus – http://www.sonatype.org/nexus/• Artifactory – http://www.jfrog.com/products.php• Sonar – http://www.sonarsource.org/• Cucumber – http://cukes.info/• Liquibase – www.liquibase.org/• Flyway – http://code.google.com/p/flyway/• Escape – http://code.google.com/p/escservesconfig/• Capistrano - https://github.com/capistrano/capistrano• Puppet – http://puppetlabs.com/• Chef – http://www.opscode.com/chef/• Vagrant – http://vagrantup.com/• JMeter – http://jmeter.apache.org/ 59
  • Tools• Nagios - http://www.nagios.org/• Logstash – http://logstash.net/• StatsD – https://github.com/etsy/statsd• Ganglia – http://ganglia.sourceforge.net/• Metrics – https://github.com/codahale/metrics• Graphite - http://graphite.wikidot.com/ 60