Continuous Delivery Why / How / When ?

Continuous Delivery Why / How / When ?

My speech on AgileBaseCamp 2012 "From Idea to Product"

F32f547e66f3b6528376d67fdb67008f?s=128

Alexander Beletsky

January 27, 2012
Tweet

Transcript

  1. 4.

    The story of one project  Very simple GTD web

    application  .NET technological stack based  VPS hosted  Nothing fancy, seriously
  2. 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 ...
  3. 7.

    Read those figures as: My customers suffer for 2 hours

    once in 2 weeks, just becase I do update
  4. 8.

    And by the way...  It's just takes too much

    developers time  It's boring  Sooner or later you start to hate deployments
  5. 9.

    For bussiness people and managers  “Time-to-Market” factor is very

    low  Feedback cycle is very long  Customer dissatisfaction is very high
  6. 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
  7. 17.

    1. Build and deploy locally with one click 2. Define

    SCM model based 3. Run it continuosly Recipe of Success:
  8. 18.

     Build and tests execution  Binaries versioning  SCM

    labeling  Database migration  Web application deployment Step 1 - Build and Deploy
  9. 19.

     Build and tests execution  Binaries versioning  SCM

    labeling  Database migration  Web application deployment Step 1 - Build and Deploy Solved by Chuck Norris tools
  10. 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
  11. 24.

     DVCS are simply rule (Git, HG)  TRUNK is

    production ready  Keep interations in branches  Keep features in branches Step 2 - Define SCM model
  12. 27.

    Step 2 - Define SCM model ACCOMPLISHED > git checkout

    develop > git merge --no-ff myfeature > git branch -d myfeature > git push origin develop
  13. 28.

     Availability of Build Server  SCM build triggering 

    Automatically run deployment script  Roll out application to production Step 3 - Run it continuously
  14. 29.

     Fork of famous Hudson project  Open source 

    Java based  Easy start, easy go  Tons of available plugins Say 'Hello' to Jenkins
  15. 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
  16. 35.

    Step 3 - Run it continuosly ACCOMPLISHED Changes are picked

    up, built, tested and deployed automatically
  17. 38.
  18. 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