Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Continuous
Delivery
in Java
Cose che abbiamo imparato
facendoci del male
Italian Agile Day ‘15
@pdincau
Here I am
Continuous Delivery?
What is
“Continuous Delivery is a software development discipline where you
build software in such a way that the software can be ...
“Continuous Delivery is nothing more than reducing the
stress you get when you deliver business value to the customer ”
My...
n t
Continuous Delivery...
What is
Continuous Integration
Continuous Deployment
“Safety" Deploy rules
Technically
Speaking
Deploy any specific working version to
production with confidence
3 ways
Rodeo Style
No tests
Manual deploy
Snowflake environments
Non predictable outcome
Few or very little collaboration
By the book
Fast Feedback
Done is released
Shared responsibility
Everything is automated
Repeatable and reliable process
Start small and iterate
Once upon
a time...
We did know...
Previous deployment process was painful
Database continuously change
Different environments
Iterationn.1
No
Automation
Environment replica on AWS
Manual build
Manual DB migrations
Deploy with scp to remote JBoss
It was our
own choice...
...but we felt like this
No automation at all
When was our last deploy?
A taste of
Automation
Iterationn.2
Set up a basic Jenkins installation
Test and build triggered on push
DB migration using Liquibase
Task to deploy on AWS
This worked for a while
Errors in MyBatis DB mappers
Wrong/Missing wirings
Yay! Environments are ready!
Deploy
Everywhere
Iterationn.3
New Jenkins job to run IT
Track slowest tests
First official deploy an all environments
…with different DB drivers !#$?!
Duplication
Incorrect use of mvn profiles
N-builds for N-environments
Long build and deploy time
Single
Artefact
Iterationn.4
Got rid of configurations using JBoss
*Unique* artefact for all environments
Deploy version X.Y.Z from Nexus
We started getting fast
But QA were not so happy
Branches, branches everywhere!
Make
them happy
Iterationn.5
AWS is for nightly builds
Tags over branches
Track deployed version
Acceptance tests
Explained values and
motivations to Product Owner
Remove Candidate
Clean Up
Clean Up
Meet the pipeline
Migrate
Database
Fetch
Unit Tests
Build
Build
Slow Tests
Integration ...
Where to go next
Parallel builds
Environments Provisioning
Things we would
change...
Pipeline with “placeholders”
Extract configurations
Explain at the beginning the values behind
Things we would
do again...
Build the pipeline iteratively
Use of Liquibase
Share pipeline responsibility
Recommended reading
That’s all!
Thanks
@pdincau
Prochain SlideShare
Chargement dans…5
×

Continuous Delivery in Java

1 718 vues

Publié le

An example of Continuous Delivery in Java presented at Italian Agile Days 2015. How you can improve your Continuous Delivery pipeline using an iterative and incremental approch

Publié dans : Logiciels
  • Soyez le premier à commenter

Continuous Delivery in Java

  1. 1. Continuous Delivery in Java Cose che abbiamo imparato facendoci del male Italian Agile Day ‘15
  2. 2. @pdincau Here I am
  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. By the book
  16. 16. Fast Feedback Done is released Shared responsibility Everything is automated Repeatable and reliable process
  17. 17. Start small and iterate
  18. 18. Once upon a time...
  19. 19. We did know...
  20. 20. Previous deployment process was painful Database continuously change Different environments
  21. 21. Iterationn.1 No Automation
  22. 22. Environment replica on AWS Manual build Manual DB migrations Deploy with scp to remote JBoss
  23. 23. It was our own choice...
  24. 24. ...but we felt like this
  25. 25. No automation at all When was our last deploy?
  26. 26. A taste of Automation Iterationn.2
  27. 27. Set up a basic Jenkins installation Test and build triggered on push DB migration using Liquibase Task to deploy on AWS
  28. 28. This worked for a while
  29. 29. Errors in MyBatis DB mappers Wrong/Missing wirings
  30. 30. Yay! Environments are ready!
  31. 31. Deploy Everywhere Iterationn.3
  32. 32. New Jenkins job to run IT Track slowest tests First official deploy an all environments
  33. 33. …with different DB drivers !#$?!
  34. 34. Duplication
  35. 35. Incorrect use of mvn profiles N-builds for N-environments Long build and deploy time
  36. 36. Single Artefact Iterationn.4
  37. 37. Got rid of configurations using JBoss *Unique* artefact for all environments Deploy version X.Y.Z from Nexus
  38. 38. We started getting fast
  39. 39. But QA were not so happy Branches, branches everywhere!
  40. 40. Make them happy Iterationn.5
  41. 41. AWS is for nightly builds Tags over branches Track deployed version
  42. 42. Acceptance tests
  43. 43. Explained values and motivations to Product Owner
  44. 44. Remove Candidate Clean Up Clean Up Meet the pipeline Migrate Database Fetch Unit Tests Build Build Slow Tests Integration Tests Integration Deploy Publish UAT QA and Publish
  45. 45. Where to go next
  46. 46. Parallel builds Environments Provisioning
  47. 47. Things we would change...
  48. 48. Pipeline with “placeholders” Extract configurations Explain at the beginning the values behind
  49. 49. Things we would do again...
  50. 50. Build the pipeline iteratively Use of Liquibase Share pipeline responsibility
  51. 51. Recommended reading
  52. 52. That’s all!
  53. 53. Thanks @pdincau

×