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
PRO

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 Slide

  2. Once upon a time…

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. Life was tough
    back then

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 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 Slide

  13. The causes were
    obvious

    View Slide

  14. The causes were
    obvious
    “snowflake” environments

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. Where do we start?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 Slide

  24. Idea: Treat the
    container as code

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. Idea: Treat
    deployment as code

    View Slide

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

    View Slide

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

    View Slide

  31. Idea: Build the app
    as a single entity

    View Slide

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

    View Slide

  33. Idea: Make all the
    servers look the same

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  38. Idea: Automate the
    entire deployment

    View Slide

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

    View Slide

  40. Conan the Deployer

    View Slide

  41. Conan the Deployer
    - Create a new container instance

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 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 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 Slide

  48. This was the big
    breakthrough

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. Then optimise…

    View Slide

  53. Then optimise…
    Blue-Green Deployments

    View Slide

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

    View Slide

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

    View Slide

  56. What did we learn?

    View Slide

  57. What did we learn?
    Focus on the outcome

    View Slide

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

    View Slide

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

    View 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 Slide

  61. Epilogue

    View Slide

  62. Epilogue
    Sam Newman develops DbDeploy

    View Slide

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

    View 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

    View 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

    View Slide

  66. 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 Slide

  67. Whither DevOps?

    View Slide

  68. Whither DevOps?
    Commoditise All the Things!

    View Slide

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

    View Slide

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

    View Slide

  71. 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 Slide

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

    View Slide