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

The Birth of DevOps

The Birth of DevOps

From 2½ Days to 2½ Seconds - the Birth of DevOps

This is an experience report from the mid-2000s, where a fifty-person programme team was being held up by test environments that took an average of 2½ days to prepare. By developing strategies like Blue/Green Deployments, the Single Deployable Artifact, Container Templates, the Build Production Line and many of the other principles that led to Continuous Delivery, we brought this down to only a few minutes, with a near-instantaneous cutover for the users. The legendary team included the likes of Julian "Build Doctor" Simpson, Chris Read, Sam Newman and both the authors of the Continuous Delivery book, only one of whom swore a lot. Dan North is not the father of DevOps but he may be its midwife. He definitely assisted at the birth.

Daniel Terhorst-North

June 19, 2014
Tweet

More Decks by Daniel Terhorst-North

Other Decks in Technology

Transcript

  1. From 2½ days to 2½ seconds
    - the birth of DevOps
    Dan North
    @tastapod

    View full-size slide

  2. Once upon a time…

    View full-size slide

  3. Once upon a time…
    back in the mists of 2005

    View full-size slide

  4. Once upon a time…
    back in the mists of 2005
    before Continuous Delivery™

    View full-size slide

  5. Once upon a time…
    back in the mists of 2005
    before Continuous Delivery™
    a team was stuck.

    View full-size slide

  6. Once upon a time…
    back in the mists of 2005
    before Continuous Delivery™
    a team was stuck.
    This is their story.

    View full-size slide

  7. Life was tough
    back then

    View full-size slide

  8. Life was tough
    back then
    2½ days to deploy a build

    View full-size slide

  9. Life was tough
    back then
    2½ days to deploy a build
    Testers were frustrated!

    View full-size slide

  10. Life was tough
    back then
    2½ days to deploy a build
    Testers were frustrated!
    Developers were frustrated!

    View full-size slide

  11. Life was tough
    back then
    2½ days to deploy a build
    Testers were frustrated!
    Developers were frustrated!
    We were bottlenecked at testing :(

    View full-size slide

  12. Life was tough
    back then
    2½ days to deploy a build
    Testers were frustrated!
    Developers were frustrated!
    We were bottlenecked at testing :(
    actually bottlenecked at deployment!

    View full-size slide

  13. The causes were
    obvious

    View full-size slide

  14. The causes were
    obvious
    “snowflake” environments

    View full-size slide

  15. The causes were
    obvious
    “snowflake” environments
    too many moving parts

    View full-size slide

  16. The causes were
    obvious
    “snowflake” environments
    too many moving parts
    multiple teams

    View full-size slide

  17. The causes were
    obvious
    “snowflake” environments
    too many moving parts
    multiple teams
    contention for resources

    View full-size slide

  18. Where do we start?

    View full-size slide

  19. Where do we start?
    "Elevate the constraint"

    View full-size slide

  20. Where do we start?
    "Elevate the constraint"
    Engage Operations as customer

    View full-size slide

  21. Where do we start?
    "Elevate the constraint"
    Engage Operations as customer
    Understand the manual steps

    View full-size slide

  22. Where do we start?
    "Elevate the constraint"
    Engage Operations as customer
    Understand the manual steps
    Identify where time is being sunk

    View full-size slide

  23. Where do we start?
    "Elevate the constraint"
    Engage Operations as customer
    Understand the manual steps
    Identify where time is being sunk
    Focus on the outcome, not the steps

    View full-size slide

  24. Idea: Treat the
    container as code

    View full-size slide

  25. Idea: Treat the
    container as code
    WebLogic is just XML

    View full-size slide

  26. Idea: Treat the
    container as code
    WebLogic is just XML
    so create templates

    View full-size slide

  27. Idea: Treat the
    container as code
    WebLogic is just XML
    so create templates
    and version-control them!

    View full-size slide

  28. Idea: Treat
    deployment as code

    View full-size slide

  29. Idea: Treat
    deployment as code
    Instrument the UI tools

    View full-size slide

  30. Idea: Treat
    deployment as code
    Instrument the UI tools
    Learn the command-line tools

    View full-size slide

  31. Idea: Build the app
    as a single entity

    View full-size slide

  32. Idea: Build the app
    as a single entity
    Single Deployable Artefact

    View full-size slide

  33. Idea: Make all the
    servers look the same

    View full-size slide

  34. Idea: Make all the
    servers look the same
    Same OS

    View full-size slide

  35. Idea: Make all the
    servers look the same
    Same OS
    Same packages

    View full-size slide

  36. Idea: Make all the
    servers look the same
    Same OS
    Same packages
    Same versions

    View full-size slide

  37. Idea: Make all the
    servers look the same
    Same OS
    Same packages
    Same versions
    Same(ish) settings

    View full-size slide

  38. Idea: Automate the
    entire deployment

    View full-size slide

  39. Idea: Automate the
    entire deployment
    Conan the Deployer!

    View full-size slide

  40. Conan the Deployer

    View full-size slide

  41. Conan the Deployer
    - Create a new container instance

    View full-size slide

  42. Conan the Deployer
    - Create a new container instance
    - Generate container config

    View full-size slide

  43. Conan the Deployer
    - Create a new container instance
    - Generate container config
    - Deploy container config

    View full-size slide

  44. Conan the Deployer
    - Create a new container instance
    - Generate container config
    - Deploy container config
    - Bring up the master node

    View full-size slide

  45. Conan the Deployer
    - Create a new container instance
    - Generate container config
    - Deploy container config
    - Bring up the master node
    - Deploy the app into the node

    View full-size slide

  46. Conan the Deployer
    - Create a new container instance
    - Generate container config
    - Deploy container config
    - Bring up the master node
    - Deploy the app into the node
    - Bring up the app

    View full-size slide

  47. Conan the Deployer
    - Create a new container instance
    - Generate container config
    - Deploy container config
    - Bring up the master node
    - Deploy the app into the node
    - Bring up the app
    - Smoke test the environment

    View full-size slide

  48. This was the big
    breakthrough

    View full-size slide

  49. This was the big
    breakthrough
    Any build into any environment

    View full-size slide

  50. This was the big
    breakthrough
    Any build into any environment
    2½ days down to 25 minutes!

    View full-size slide

  51. This was the big
    breakthrough
    Any build into any environment
    2½ days down to 25 minutes!
    Deterministically.

    View full-size slide

  52. Then optimise…

    View full-size slide

  53. Then optimise…
    Blue-Green Deployments

    View full-size slide

  54. Then optimise…
    Blue-Green Deployments
    Create self-serve deployments

    View full-size slide

  55. Then optimise…
    Blue-Green Deployments
    Create self-serve deployments
    Sub-second cutover, during office hours!

    View full-size slide

  56. What did we learn?

    View full-size slide

  57. What did we learn?
    Focus on the outcome

    View full-size slide

  58. What did we learn?
    Focus on the outcome
    Focus on the current bottleneck

    View full-size slide

  59. What did we learn?
    Focus on the outcome
    Focus on the current bottleneck
    You don't "have an investment" in
    hardware

    View full-size slide

  60. What did we learn?
    Focus on the outcome
    Focus on the current bottleneck
    You don't "have an investment" in
    hardware
    DevOps requires collaboration

    View full-size slide

  61. Epilogue
    Sam Newman develops DbDeploy

    View full-size slide

  62. Epilogue
    Sam Newman develops DbDeploy
    Jez Humble and Chris Read (and me :)
    describe the Build Production Line

    View full-size slide

  63. Epilogue
    Sam Newman develops DbDeploy
    Jez Humble and Chris Read (and me :)
    describe the Build Production Line
    Chris Read co-creates DevOps Days

    View full-size slide

  64. Epilogue
    Sam Newman develops DbDeploy
    Jez Humble and Chris Read (and me :)
    describe the Build Production Line
    Chris Read co-creates DevOps Days
    Julian Simpson becomes the Build Doctor

    View full-size slide

  65. Epilogue
    Sam Newman develops DbDeploy
    Jez Humble and Chris Read (and me :)
    describe the Build Production Line
    Chris Read co-creates DevOps Days
    Julian Simpson becomes the Build Doctor
    Jez Humble and Dave Farley write “Continuous
    Delivery” and win Jolt Award

    View full-size slide

  66. Whither DevOps?

    View full-size slide

  67. Whither DevOps?
    Commoditise All the Things!

    View full-size slide

  68. Whither DevOps?
    Commoditise All the Things!
    Cloud All the Things!

    View full-size slide

  69. Whither DevOps?
    Commoditise All the Things!
    Cloud All the Things!
    Hug a SysAdmin today

    View full-size slide

  70. Whither DevOps?
    Commoditise All the Things!
    Cloud All the Things!
    Hug a SysAdmin today
    And remember: A “build team” is still an
    anti-pattern!

    View full-size slide

  71. Thanks for listening
    @tastapod
    [email protected]
    http:/
    /dannorth.net
    !
    Don’t forget to vote!

    View full-size slide