SlideShare a Scribd company logo
Continuous Delivery
                           Applied

Mike McGarr
jmcgarr@gmail.com
@jmichaelmcgarr
http://earlyandoften.wordpress.com
http://www.meetup.com/DC-continuous-integration/
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
Continuous Delivery is…

…a set of practices and principles aimed
at, building, testing, and releasing software
faster and more frequently.




                                            3
4
5
“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




                                                    6
Quality   or Speed



                     7
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




                                                      8
The Last Mile

        Manual Deployments
Insufficient Configuration Management
Infrequent, Error Prone Deployments



                                        9
Stressful
Releases




       10
Frequent Automated
Deployments




                     http://flic.kr/p/29Ree
                                       11
Always Production Ready




                          12
Continuous Deployment

           Deployment Pipelines

         Deployment Automation



Configuration   Continuous
Management
                                  Testing
                Integration


                   Agile

                                            13
Deployment Pipelines




http://www.fotopedia.com/users/chmehl   14
Deployment Pipelines

A Deployment Pipeline is an automated
manifestation of your process for getting
software from version control into the
hands of your users.




                     15
Deployment Pipelines
  (aka Build Pipelines)




                          16
Continuous what?


Continuous     Continuous   Continuous
Integration     Delivery    Deployment




                                     17
Where do I start?
Understand your Process




  http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html
                                                                       19
Understand your Organization




                               20
Developers




         http://flic.kr/p/5cK2
                                 21
Test Driven Development




http://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
  Test in Clone of Production
  Automate Deployment

                                  30
Build Pipeline in Jenkins




                            31
Testing




          32
Types of Tests




                 33
Test Strategy




Taken from Growing Object-Oriented Software, Guided by Tests
                                                               34
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.   Deploy New Binary
       5.   Start Server




                                   49
Version your Database




                        50
Database Deployments

                      HTML    .sql
                                     Production
                DBA



  DB
Change                                  Test

  DB
           Version        Build
Change
           Control       Server

 DB                                     Dev
Change




                                                  51
52
DevOps




http://www.agileweboperations.com/lean-agile-devops-related

                                                              53
DevOps: it’s about culture




http://dev2ops.org/2012/10/devops-transformation-workshop-for-technical-managers/
                                                                           54
Infrastructure as Code




                         55
Puppet




         56
Vagrant




          57
Monitoring (sucks)




  https://github.com/monitoringsucks

                                       58
Continuous Deployment




                        59
Contact Me


Mike McGarr
jmcgarr@gmail.com
@jmichaelmcgarr
http://earlyandoften.wordpress.com




                                     60
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
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
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
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
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
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
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
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

More Related Content

PPTX
Continuous Delivery Applied (Agile Richmond)
PPTX
Continuous Delivery Applied (AgileDC)
PPTX
Continuous delivery applied (DC CI User Group)
PPT
Database continuous integration, unit test and functional test
PPTX
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
PDF
TMF2014 CI-CD Workshop Michael Palotas
 
PDF
Agile Bodensee - Testautomation & Continuous Delivery Workshop
PDF
Continuous Integration for Oracle Database Development
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (AgileDC)
Continuous delivery applied (DC CI User Group)
Database continuous integration, unit test and functional test
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
TMF2014 CI-CD Workshop Michael Palotas
 
Agile Bodensee - Testautomation & Continuous Delivery Workshop
Continuous Integration for Oracle Database Development

What's hot (20)

PPT
Continuous integration
PDF
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
 
PPTX
2012 01-jenkins-udeploy
PDF
Continuous Delivery at Oracle Database Insights
PPTX
02 - Build and Deployment Management
PDF
Continuous delivery-with-maven
PPTX
Ci jenkins maven svn
PDF
Unified Deployment: Including the Mainframe in Enterprise DevOps
PPTX
Ordina Accelerator program 2019 - DevOps CI-CD
PDF
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW Developer
 
PPTX
Scaling Continuous Integration Practices to Teams with Parallel Development
PPTX
Build Trust in Your Build-to-Deployment Flow!
PPTX
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
PDF
Jenkins Meetup Pune
PPTX
Adapting Deployment Pipelines for Complex Applications
PDF
Continuous Deployment of your Application @JUGtoberfest
PPTX
Continuous delivery applied
PDF
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
PDF
Automating development-operations-v1
PDF
Top DevOps tools
Continuous integration
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
 
2012 01-jenkins-udeploy
Continuous Delivery at Oracle Database Insights
02 - Build and Deployment Management
Continuous delivery-with-maven
Ci jenkins maven svn
Unified Deployment: Including the Mainframe in Enterprise DevOps
Ordina Accelerator program 2019 - DevOps CI-CD
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW Developer
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Build Trust in Your Build-to-Deployment Flow!
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Jenkins Meetup Pune
Adapting Deployment Pipelines for Complex Applications
Continuous Deployment of your Application @JUGtoberfest
Continuous delivery applied
What is Continuous Integration? | Continuous Integration with Jenkins | DevOp...
Automating development-operations-v1
Top DevOps tools

Viewers also liked (20)

