2. Background
• Java Technical Lead/Scrum Master at Zoral
Labs
• 7+ years in software development
• 5+ years of working by Agile
methodologies
• Expert in Agile engineering practices
• Founder and coach at XP Injection
(http://xpinjection.com)
• Organizer of Selenium Camp, JEEConf and
XP Days Ukraine conferences
3. Every tool or practice should solve particular problems
WHY CONTINUOUS DELIVERY?
4. What changed in business?
It is faster now!
• Что изменилось в бизнесе? Он стал
быстрее.
12. “How long would it take your organization to
deploy a change that involves just one single line
of code?
Do you do this on a repeatable reliable basis?”
- Mary and Tom Poppendieck
13. Continuous Delivery
Keeping systems production-
ready throughout
development, so that they can
be released to users at any time
14. ”Continuous delivery is about putting the release
schedule in the hands of the business, not in the hands
of IT.
Implementing continuous delivery means making sure
your software is always production ready throughout
its entire lifecycle – that any build could potentially be
released to users at the touch of a button using a fully
automated process in a matter of seconds or minutes.”
- Jez Humble
15. Nobody tell you it is easy, but many people practice it
REQUIRED STEPS FOR SUCCESS
16. 1. Select version Release should
2. Select environment be simple
3. Push the button
24. 1. Plan
2. Prepare
3. Test
Always think
about rollback
25. Deployment
Load balancer sample
X
App Server
X
DB Server
26. Deployment
Load balancer sample
X X 1. Start new App Server
2. Use slave DB
App Server App Server
X X
DB Server DB Server
27. Deployment
Load balancer sample
X X 1. Start new App Server
2. Use slave DB
3. Deploy in read only mode
App Server App Server
4. Switch load balancer
X X
DB Server DB Server
28. Deployment
Load balancer sample
Y X 1. Start new App Server
2. Use slave DB
3. Deploy in read only mode
App Server App Server
4. Switch load balancer
5. Update master DB
6. Deploy new code
Y X
DB Server DB Server
29. Deployment
Load balancer sample
Y X 1. Start new App Server
2. Use slave DB
3. Deploy in read only mode
App Server App Server
4. Switch load balancer
5. Update master DB
6. Deploy new code
7. Switch load balancer
Y X
DB Server DB Server
30. Deployment
Load balancer sample
Y 1. Start new App Server
2. Use slave DB
3. Deploy in read only mode
App Server 4. Switch load balancer
5. Update master DB
6. Deploy new code
7. Switch load balancer
Y Y 8. Release old App Server
9. Synchronize slave DB
DB Server DB Server
47. Before After
Dev Commit
Monitor Test
Release QA
Deploy
• 2 week release cycles
• code freeze • multiple releases a day
• big events • non-events
• large code changes • small number of changes