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

DevOpsDaysPortugal 2019 - Diogo Oliveira - Movi...

DevOpsDaysPortugal 2019 - Diogo Oliveira - Moving Mountains: The Real-World Enterprise Journey to Continuous Delivery

OutSystems set out on a journey to Continuous Delivery, dramatically changing the development processes, delivery, and quality, while at the same time, continuing to develop and deliver new product features.

A few years ago, OutSystems had an annual release cadence. The once-a-year release was blocking us from having customer feedback in the loop as early as we should and our lead time was huge.

Customers want value as fast as possible, and their feedback is of the utmost importance. We needed to be faster and release more often (while maintaining great quality). In the last few years, we have transformed how we deliver software, and we’d love to share our journey and experience.

Avatar for DevOpsDaysPortugal

DevOpsDaysPortugal

June 03, 2019
Tweet

More Decks by DevOpsDaysPortugal

Other Decks in Technology

Transcript

  1. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  2. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  3. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  4. 10

  5. Multiple stacks Multiple browsers Multiple devices Need to execute ~30.000

    distinct fully automated tests * possible stack combinations (+300.000 test executions) Quality assurance is a big challenge
  6. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  7. 19 Major release every 2 years Maintenance team Reintegrate hell

    Monolithic product Very long feedback loops
  8. 20 Major release every 2 years Maintenance team Reintegrate hell

    Monolithic product Very long feedback loops Painful product stabilization
  9. 21 Major release every 2 years Maintenance team Reintegrate hell

    Monolithic product Very long feedback loops Painful product stabilization Lack of product / tests ownership
  10. 22 Major release every 2 years Maintenance team Reintegrate hell

    Monolithic product Very long feedback loops Painful product stabilization Lack of product / tests ownership Lack of sustainable CI/CD practice
  11. 23 Major release every 2 years Maintenance team Reintegrate hell

    Monolithic product Very long feedback loops Painful product stabilization Lack of product / tests ownership Lack of sustainable CI/CD practice Manual build and test infrastructure provisioning
  12. This context was highly inefficient and would not enable us

    to scale. We need to be much more efficient! 24
  13. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  14. 29 Shared across many teams Need for continuous work integration

    Need for good collaboration New major with support for mobile apps
  15. 30 Shared across many teams High risk project Need for

    continuous work integration Need for good collaboration New major with support for mobile apps
  16. 31 Shared across many teams High risk project Need for

    frequent releases Need for continuous work integration Need for good collaboration New major with support for mobile apps
  17. 32 Shared across many teams High risk project Need for

    continuous feedback on changes Need for frequent releases Need for continuous work integration Need for good collaboration New major with support for mobile apps
  18. 36

  19. 37

  20. 38 Lesson Learned People need to be aware of their

    challenges and the value of doing things differently
  21. 41 Lesson Learned Empowering development teams should be encouraged Lesson

    Learned Invest on infrastructure automation from day 0
  22. 42 Lesson Learned Empowering development teams should be encouraged Lesson

    Learned Invest on infrastructure automation from day 0 Lesson Learned Elasticity and reliability are crucial for reliable and fast feedback loop
  23. 47 GoCD to orchestrate the pipeline Automatic failure assignment Runs

    all tests of main stack Fast feedback loop Heavy parallelization with discardable agents
  24. 48 GoCD to orchestrate the pipeline Automatic failure assignment Runs

    all tests of main stack Fast feedback loop Heavy parallelization with discardable agents Make it visible (on TVs)
  25. 50 Lesson Learned Constant visibility over the build pipeline is

    essential Lesson Learned You need to treat your build pipeline as a product
  26. 54 Development & QA best practices New release model Strategic

    project called “Rethinking R&D Development Model”
  27. 55 Development & QA best practices New release model Decided

    to work in a single branch (per major)! b10_0_0 (development is done in b10_0_0 for major version 10.0) b9_1_0 (development is done in b9_1_0 for major version 9.1) Trunk (development is done in Trunk for the most recent major version, e.g.: 11.0) Strategic project called “Rethinking R&D Development Model”
  28. 56 Lesson Learned Working in single branch might be hard

    at the beginning, but it is the way to go
  29. 57

  30. Teams organization more aligned with the desired product architecture (Conway’s

    Law) 60 Maintenance is now part of each team’s responsibilities
  31. Teams organization more aligned with the desired product architecture (Conway’s

    Law) 61 Maintenance is now part of each team’s responsibilities Teams have more autonomy
  32. Teams organization more aligned with the desired product architecture (Conway’s

    Law) 62 Maintenance is now part of each team’s responsibilities Teams have more autonomy Teams have clear ownership on product and tests
  33. 64 But hey! Now that I have autonomy, why do

    I need to wait for other teams? Minion, a developer at OutSystems
  34. 65

  35. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  36. 69

  37. 70

  38. 71 • Low change risk • Smooth update (easy to

    revert) • Potential for incremental value
  39. 72 • Low change risk • Smooth update (easy to

    revert) • Potential for incremental value • High change risk • Effortful update (not easy to revert) • More disruptive / large scale work
  40. 73 • Low change risk • Smooth update (easy to

    revert) • Potential for incremental value • High change risk • Effortful update (not easy to revert) • More disruptive / large scale work We’re releasing all together Aren’t we wasting opportunities?
  41. 77 Compress all feedback loops Build Pipeline < 1h all

    validations (~30.000 tests) Dogfooding Get real feedback usage fast (in one of our largest factories)
  42. 78 Compress all feedback loops Build Pipeline < 1h all

    validations (~30.000 tests) Dogfooding Get real feedback usage fast (in one of our largest factories) Telemetry Instrument the code to understand product usage and issues
  43. 80 Lesson Learned Having fast feedback is not a choice,

    it needs to be fast Lesson Learned We need to know how our users use the product, as soon as possible
  44. 83 Value at the customers hands now Auto update Automatic

    update for our IDE Automatic Cloud Rollout For LifeTime
  45. 84 Value at the customers hands now Auto update Automatic

    update for our IDE Beta version Get feedback as soon as possible for our IDE Automatic Cloud Rollout For LifeTime
  46. 85 Value at the customers hands now Auto update Automatic

    update for our IDE Beta version Get feedback as soon as possible for our IDE Feature Toggling Code can be delivered at any time Automatic Cloud Rollout For LifeTime
  47. 86 Lesson Learned If we want our customers to use

    the latest product version we need to control the product distribution until it is in the hands of users and being used
  48. 87

  49. Things are going pretty fast We can’t depend on some

    specific teams to have the product out there 88
  50. Things are going pretty fast We can’t depend on some

    specific teams to have the product out there Everyone needs autonomy! 89
  51. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  52. Knowledge about release and build pipeline ecosystem in a specific

    group of people 92 Engineering Productivity Group
  53. Knowledge about release and build pipeline ecosystem in a specific

    group of people 93 Making a new release Engineering Productivity Group
  54. Knowledge about release and build pipeline ecosystem in a specific

    group of people 94 Making a new release Maintaining and evolving the build pipeline (build system, CI/CD, etc.) Engineering Productivity Group
  55. 97 Enable autonomous release process Enable autonomous change of build

    pipeline ecosystem and infra Automate the release process 1-click release of new product versions
  56. 98 Enable autonomous release process Enable autonomous change of build

    pipeline ecosystem and infra Automate the release process 1-click release of new product versions Leverage Pipeline as Code to change the build pipeline Implement a modern and easily changed build system (using Cake)
  57. 99 Enable autonomous release process Enable autonomous change of build

    pipeline ecosystem and infra Automate the release process 1-click release of new product versions Leverage Pipeline as Code to change the build pipeline Implement a modern and easily changed build system (using Cake) Ongoing effort...
  58. 10 0 Lesson Learned In order to grow and scale,

    teams should have full control on how they validate and deliver the product areas they own
  59. Setting the stage About me About OutSystems Continuous Delivery journey

    The beginning Efficiency phase Acceleration phase Autonomy phase Takeaways
  60. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process 10 5
  61. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure 10 6
  62. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 10 7
  63. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 Elasticity and reliability are crucial to scale CI/CD 10 8
  64. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 Elasticity and reliability are crucial to scale CI/CD Fast Feedback 10 9
  65. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 Elasticity and reliability are crucial to scale CI/CD Fast Feedback Developers should have very fast feedback on their product changes 11 0
  66. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 Elasticity and reliability are crucial to scale CI/CD Fast Feedback Developers should have very fast feedback on their product changes Everyone needs to know how users use the product as soon as possible 11 1
  67. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 Elasticity and reliability are crucial to scale CI/CD Fast Feedback Developers should have very fast feedback on their product changes Everyone needs to know how users use the product as soon as possible Treat your Build Pipeline as a Product 11 2
  68. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 Elasticity and reliability are crucial to scale CI/CD Fast Feedback Developers should have very fast feedback on their product changes Everyone needs to know how users use the product as soon as possible Treat your Build Pipeline as a Product Build pipeline is not a “side project”, it is an important product 11 3
  69. Autonomy Teams need autonomy on their product area Teams need

    autonomy and full control on their delivery process Infrastructure Infrastructure should be a concern from day 0 Elasticity and reliability are crucial to scale CI/CD Fast Feedback Developers should have very fast feedback on their product changes Everyone needs to know how users use the product as soon as possible Treat your Build Pipeline as a Product Build pipeline is not a “side project”, it is an important product Build pipeline needs constant love (e.g., watch out for feedback loops) 11 4