Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous Delivery

Jez Humble
November 10, 2015

Continuous Delivery

Businesses rely on getting valuable new software into the hands of users as fast as possible, while making sure that they keep their production environments stable. Continuous Delivery is a revolutionary and scalable approach to software delivery that enables any team, including teams within enterprise IT organizations, to achieve rapid, reliable releases through better collaboration between developers, testers, DBAs and operations, and automation of the build, deploy, test and release process.

I’ll start by discussing the value of CD to the business, inspired by the lean startup movement. I’ll then present the principles and practices involved in continuous delivery, including value stream mapping, the deployment pipeline, acceptance test driven development, zero-downtime releases, and incremental development. I’ll cover how CD is enabled by an ecosystem including Devops, cloud computing, agile testing, and continuous deployment. Finally I’ll talk about how continuous delivery can co-exist with ITIL and compliance in an enterprise environment.

Video here: https://www.youtube.com/watch?v=skLJuksCRTw

Jez Humble

November 10, 2015
Tweet

More Decks by Jez Humble

Other Decks in Technology

Transcript

  1. @jezhumble
    continuous delivery

    View Slide

  2. @jezhumble
    continuous delivery: why, what, principles
    building quality in
    principles and patterns for low-risk releases
    overview

    View Slide

  3. @jezhumble
    what is continuous delivery?
    The ability to get changes—features, configuration changes, bug
    fixes, experiments—into production or into the hands of users
    safely and quickly in a sustainable way.

    View Slide

  4. @jezhumble
    increase software quality and stability
    make releases painless, low risk events
    reduce time to market
    increase customer and employee satisfaction
    reduce cost of ongoing software development
    why continuous delivery?

    View Slide

  5. scrum-
    fall
    water-

    View Slide

  6. @jezhumble
    Jon Jenkins, “Velocity Culture, The Unmet Challenge in Ops” 2011 | http://bit.ly/1vJo1Ya

    View Slide

  7. “Evaluating well-designed and executed experiments that
    were designed to improve a key metric, only about 1/3 were
    successful at improving the key metric!”
    do less
    “Online Experimentation at Microsoft”, Kohavi et al | http://stanford.io/130uW6X

    View Slide

  8. @jezhumble
    computers do repetitive tasks, people solve problems
    build quality in
    work in small batches
    everyone is responsible
    relentlessly pursue continuous improvement
    key principles

    View Slide

  9. @jezhumble
    releasing frequently
    John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr

    View Slide

  10. @jezhumble
    optimize for mtrs

    View Slide

  11. @jezhumble
    agile manifesto
    Our highest priority is to satisfy the customer through early
    and continuous delivery of valuable software

    View Slide

  12. @jezhumble
    production-ready software
    Fast, automated feedback on the production readiness of your
    applications every time there is a change — to code,
    infrastructure, or configuration.

    View Slide

  13. @jezhumble
    build quality in
    “Cease dependence on
    mass inspection to
    achieve quality. Improve
    the process and build
    quality into the product in
    the first place”
    W. Edwards Deming

    View Slide

  14. @jezhumble
    architecture
    patterns and practices
    collaboration
    continuous delivery

    View Slide

  15. @jezhumble
    configuration management
    continuous integration
    automated testing
    ingredients

    View Slide

  16. Mainline Server
    Develop
    Build
    Build
    pull
    Local
    Workstation
    Build
    push

    Done!

    View Slide

  17. Mainline Server
    Develop
    Build
    Build
    pull
    Local
    Workstation
    Build
    push

    Done!
    Everyone Commits
    To the Mainline
    Every Day

    View Slide

  18. @jezhumble
    continuous integration at scale
    Jason Leyba | http://queue.acm.org/blogposting.cfm?id=78323

    View Slide

  19. John Penix | “Large Scale Continuous Testing in the Cloud” | http://bit.ly/1BYMf70

    View Slide

  20. @jezhumble
    Different Kinds of Testing
    Diagram invented by Brian Marick

    View Slide

  21. @jezhumble
    deployment pipeline

    View Slide

  22. @jezhumble
    Trade Offs

    View Slide

  23. low risk releases
    are incremental
    blue-green deployments
    canary releases
    dark launching
    production immune system
    feature toggles
    For more on these patterns, read http://bit.ly/low-risk-releases

    View Slide

  24. @jezhumble
    STATIC CONTENT
    /static/1.1
    /static/1.0
    DEPENDENT SERVICE
    1.0 1.1
    Abstraction layer Abstraction layer
    APPLICATION
    Database
    Router /
    Load balancer
    Interwebs
    expand / contract
    For more on this pattern, read http://bit.ly/low-risk-releases

    View Slide

  25. @jezhumble
    incremental db change
    address address1 address2
    address address1 address2
    315 montgomery st,
    16th floor
    null null
    address address1 address2
    1 market st, 30th
    floor
    1 market st 30th floor

    View Slide

  26. blue-green
    deployments
    For more on this pattern, read https://martinfowler.com/bliki/BlueGreenDeployment.html

    View Slide

  27. router
    web
    server
    app
    server
    DB
    server
    For more on this pattern, read https://martinfowler.com/bliki/BlueGreenDeployment.html

    View Slide

  28. router
    v1.1 v1.1 v1.1
    web
    server
    app
    server
    DB
    server
    For more on this pattern, read https://martinfowler.com/bliki/BlueGreenDeployment.html

    View Slide

  29. router
    v1.1 v1.1 v1.1
    web
    server
    app
    server
    DB
    server
    v1.2 v1.2 v1.2
    For more on this pattern, read https://martinfowler.com/bliki/BlueGreenDeployment.html

    View Slide

  30. router
    v1.1 v1.1 v1.1
    web
    server
    app
    server
    DB
    server
    v1.2 v1.2 v1.2
    For more on this pattern, read https://martinfowler.com/bliki/BlueGreenDeployment.html

    View Slide

  31. @jezhumble
    canary releasing
    For more on this pattern, read http://bit.ly/low-risk-releases

    View Slide

  32. release !=
    deployment

    View Slide

  33. [featureToggles]
    wobblyFoobars: true
    flightyForkHandles: false
    Config File

    ... various UI elements

    some.jsp
    forkHandle = (featureConfig.isOn(‘flightlyForkHandles)) ?
    new FlightyForkHander(aCandle) :
    new ForkHandler(aCandle)
    other.java
    Feature Toggles
    For more on this pattern, read https://martinfowler.com/articles/feature-toggles.html

    View Slide

  34. dark launching
    For more on this pattern, read http://bit.ly/low-risk-releases

    View Slide

  35. @jezhumble
    For more on this pattern, read http://bit.ly/low-risk-releases

    View Slide

  36. @jezhumble
    For more on this pattern, read http://bit.ly/low-risk-releases

    View Slide

  37. Branch by Abstraction
    For more on this pattern, read https://martinfowler.com/bliki/BranchByAbstraction.html

    View Slide

  38. Application
    New
    Library
    Library
    For more on this pattern, read https://martinfowler.com/bliki/BranchByAbstraction.html

    View Slide

  39. Application
    New
    Library
    Library
    Interface implements
    For more on this pattern, read https://martinfowler.com/bliki/BranchByAbstraction.html

    View Slide

  40. Application
    New
    Library
    Library
    Interface implements
    For more on this pattern, read https://martinfowler.com/bliki/BranchByAbstraction.html

    View Slide

  41. Application
    New
    Library
    Library
    Interface implements
    For more on this pattern, read https://martinfowler.com/bliki/BranchByAbstraction.html

    View Slide

  42. Application
    New
    Library
    Interface implements
    For more on this pattern, read https://martinfowler.com/bliki/BranchByAbstraction.html

    View Slide

  43. For more on this pattern, read https://martinfowler.com/bliki/BranchByAbstraction.html

    View Slide

  44. Jesse Robbins, “Master of Disaster” @ Amazon| @jesserobbins | http://oreil.ly/1HRKUVE
    ”don’t fight stupid
    make more awesome!”

    View Slide

  45. thank you!
    © 2016-7 DevOps Research and Assessment LLC
    https://devops-research.com/
    To receive the following:
    • 30% off my new video course: creating high performance organizations
    • 50% off my CD video training, interviews with Eric Ries, and more
    • A copy of this presentation
    • A 100 page excerpt from Lean Enterprise
    • An excerpt from The DevOps Handbook
    • A 20m preview of my Continuous Delivery video workshop
    Just pick up your phone and send an email
    To: [email protected]
    Subject: devops

    View Slide