Your SlideShare is downloading. ×
Continuous Delivery
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

15,184
views

Published on

An introduction to the concepts behind Continuous Delivery as well as an introduction to some of the tools available for implementing continuous delivery practices on a new project. This presentation …

An introduction to the concepts behind Continuous Delivery as well as an introduction to some of the tools available for implementing continuous delivery practices on a new project. This presentation is geared towards Java developers, but is applicable to all.

Published in: Technology

4 Comments
94 Likes
Statistics
Notes
No Downloads
Views
Total Views
15,184
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
1
Comments
4
Likes
94
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
  • Requirements/Design/Development Feedback Loop is months.So much can change in that timeFeedback Loop for Release is just as long.
  • Continuous delivery is a……set of practices and principles aimed at building, testing and releasing software faster and more frequently.
  • 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.
  • Agile fixes the feedback loop problem for Requirements/Design/Development.Release Feedback is still months.
  • 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.
  • 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.
  • Does anybody know what this is a picture of?
  • Transcript

    • 1. Continuous Delivery
      Mike McGarr
      mike.mcgarr@excella.com
      http://earlyandoften.wordpress.com
      @jmichaelmcgarr
    • 2. About Me
      • J. Michael (Mike) McGarr
      • 3. Excella Consulting, Arlington VA
      • 4. Lead of Excella’s Java Center of Excellence
      • 5. Java Developer for over 11 years
      • 6. Interests:
      • 7. Developer Productivity
      • 8. XP & Agile
      • 9. Automation
      • 10. Testing
      • 11. Polyglot Programming
      2
    • 12. Agenda
      Story
      What is Continuous Delivery?
      Core Practices
      Tools
      3
    • 13. Typical Project
      4
      Analyst & Customer
      Requirements
      Architect
      Design
      Developer
      Development
      Tester
      QA
      Operations
      Release
    • 14. 5
      Waterfall
      http://flic.kr/p/6fREaa
    • 15. 6
      Problems with Waterfall
      Long QA feedback loop
      Lack of collaboration
      Inability to change direction
    • 16. WaterFall Project
      7
      Analyst & Customer
      Requirements
      Architect
      Design
      Developer
      Development
      Tester
      QA
      Operations
      Months!
      Release
    • 17. 8
      Agile
      http://flic.kr/p/PQFQg
    • 18. Agile Project
      9
      Customer
      & Team
      Customer
      & Team
      Customer
      & Team
      Requirements
      Requirements
      Requirements
      Test
      Test
      Test
      Development
      Development
      Development
      Operations
      Release
      Days!
      The
      Last
      Mile?
      Months!
    • 19. 10
      The Last Mile
      Manual Deployments
      Insufficient Configuration Management
      Infrequent, Error Prone Deployments
    • 20. 11
      Stressful Releases
    • 21. Agenda
      Story
      What is Continuous Delivery?
      Core Practices
      Tools
      12
    • 22. 13
      What is
      Continuous Delivery?
    • 23. 14
    • 24. 15
    • 25. …a set of practices and principles aimed at, building, testing, and releasing software faster and more frequently.
      16
      Continuous Delivery is…
    • 26. “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
      17
    • 27. Goals
      Cycle Time
      Quality
      18
    • 28. “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
      19
      Cycle Time
    • 29. http://flic.kr/p/y8KV8
      20
      Done means Released
    • 30. 21
      Frequent Automated Deployments
      http://flic.kr/p/29Ree
    • 31. 22
      Continuous what?
      Continuous
      Delivery
      Continuous
      Deployment
      Continuous
      Integration
    • 32. Agenda
      Story
      What is Continuous Delivery?
      Core Practices
      Tools
      23
    • 33. 24
      Core Practices
    • 34. 25
      Continuous Deployment
      Build Pipelines
      Deployment Automation
      Configuration
      Management
      Continuous Integration
      Testing
      Agile
    • 35. 26
      Configuration Management
      Version Everything!
      Single Identifier
      Dependencies
      App Configurations
      Data
      Environments
    • 36. 27
      Continuous
      Integration
      http://flic.kr/p/5GpzSM
    • 37. 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
    • 38. 29
      Recommended Practices
      Extreme Programming (XP)
      Fail a Build for Design Breaches
      Fail a Build for Slow Tests
      Fail a Build for Warnings & Code Style Breaches
    • 39. 30
      Testing
    • 40. 31
      Kinds of Tests
      Unit Tests
      Integration Tests
      Functional/Acceptance Tests
      Performance & Load Tests
      Penetration Tests
      Exploratory Tests
    • 41. 32
      Testing Strategy
      Identify and Prioritize Project Risk
      Decide what Actions to Take
      Tests = Executable Specifications
      Confidence
    • 42. 33
    • 43. 34
      Testing Recommendations
      Automate your Tests
      Use Fakes/Mocks
      Automated Acceptance Testing
    • 44. 35
      Automated Acceptance Tests
      Fast Feedback
      Reduce Tester workload
      Testers can do Exploratory Testing
      Regression Tests
      Requirements can be generated from Tests
    • 45. Acceptance Test Approaches
      Acceptance Test Driven Development (ATDD)
      Behavior Driven Development (BDD)
      Given [some precondition]
      When [some event]
      Then [some result]
      36
    • 46. http://flic.kr/p/6VmGxK
      37
      Deployment Automation
    • 47. 38
      Deployment Automation
      Artifact
      Repository
      Application
      Configurations
      Middleware
      Version
      Control
      Operating System
      Database
    • 48. 39
      Use Appropriate Technology
      http://flic.kr/p/6pmtQL
    • 49. Scripting Approaches
      Script logs into each box and runs deployment script commands
      Script runs locally, each remote machine has agent execute script
      Package app using platform’s packaging technology, and use infrastructure management tools push new versions
      40
    • 50. Database Deployments
      Version your Database
      Evolve Your Database Incrementally
      41
    • 51. Environment Management
      Version your Application Configuration
      Version your Operating System
      42
    • 52. 43
      Deploying to the Cloud
      http://flic.kr/p/4R35Dd
    • 53. 44
      Build Pipelines
      http://www.fotopedia.com/users/chmehl
    • 54. Build Pipelines
      A Build Pipeline is an automated manifestation of your process for getting software from version control into the hands of your users.
      45
    • 55. Synonyms
      Build Pipeline
      Deployment Pipeline
      Continuous Integration Pipeline
      Deployment Production Line
      Living Build
      46
    • 56. BuildPipelines
      A Chain of Jobs
      Early Jobs run Fast
      Every Check-in creates a new Pipeline
      When a Job Fails, the Pipeline fails
      Keep Code Production Ready
      47
    • 57. 48
      Stages of a Pipeline
    • 58. 49
      Pipeline Practices
      Build Once, Deploy Many
      Deploy the Same Way to All Environments
      Smoke Test you Deployments
      Deploy into a Copy of Production
      Each Change should Propagate Instantly
      If any part fails, Stop the line
    • 59. 50
      Pull System
    • 60. 51
      Continuous Deployment
    • 61. Agenda
      Story
      What is Continuous Delivery?
      Core Practices
      Tools
      52
    • 62. 53
      Tools
      http://flic.kr/p/5cK2
    • 63. Version Control
      54
    • 64. Dependency Management
      55
    • 65. Database Management
      56
    • 66. Infrastructure Management
      57
    • 67. 58
      Continuous Integration
    • 68. 59
      Build Automation
    • 69. 60
      Testing Tools
    • 70. 61
      Acceptance Test Tools
    • 71. 62
      Questions
    • 72. 63
      Contact Me
      Mike McGarr
      mike.mcgarr@excella.com
      http://earlyandoften.wordpress.com
      @jmichaelmcgarr