40
Why / How / When Do I need CONTINUOS DELIVERY?

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

Why / How / WhenDo I need CONTINUOS DELIVERY?

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

Product Developer, E-conomic (Ciklum)Trainer, XP Injection

[email protected]/alexanderbeletsky

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

WhyHowWhen

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

The story of one project

Very simple GTD web application .NET technological stack based VPS hosted Nothing fancy, seriously

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

•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 ...

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

If it FAILS in a MIDDLE — REPEATLucky day: 0.5 h

Bad day: 2 h

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

Read those figures as:My customers suffer for 2 hours once in

2 weeks, just becase I do update

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

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

It's boring

Sooner or later you start to hate deployments

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

For bussiness people and managers

“Time-to-Market” factor is very low

Feedback cycle is very long

Customer dissatisfaction is very high

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

WhyHowWhen

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

Let's define ourTERMINOLOGY

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

Deployment != Delivery

Deployment: product IS availbleDelivery: product IS availble for users

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

Deployment first Delivery after

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

All you have to know, the secret formula of Continuous Deployment

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

(Integration + Deployment) * Continuous = Continuous

Deployment

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

Integration is for:fetching latest sourcesbuild all product configuration itemsrun unit testsrun functional testsgenerate documentationpackage all artifacts

Deployment is for:update test servers

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

1. Build and deploy locally with one click2. Define SCM model based3. Run it continuosly

Recipe of Success:

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

Build and tests execution Binaries versioning SCM labeling Database migration Web application deployment

Step 1 - Build and Deploy

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

Build and tests execution Binaries versioning SCM labeling Database migration Web application deployment

Step 1 - Build and Deploy

Solved by Chuck Norris tools

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

UppercuT batch build frameworkRoundhousE database migrationsDropicK application deployment

Meet Chuck Norris Tools

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

UppercuTEasy to useConfigurable by XMLSupports config for different environment

RoundhousEEasy to useSupports MS SQL, MySQL, PostgressMigration by SQL Scripts

DropkicKDeployment script as C# codeSupport for services and sitesDifferent plans

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

Available on a Github

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

> deploy.bat LOCAL> deploy.bat STAGING> deploy.bat PRODUCTION

Step 1 - Build and DeployACCOMPLISHED

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

DVCS are simply rule (Git, HG) TRUNK is production ready Keep interations in branches Keep features in branches

Step 2 - Define SCM model

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

Ideal branches count = 2masterdevelop

Typical branches count >= 2

masterdevelopreleasehotfix

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

Branch per Environment Layout

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

Step 2 - Define SCM modelACCOMPLISHED

> git checkout develop> git merge --no-ff myfeature> git branch -d myfeature> git push origin develop

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

Availability of Build Server SCM build triggering Automatically run deployment script Roll out application to production

Step 3 - Run it continuously

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

Fork of famous Hudson project Open source Java based Easy start, easy go Tons of available plugins

Say 'Hello' to Jenkins

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

All configuration could be done in UI

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

Jenkins Instance is deployed for each environment

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

Build/Deployment continuosly triggered by SCM

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

As soon as Staging “Looks Alright”, deploy to production

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

> 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

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

Step 3 - Run it continuoslyACCOMPLISHED

Changes are picked up, built, tested and deployed automatically

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

WhyHowWhen

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

As sooner as better

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

And?

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

Results: Going live time improved 45x Site down time reduced 300x No more iterations, Kanban Staging is updating with every push Setup and forget

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

THANK [email protected]/alexanderbeletsky