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 su progetti Java: cosa abbiamo imparato facendoci del male

477 views

Published on

In questa presentazione io e Paolo D'Incau condividiamo esperienze reali tratte da progetti dove applichiamo pratiche di Continous Delivery.
Raccontiamo di come si può far evolvere iterativamente una pipeline partendo da semplici task (build e deploy mono-ambiente) fino ad arrivare ad unica pipeline multi-ambiente ispirata allo stato dell'arte e alle lezioni che abbiamo imparato facendoci del male.
Forniamo esempi concreti, focalizzandoci sugli aspetti relativi al codice, all'infrastruttura e rapporto con gli stakeholders.

Autori: Paolo D'Incau, Pietro Di Bello

Published in: Technology
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Continuous Delivery su progetti Java: cosa abbiamo imparato facendoci del male

  1. 1. Continuous Delivery in Java Cose che abbiamo imparato facendoci del male Codemotion Milano ‘15
  2. 2. @pdincau Here We Are @pierodibello
  3. 3. Continuous Delivery? What is
  4. 4. “Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.” Martin Fowler* * martinfowler.com/bliki/ContinuousDelivery.html
  5. 5. “Continuous Delivery is nothing more than reducing the stress you get when you deliver business value to the customer ” My Team* * Come and ask!
  6. 6. n t Continuous Delivery... What is
  7. 7. Continuous Integration
  8. 8. Continuous Deployment
  9. 9. “Safety” Deploy rules
  10. 10. Technically Speaking
  11. 11. Deploy any specific working version to production with confidence
  12. 12. 3 ways
  13. 13. Rodeo Style
  14. 14. No tests Manual deploy Snowflake environments Non predictable outcome Few or very little collaboration
  15. 15. Rodeo Style
  16. 16. By the book
  17. 17. Fast Feedback Done is released Shared responsibility Everything is automated Repeatable and reliable process
  18. 18. Start small and iterate
  19. 19. Once upon a time...
  20. 20. We did know...
  21. 21. Previous deployment process was painful Database continuously change Different environments
  22. 22. Iterationn.1 No Automation
  23. 23. Environment replica on AWS Manual build Manual DB migrations Deploy with scp to remote JBoss
  24. 24. It was our own choice...
  25. 25. ...but we felt like this
  26. 26. No automation at all When was our last deploy?
  27. 27. A taste of Automation Iterationn.2
  28. 28. Set up a basic Jenkins installation Test and build triggered on push DB migration using Liquibase Task to deploy on AWS
  29. 29. This worked for a while
  30. 30. Errors in MyBatis DB mappers Wrong/Missing wirings
  31. 31. Meanwhile...
  32. 32. Yay! Environments are ready!
  33. 33. Deploy Everywhere Iterationn.3
  34. 34. New Jenkins job to run integration tests Track slowest tests First official deploy an all environments
  35. 35. …with different DB drivers !#$?!
  36. 36. Duplication
  37. 37. Incorrect use of mvn profiles N-builds for N-environments Long build and deploy time
  38. 38. Single Artefact Iterationn.4
  39. 39. Got rid of configurations using JBoss *Unique* artefact for all environments Deploy version X.Y.Z from Nexus
  40. 40. We started getting fast
  41. 41. But QA were not so happy Branches, branches everywhere!
  42. 42. Make them happy Iterationn.5
  43. 43. An environment for QA Tags over branches Track deployed version
  44. 44. Devs love QAs
  45. 45. Acceptance tests
  46. 46. Explained values and motivations to Product Owner
  47. 47. Self-service deploy
  48. 48. Remove Candidate Clean Up Clean Up Build it... Migrate ! Database Fetch Unit Tests Build Build Integration Test ! Integration Deploy Publish UAT QA and Publish
  49. 49. Frontend Angular ! Web ...and deliver it Deploy ESB ! ESB Deploy staging ! Deploy Staging Deploy API Deploy Core Backend Migrate ! Database
  50. 50. Things we are experimenting
  51. 51. Parallelization Environments Provisioning Jenkins under git Squash migrations to snapshot
  52. 52. What we would do differently...
  53. 53. Pipeline with “placeholders” Extract configurations asap Explain at the beginning the values behind
  54. 54. Things we will keep doing...
  55. 55. Build the pipeline iteratively Share pipeline responsibility Use the tool that best fit your needs
  56. 56. Recommended reading
  57. 57. Take a look at these Real-World Strategies for Continuous Delivery with Maven and Jenkins https://www.youtube.com/watch?v=McTZtyb9M38 Visualizations of Continuous Delivery http://continuousdelivery.com/2014/02/visualizations-of-continuous-delivery/
  58. 58. That’s all!
  59. 59. @pdincau@pierodibello
  60. 60. https://creativecommons.org/licenses/by-nc-sa/3.0/ Thanks!

×