Саша Белецкий "Continuous Delivery в продуктовой разработке"

2,320 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,320
On SlideShare
0
From Embeds
0
Number of Embeds
898
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Саша Белецкий "Continuous Delivery в продуктовой разработке"

  1. 1. Why / How / When Do I need CONTINUOS DELIVERY?
  2. 2. Product Developer, E-conomic (Ciklum) Trainer, XP Injection beletsky.net @alexbeletsky github.com/alexanderbeletsky
  3. 3. Why How When
  4. 4. The story of one project  Very simple GTD web application  .NET technological stack based  VPS hosted  Nothing fancy, seriously
  5. 5. •Prepare release branch and merge all required changes there •Update version in uppercut.config •Commit changes to SCM • Run build.bat • FTP package to deployment server •RDP to deployment server •Unpackage .zip content to temp folder •Manually backup staging database •Stop Stage Web site in IIS manager • Run migration scripts for staging database • Run deployment scripts for staging environment • Run Stage Web site in IIS manager • Test manually that on staging server, that build works fine •If something missed (note it is 60% of all cases) go to 1 •Manually backup production database •Stop Production Web site in IIS manager •Run migration scripts for production database • Run deployment scripts for production environment • Run Production Web site in IIS manager •Test manually that on production server, that build works fine Delivery Script ...
  6. 6. If it FAILS in a MIDDLE — REPEAT Lucky day: 0.5 h Bad day: 2 h
  7. 7. Read those figures as: My customers suffer for 2 hours once in 2 weeks, just becase I do update
  8. 8. And by the way...  It's just takes too much developers time  It's boring  Sooner or later you start to hate deployments
  9. 9. For bussiness people and managers  “Time-to-Market” factor is very low  Feedback cycle is very long  Customer dissatisfaction is very high
  10. 10. Why How When
  11. 11. Let's define our TERMINOLOGY
  12. 12. Deployment != Delivery Deployment: product IS availble Delivery: product IS availble for users
  13. 13. Deployment first Delivery after
  14. 14. All you have to know, the secret formula of Continuous Deployment
  15. 15. (Integration + Deployment) * Continuous = Continuous Deployment
  16. 16. Integration is for: fetching latest sources build all product configuration items run unit tests run functional tests generate documentation package all artifacts Deployment is for: update test servers
  17. 17. 1. Build and deploy locally with one click 2. Define SCM model based 3. Run it continuosly Recipe of Success:
  18. 18.  Build and tests execution  Binaries versioning  SCM labeling  Database migration  Web application deployment Step 1 - Build and Deploy
  19. 19.  Build and tests execution  Binaries versioning  SCM labeling  Database migration  Web application deployment Step 1 - Build and Deploy Solved by Chuck Norris tools
  20. 20. UppercuT batch build framework RoundhousE database migrations DropicK application deployment Meet Chuck Norris Tools
  21. 21. UppercuT Easy to use Configurable by XML Supports config for different environment RoundhousE Easy to use Supports MS SQL, MySQL, Postgress Migration by SQL Scripts DropkicK Deployment script as C# code Support for services and sites Different plans
  22. 22. Available on a Github
  23. 23. > deploy.bat LOCAL > deploy.bat STAGING > deploy.bat PRODUCTION Step 1 - Build and Deploy ACCOMPLISHED
  24. 24.  DVCS are simply rule (Git, HG)  TRUNK is production ready  Keep interations in branches  Keep features in branches Step 2 - Define SCM model
  25. 25. Ideal branches count = 2 master develop Typical branches count >= 2 master develop release hotfix
  26. 26. Branch per Environment Layout
  27. 27. Step 2 - Define SCM model ACCOMPLISHED > git checkout develop > git merge --no-ff myfeature > git branch -d myfeature > git push origin develop
  28. 28.  Availability of Build Server  SCM build triggering  Automatically run deployment script  Roll out application to production Step 3 - Run it continuously
  29. 29.  Fork of famous Hudson project  Open source  Java based  Easy start, easy go  Tons of available plugins Say 'Hello' to Jenkins
  30. 30. All configuration could be done in UI
  31. 31. Jenkins Instance is deployed for each environment
  32. 32. Build/Deployment continuosly triggered by SCM
  33. 33. As soon as Staging “Looks Alright”, deploy to production
  34. 34. > git checkout master > git merge develop > git tag -a 1.2 > git push origin master Deployment is nothing more as pushing changes to origin/master
  35. 35. Step 3 - Run it continuosly ACCOMPLISHED Changes are picked up, built, tested and deployed automatically
  36. 36. Why How When
  37. 37. As sooner as better
  38. 38. And?
  39. 39. Results:  Going live time improved 45x  Site down time reduced 300x  No more iterations, Kanban  Staging is updating with every push  Setup and forget
  40. 40. THANK YOU! beletsky.net @alexbeletsky github.com/alexanderbeletsky

×