Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous delivery made

106 views

Published on

How to start your journey towards continuous delivery

Published in: Software
  • Be the first to comment

Continuous delivery made

  1. 1. Continuous delivery made possible Domenico Musto domenico.musto@gmail.com @mimmozzo
  2. 2. 50%
  3. 3. 35%
  4. 4. What do you think about this ?
  5. 5. Continuous delivery ▪ Reduce time to market ▪ Quickly adapt your product to market/customers needs ▪ Enable experimentation ▪ Create an awesome motivated team
  6. 6. Domenico Musto ▪ Principal Engineer at Spektrix ▪ Distributed systems ▪ REST ▪ Messaging ▪ Automation testing ▪ Continuous delivery domenico.musto@gmail.com @mimmozzo
  7. 7. Agenda ▪ Continuous integration ▪ Continuous deployment ▪ Continuous delivery ▪ How to get there
  8. 8. Continuous integration The process of frequently integrating the code you are working on with everybody else’s code
  9. 9. Continuous deployment Automatically deploy on an integration test environment the "integrated code“. Have a reasonable automated way of deploy software to a production environment
  10. 10. Continuous delivery The ability to easily and quickly ship new value/features to customers at any point in time
  11. 11. Easily and quickly ▪ Being able to deploy in about 5 minutes in an automated fashion
  12. 12. Easily and quickly ▪ Being able to deploy in about 5 minutes in an automated fashion ▪ Being confident that the software you are deploying has passed a well defined test suite
  13. 13. Easily and quickly ▪ Being able to deploy in about 5 minutes in an automated fashion ▪ Being confident that the software you are deploying has passed a well defined test suite ▪ Being able to immediately collect info about the new version of the software
  14. 14. Easily and quickly ▪ Being able to deploy in about 5 minutes in an automated fashion ▪ Being confident that the software you are deploying has passed a well defined test suite ▪ Being able to immediately collect info about the new version of the software ▪ Being able to quickly rollback to the previous version in a matter of minutes in an automated fashion
  15. 15. Continuous integration + Continuous deployment = Continuous delivery
  16. 16. Maybe you didn’t know that.. ▪ Continuous delivery is not suitable for every business
  17. 17. Maybe you didn’t know that.. ▪ Continuous delivery is not suitable for every business ▪ It’s a cultural change
  18. 18. Maybe you didn’t know that.. ▪ Continuous delivery is not suitable for every business ▪ It’s a cultural change ▪ It takes time and it will hurt you
  19. 19. How do I get there ? ▪ Kill the monolith ▪ Enable continuous integration ▪ Enable continuous deployment ▪ Process and team structure
  20. 20. Continuous integration
  21. 21. Feature branching vs branching by abstraction
  22. 22. Branching by abstraction By Martin Fowler
  23. 23. Branching by abstraction By Martin Fowler
  24. 24. Branching by abstraction By Martin Fowler
  25. 25. Branching by abstraction By Martin Fowler
  26. 26. Branching by abstraction By Martin Fowler
  27. 27. Solid testing strategy
  28. 28. Integration pipeline Code changeDev Run tests locally Dev CommitDev Build and test CI Create artefactCI
  29. 29. Continuous deployment
  30. 30. Deployment pipeline
  31. 31. Smart packages
  32. 32. Database ▪ Database schema as source code ▪ Migration scripts are generated, not stored ▪ Database schema works with 2 versions of the software ▪ Spread breaking changes across multiple deployments
  33. 33. Infrastructure ▪ Blue green deployment
  34. 34. Infrastructure ▪ Blue green deployment ▪ Infrastructure as code
  35. 35. Infrastructure ▪ Blue green deployment ▪ Infrastructure as code ▪ Tooling
  36. 36. Decouple release from deployment ▪ Delivery is not deployment (it may require manual intervention)
  37. 37. Decouple release from deployment ▪ Delivery is not deployment (it may require manual intervention) ▪ Feature toggles
  38. 38. Process and team structure
  39. 39. Process and team structure ▪ Create cross functional autonomous teams
  40. 40. Process and team structure ▪ Create cross functional autonomous teams ▪ Product authority within the team
  41. 41. Process and team structure ▪ Create cross functional autonomous teams ▪ Product authority within the team ▪ QAs embedded in the team
  42. 42. Process and team structure ▪ Create cross functional autonomous teams ▪ Product authority within the team ▪ QAs embedded in the team ▪ build quality in over testing at the end
  43. 43. Process and team structure ▪ Create cross functional autonomous teams ▪ Product authority within the team ▪ QAs embedded in the team ▪ build quality in over than testing at the end ▪ close to the code and the architecture to advise on best testing strategy
  44. 44. Process and team structure ▪ Create cross functional autonomous teams ▪ Product authority within the team ▪ QAs embedded in the team ▪ build quality in over than testing at the end ▪ close to the code and the architecture to advise on best testing strategy ▪ Simple pull request model to be approved within the team
  45. 45. Summary ▪ Enable continuous integration (step by step) ▪ Avoid feature branching ▪ Integration pipeline ▪ Artefacts ▪ Enable continuous deployment (step by step) ▪ Deploy pipeline ▪ Smart packages ▪ Infrastructure as code ▪ Adjust the process (step by step) ▪ Create autonomous teams ▪ Create a shared testing strategy
  46. 46. Continuous delivery ▪ Reduce time to market ▪ Quickly adapt your product to market/customers needs ▪ Enable experimentation ▪ Create an awesome motivated team
  47. 47. “Continuous delivery doesn't have to mean new features in prod every minute. It's about making releases a non-event.” Suzie Prince
  48. 48. Thanks. domenico.musto@gmail.com @mimmozzo

×