PDF
IoT and Management Systems: new dimensions for research and didactics towards...
PPT
Ad mark presentation1
PDF
Virtual dj 7 audio setup guide
PPTX
Working with Legacy Code
PDF
Pengenalan soft coral
PPT
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religia
PDF
Scatol8® system for education on Sustainability. Design and implementation of...
PDF
The Scatol8® for Sustainability: an update on the remote sensing system of en...
PPTX
W poszukiwaniu swojej drogi - webinar
PPTX
Unindented Code Cannot Possibly Work
PDF
Agile Engineering and Software Craftsmanship
PDF
Scatol8 UUDD livello A_2
PPTX
Improving Design through TDD
PPTX
Parasitosis
PPT
Weddings and beyond
PDF
ACUG 12 Clouds - Cloud Formation
PPTX
его глазами
PDF
[CLP] Game industry Day 3 - 1
PPTX
Banje u Vojvodini
PDF
Scatol8 UUDD livello A_6
IoT and Management Systems: new dimensions for research and didactics towards...
Ad mark presentation1
Virtual dj 7 audio setup guide
Working with Legacy Code
Pengenalan soft coral
Wyewoluowane moduły ludzkiego umysłu, na których opiera się religia
Scatol8® system for education on Sustainability. Design and implementation of...
The Scatol8® for Sustainability: an update on the remote sensing system of en...
W poszukiwaniu swojej drogi - webinar
Unindented Code Cannot Possibly Work
Agile Engineering and Software Craftsmanship
Scatol8 UUDD livello A_2
Improving Design through TDD
Parasitosis
Weddings and beyond
ACUG 12 Clouds - Cloud Formation
его глазами
[CLP] Game industry Day 3 - 1
Banje u Vojvodini
Scatol8 UUDD livello A_6

Similar to Continuous Delivery Applied (20)

PPTX
Continuous delivery applied (RJUG)
PDF
Continuous delivery - tools and techniques
PPTX
Linuxtag 2012 - continuous delivery - dream to reality
PPTX
Continuous Delivery
PDF
DevOps: Automate all the things
PDF
From ci to cd - LavaJug 2012
PDF
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
PPTX
Chef for DevOps - an Introduction
ODP
Devops for drupal
KEY
Everything you ever wanted to know about deployment but were afraid to ask
PPTX
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
PPTX
Continuous Integration & the Release Maturity Model
PDF
Hudson: from build jobs to build pipelines
PDF
Introduction to DevOps
PDF
Devops
PDF
Continuous Delivery Distilled
PDF
How to Introduce Continuous Delivery
PDF
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
PDF
Continuous Testing
PDF
Continuous Delivery (Internet-Briefing 2012-04-03)
Continuous delivery applied (RJUG)
Continuous delivery - tools and techniques
Linuxtag 2012 - continuous delivery - dream to reality
Continuous Delivery
DevOps: Automate all the things
From ci to cd - LavaJug 2012
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Chef for DevOps - an Introduction
Devops for drupal
Everything you ever wanted to know about deployment but were afraid to ask
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Continuous Integration & the Release Maturity Model
Hudson: from build jobs to build pipelines
Introduction to DevOps
Devops
Continuous Delivery Distilled
How to Introduce Continuous Delivery
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Continuous Testing
Continuous Delivery (Internet-Briefing 2012-04-03)

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Advanced IT Governance
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Cloud computing and distributed systems.
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
KodekX | Application Modernization Development
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Electronic commerce courselecture one. Pdf
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Per capita expenditure prediction using model stacking based on satellite ima...
Spectral efficient network and resource selection model in 5G networks
Unlocking AI with Model Context Protocol (MCP)
Advanced IT Governance
Chapter 3 Spatial Domain Image Processing.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Cloud computing and distributed systems.
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
KodekX | Application Modernization Development
GamePlan Trading System Review: Professional Trader's Honest Take
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Electronic commerce courselecture one. Pdf
Advanced Soft Computing BINUS July 2025.pdf
Review of recent advances in non-invasive hemoglobin estimation
“AI and Expert System Decision Support & Business Intelligence Systems”

Continuous Delivery Applied

  • 1. Continuous Delivery Applied Mike McGarr jmcgarr@gmail.com @jmichaelmcgarr http://earlyandoften.wordpress.com http://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 software faster and more frequently. 3
  • 4. 4
  • 5. 5
  • 6. “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 6
  • 7. Quality or Speed 7
  • 8. 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 8
  • 9. The Last Mile Manual Deployments Insufficient Configuration Management Infrequent, Error Prone Deployments 9
  • 11. Frequent Automated Deployments http://flic.kr/p/29Ree 11
  • 13. Continuous Deployment Deployment Pipelines Deployment Automation Configuration Continuous Management Testing Integration Agile 13
  • 15. Deployment Pipelines A Deployment Pipeline is an automated manifestation of your process for getting software from version control into the hands of your users. 15
  • 16. Deployment Pipelines (aka Build Pipelines) 16
  • 17. Continuous what? Continuous Continuous Continuous Integration Delivery Deployment 17
  • 18. Where do I start?
  • 19. Understand your Process http://www.michaelnygard.com/blog/2008/02/outrunning_your_headlights.html 19
  • 21. Developers http://flic.kr/p/5cK2 21
  • 25. Static Code Analysis CheckStyle 25
  • 27. The Team 27
  • 28. Agile 28
  • 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
  • 34. Test Strategy Taken from Growing Object-Oriented Software, Guided by Tests 34
  • 35. Testing is not a Phase http://flic.kr/p/6bcg 35
  • 47. Deploying 47
  • 49. Code Deployments 1. Push New Binary to Server 2. Stop Server 3. Archive Old Binary 4. Deploy New Binary 5. Start Server 49
  • 51. Database Deployments HTML .sql Production DBA DB Change Test DB Version Build Change Control Server DB Dev Change 51
  • 52. 52
  • 54. DevOps: it’s about culture http://dev2ops.org/2012/10/devops-transformation-workshop-for-technical-managers/ 54
  • 56. Puppet 56
  • 57. Vagrant 57
  • 58. Monitoring (sucks) https://github.com/monitoringsucks 58
  • 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

Editor's Notes

  • #9: Cycle Time is a measure of Continuous Delivery maturity
  • #10: 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.
  • #11: Manual DeploymentsInsufficient Configuration ManagementInfrequent, Error Prone Deployments