Why / How / When
Do I need
CONTINUOS
DELIVERY?
Product Developer, E-conomic (Ciklum)
Trainer, XP Injection
beletsky.net
@alexbeletsky
github.com/alexanderbeletsky
Why
How
When
The story of one project

Very simple GTD web application

.NET technological stack based

VPS hosted

Nothing fancy, ...
•Prepare release branch and merge all required changes there
•Update version in uppercut.config
•Commit changes to SCM
•
R...
If it FAILS in a MIDDLE
— REPEAT
Lucky day: 0.5 h
Bad day: 2 h
Read those figures as:
My customers suffer for 2 hours once in
2 weeks, just becase I do update
And by the way...

It's just takes too much developers time

It's boring

Sooner or later you start to hate
deployments
For bussiness people and
managers

“Time-to-Market” factor is very low

Feedback cycle is very long

Customer dissatisf...
Why
How
When
Let's define our
TERMINOLOGY
Deployment != Delivery
Deployment: product IS availble
Delivery: product IS availble for users
Deployment first
Delivery after
All you have to know,
the secret formula of
Continuous Deployment
(Integration + Deployment) *
Continuous = Continuous
Deployment
Integration is for:
fetching latest sources
build all product configuration items
run unit tests
run functional tests
gene...
1. Build and deploy locally with one click
2. Define SCM model based
3. Run it continuosly
Recipe of Success:

Build and tests execution

Binaries versioning

SCM labeling

Database migration

Web application deployment
Step 1 ...

Build and tests execution

Binaries versioning

SCM labeling

Database migration

Web application deployment
Step 1 ...
UppercuT batch build framework
RoundhousE database migrations
DropicK application deployment
Meet Chuck Norris Tools
UppercuT
Easy to use
Configurable by XML
Supports config for different environment
RoundhousE
Easy to use
Supports MS SQL,...
Available on a Github
> deploy.bat LOCAL
> deploy.bat STAGING
> deploy.bat PRODUCTION
Step 1 - Build and Deploy
ACCOMPLISHED

DVCS are simply rule (Git, HG)

TRUNK is production ready

Keep interations in branches

Keep features in branches
St...
Ideal branches count = 2
master
develop
Typical branches count >= 2
master
develop
release
hotfix
Branch per Environment Layout
Step 2 - Define SCM model
ACCOMPLISHED
> git checkout develop
> git merge --no-ff myfeature
> git branch -d myfeature
> gi...

Availability of Build Server

SCM build triggering

Automatically run deployment script

Roll out application to prod...

Fork of famous Hudson project

Open source

Java based

Easy start, easy go

Tons of available plugins
Say 'Hello' t...
All configuration could be
done in UI
Jenkins Instance is deployed
for each environment
Build/Deployment continuosly
triggered by SCM
As soon as Staging “Looks
Alright”, deploy to production
> git checkout master
> git merge develop
> git tag -a 1.2
> git push origin master
Deployment is nothing more
as pushing ...
Step 3 - Run it continuosly
ACCOMPLISHED
Changes are picked up, built, tested
and deployed automatically
Why
How
When
As sooner as better
And?
Results:

Going live time improved 45x

Site down time reduced 300x

No more iterations, Kanban

Staging is updating w...
THANK YOU!
beletsky.net
@alexbeletsky
github.com/alexanderbeletsky
Upcoming SlideShare
Loading in...5
×

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

2,064

Published on

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

No Downloads
Views
Total Views
2,064
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×