• Like


Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

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

Uploaded on


More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Why / How / WhenDo I needCONTINUOSDELIVERY?
  • 2. Product Developer, E-conomic (Ciklum)Trainer, XP Injection beletsky.net @alexbeletsky github.com/alexanderbeletsky
  • 3. WhyHowWhen
  • 4. The story of one project Very simple GTD web application .NET technological stack based VPS hosted Nothing fancy, seriously
  • 5. Delivery Script ...•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
  • 6. If it FAILS in a MIDDLE — REPEAT Lucky day: 0.5 h Bad day: 2 h
  • 7. Read those figures as:My customers suffer for 2 hours once in 2 weeks, just becase I do update
  • 8. And by the way... Its just takes too much developers time Its boring Sooner or later you start to hatedeployments
  • 9. For bussiness people and managers “Time-to-Market” factor is very low Feedback cycle is very long Customer dissatisfaction is very high
  • 10. WhyHowWhen
  • 11. Lets define ourTERMINOLOGY
  • 12. Deployment != DeliveryDeployment: product IS availbleDelivery: product IS availble for users
  • 13. Deployment first Delivery after
  • 14. All you have to know,the secret formula ofContinuous Deployment
  • 15. (Integration + Deployment) * Continuous = Continuous Deployment
  • 16. Integration is for: fetching latest sources build all product configuration items run unit tests run functional tests generate documentation package all artifactsDeployment is for: update test servers
  • 17. Recipe of Success:1. Build and deploy locally with one click2. Define SCM model based3. Run it continuosly
  • 18. Step 1 - Build and Deploy Build and tests execution Binaries versioning SCM labeling Database migration Web application deployment
  • 19. Step 1 - Build and Deploy Build and tests execution Binaries versioning SCM labeling Database migration Web application deployment Solved by Chuck Norris tools
  • 20. Meet Chuck Norris ToolsUppercuT batch build frameworkRoundhousE database migrationsDropicK application deployment
  • 21. UppercuT Easy to use Configurable by XML Supports config for different environmentRoundhousE Easy to use Supports MS SQL, MySQL, Postgress Migration by SQL ScriptsDropkicK Deployment script as C# code Support for services and sites Different plans
  • 22. Available on a Github
  • 23. Step 1 - Build and Deploy ACCOMPLISHED> deploy.bat LOCAL> deploy.bat STAGING> deploy.bat PRODUCTION
  • 24. Step 2 - Define SCM model DVCS are simply rule (Git, HG) TRUNK is production ready Keep interations in branches Keep features in branches
  • 25. Ideal branches count = 2 master developTypical branches count >= 2 master develop release hotfix
  • 26. Branch per Environment Layout
  • 27. Step 2 - Define SCM model ACCOMPLISHED> git checkout develop> git merge --no-ff myfeature> git branch -d myfeature> git push origin develop
  • 28. Step 3 - Run it continuously Availability of Build Server SCM build triggering Automatically run deployment script Roll out application to production
  • 29. Say Hello to Jenkins Fork of famous Hudson project Open source Java based Easy start, easy go Tons of available plugins
  • 30. All configuration could bedone in UI
  • 31. Jenkins Instance is deployed for each environment
  • 32. Build/Deployment continuoslytriggered by SCM
  • 33. As soon as Staging “LooksAlright”, deploy to production
  • 34. Deployment is nothing moreas pushing changes toorigin/master> git checkout master> git merge develop> git tag -a 1.2> git push origin master
  • 35. Step 3 - Run it continuosly ACCOMPLISHEDChanges are picked up, built, testedand deployed automatically
  • 36. WhyHowWhen
  • 37. As sooner as better
  • 38. And?
  • 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. THANK YOU! beletsky.net @alexbeletsky github.com/alexanderbeletsky