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

Chasing the Rainbow

Chasing the Rainbow

Getting to Continuous Delivery from a standing start

Avatar for Andy Nesling

Andy Nesling

March 21, 2017
Tweet

More Decks by Andy Nesling

Other Decks in Programming

Transcript

  1. About me! • Tech team lead at Dyson • Been

    working in IoT for 14 years • Passionate about lean agile software development now!
  2. Our Continuous Delivery Journey • Where we started • What

    we learnt • How we kept going • Where we were after 18 months
  3. Where we were starting? • Initial focus on proving proposition

    • Bringing development in house • Team split between sites • Business logic tightly coupled to CMS, communicating via the DB • Team new to building complex systems from scratch
  4. I wouldn’t start from there! • Not able to build

    deployable • No CI Environment • No Tests • Restarting problematic • Technical Debt increasing • New Team
  5. The only way is up! • Releases late to minimize

    impact • Frequently had problems during releasing • Manual patching to bring up after upgrade • Development environments different to production
  6. Where we needed to get to This image cannot currently

    be displayed. Image from http://www.mobiloitte.com/
  7. Where we needed to get to • Releasing small changes

    rapidly • Releasing is painless and routine • Able to quickly test ideas • Release at cadence seen prior to launch
  8. What was working for us? • Excellent motivated Team •

    New tech lead with strong CD experience • PM who was new to CD • Trust from the business
  9. Build on something solid • Must build in house •

    Everything is triggered from it • Can be fragile but necessary • Something firm to build on
  10. Getting the deployment automated • Ugly is better than nothing

    • Gives the ability to improve • Things start to change quickly • 2 manual step are too many
  11. Start to automate tests • Cannot release quicker without tests

    automated • The more features you add the more time it takes to test • Without, drives all the wrong behaviors • Helps stop the rot
  12. Start with acceptance tests • Ensures the system works for

    the customer • Ensures you are building the right thing • Can then safely add unit tests • Can form the basis for load tests
  13. Even a handful helps • Get real value just from

    a handful of tests • Validates your automated deployment is working • Gives confidence to refactor • Helps focuses on building the right thing
  14. Improving metrics • How your system is behaving • How

    long you have got • Compare environments • See effects of releases
  15. Automating load tests • Leveraging Cloud computing • Use same

    metrics as production • Monitor the clients • Not just steady state • Gives confidence to refactor
  16. Cattle not pets • Bringing up new on each release

    • Keeps you honest • Disaster recovery test on every release • Have done it multiple times before production
  17. What about state? • Treat data like the application •

    Version Schema changes • Apply updates as part of pipeline • Don’t test for first time in production
  18. Where were we after 18 months? • Delivering 2-3 times

    a week stress free • Changing the way the business worked • Really happy team willing to touch any part of the system • Starting to strangle the existing application