• Save
Continuous Delivery
Upcoming SlideShare
Loading in...5
×
 

Continuous Delivery

on

  • 15,513 views

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.

Statistics

Views

Total Views
15,513
Views on SlideShare
14,957
Embed Views
556

Actions

Likes
87
Downloads
1
Comments
4

17 Embeds 556

http://earlyandoften.wordpress.com 270
http://www.mikemcgarr.com 120
http://www.continuousintegration.me 89
http://www.linkedin.com 25
http://www.scoop.it 11
http://localhost 8
http://www.plurk.com 8
url_unknown 6
http://jmcgarr.github.io 6
https://www.linkedin.com 4
http://a0.twimg.com 2
https://www.facebook.com 2
http://translate.googleusercontent.com 1
https://twimg0-a.akamaihd.net 1
http://www.facebook.com 1
http://blog.devopsguys.com 1
http://paper.li 1
More...

Accessibility

Categories

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.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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?

Continuous Delivery Continuous Delivery Presentation Transcript

  • Continuous Delivery
    Mike McGarr
    mike.mcgarr@excella.com
    http://earlyandoften.wordpress.com
    @jmichaelmcgarr
  • About Me
    • J. Michael (Mike) McGarr
    • Excella Consulting, Arlington VA
    • Lead of Excella’s Java Center of Excellence
    • Java Developer for over 11 years
    • Interests:
    • Developer Productivity
    • XP & Agile
    • Automation
    • Testing
    • Polyglot Programming
    2
  • Agenda
    Story
    What is Continuous Delivery?
    Core Practices
    Tools
    3
  • Typical Project
    4
    Analyst & Customer
    Requirements
    Architect
    Design
    Developer
    Development
    Tester
    QA
    Operations
    Release
  • 5
    Waterfall
    http://flic.kr/p/6fREaa
  • 6
    Problems with Waterfall
    Long QA feedback loop
    Lack of collaboration
    Inability to change direction
  • WaterFall Project
    7
    Analyst & Customer
    Requirements
    Architect
    Design
    Developer
    Development
    Tester
    QA
    Operations
    Months!
    Release
  • 8
    Agile
    http://flic.kr/p/PQFQg
  • 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!
  • 10
    The Last Mile
    Manual Deployments
    Insufficient Configuration Management
    Infrequent, Error Prone Deployments
  • 11
    Stressful Releases
  • Agenda
    Story
    What is Continuous Delivery?
    Core Practices
    Tools
    12
  • 13
    What is
    Continuous Delivery?
  • 14
  • 15
  • …a set of practices and principles aimed at, building, testing, and releasing software faster and more frequently.
    16
    Continuous Delivery is…
  • “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
  • Goals
    Cycle Time
    Quality
    18
  • “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
  • http://flic.kr/p/y8KV8
    20
    Done means Released
  • 21
    Frequent Automated Deployments
    http://flic.kr/p/29Ree
  • 22
    Continuous what?
    Continuous
    Delivery
    Continuous
    Deployment
    Continuous
    Integration
  • Agenda
    Story
    What is Continuous Delivery?
    Core Practices
    Tools
    23
  • 24
    Core Practices
  • 25
    Continuous Deployment
    Build Pipelines
    Deployment Automation
    Configuration
    Management
    Continuous Integration
    Testing
    Agile
  • 26
    Configuration Management
    Version Everything!
    Single Identifier
    Dependencies
    App Configurations
    Data
    Environments
  • 27
    Continuous
    Integration
    http://flic.kr/p/5GpzSM
  • 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
    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
  • 30
    Testing
  • 31
    Kinds of Tests
    Unit Tests
    Integration Tests
    Functional/Acceptance Tests
    Performance & Load Tests
    Penetration Tests
    Exploratory Tests
  • 32
    Testing Strategy
    Identify and Prioritize Project Risk
    Decide what Actions to Take
    Tests = Executable Specifications
    Confidence
  • 33
  • 34
    Testing Recommendations
    Automate your Tests
    Use Fakes/Mocks
    Automated Acceptance Testing
  • 35
    Automated Acceptance Tests
    Fast Feedback
    Reduce Tester workload
    Testers can do Exploratory Testing
    Regression Tests
    Requirements can be generated from Tests
  • Acceptance Test Approaches
    Acceptance Test Driven Development (ATDD)
    Behavior Driven Development (BDD)
    Given [some precondition]
    When [some event]
    Then [some result]
    36
  • http://flic.kr/p/6VmGxK
    37
    Deployment Automation
  • 38
    Deployment Automation
    Artifact
    Repository
    Application
    Configurations
    Middleware
    Version
    Control
    Operating System
    Database
  • 39
    Use Appropriate Technology
    http://flic.kr/p/6pmtQL
  • 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
  • Database Deployments
    Version your Database
    Evolve Your Database Incrementally
    41
  • Environment Management
    Version your Application Configuration
    Version your Operating System
    42
  • 43
    Deploying to the Cloud
    http://flic.kr/p/4R35Dd
  • 44
    Build Pipelines
    http://www.fotopedia.com/users/chmehl
  • 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
  • Synonyms
    Build Pipeline
    Deployment Pipeline
    Continuous Integration Pipeline
    Deployment Production Line
    Living Build
    46
  • 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
  • 48
    Stages of a Pipeline
  • 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
  • 50
    Pull System
  • 51
    Continuous Deployment
  • Agenda
    Story
    What is Continuous Delivery?
    Core Practices
    Tools
    52
  • 53
    Tools
    http://flic.kr/p/5cK2
  • Version Control
    54
  • Dependency Management
    55
  • Database Management
    56
  • Infrastructure Management
    57
  • 58
    Continuous Integration
  • 59
    Build Automation
  • 60
    Testing Tools
  • 61
    Acceptance Test Tools
  • 62
    Questions
  • 63
    Contact Me
    Mike McGarr
    mike.mcgarr@excella.com
    http://earlyandoften.wordpress.com
    @jmichaelmcgarr