"Release Early, Release Often" is a proven mantra, but what happens when you push this practice to it's limits? .i.e. deploying latest code changes to the production servers every time a developer checks-in code.
At Industrial Logic, developers are deploying code dozens of times a day, rapidly responding to their customers and reducing their "code inventory".
In this talk I explained the approach, deployment architecture, tools and culture needed for CD and how at Industrial Logic, we have gradually got there.
You can walk away with some good ideas of how your company can practice CD too.
6. re nt!
diffe
re us? ?
Too e a or
W F h ere
mu em
ch probl
Ch re a
aos he
Wh
o? W
? Is t
hen
?
ROI?
Pro
duc
tivit
y?
Licensed Under Creative Commons by Naresh Jain
4
18. Back in the Stone-age
Licensed Under Creative Commons by Naresh Jain
16
19. Happiness/Excitement
Time/Money/Opportunity Cost
Licensed Under Creative Commons by Naresh Jain
17
20. Plan
Happiness/Excitement
Time/Money/Opportunity Cost
Licensed Under Creative Commons by Naresh Jain
17
21. Plan
Design
Happiness/Excitement
Time/Money/Opportunity Cost
Licensed Under Creative Commons by Naresh Jain
17
22. Plan
Design
Happiness/Excitement
Distribute
Time/Money/Opportunity Cost
Licensed Under Creative Commons by Naresh Jain
17
23. Plan
Design
Happiness/Excitement
Distribute
Work in
Isolation
Time/Money/Opportunity Cost
Licensed Under Creative Commons by Naresh Jain
17
24. Plan
Design
Happiness/Excitement
Distribute
Work in
Isolation
Integrate
Time/Money/Opportunity Cost
Licensed Under Creative Commons by Naresh Jain
17
29. CI Helped Us Learn That...
Life can Suck a lot Less!
Licensed Under Creative Commons by Naresh Jain
22
30. CI Helped Us Learn That...
Life can Suck a lot Less!
Collaboration Feedback Quality
Delivery Time Wastage
Licensed Under Creative Commons by Naresh Jain
22
31. If people are afraid to
check-in frequently...
your CI process is
NOT working.
Licensed Under Creative Commons by Naresh Jain
23
32. We already do CI.
What’s next?
Licensed Under Creative Commons by Naresh Jain
24
33. Multi-Stage CI Process
Scaling CI using Build Promotion
Licensed Under Creative Commons by Naresh Jain
25
37. CD is quite natural for
companies delivering
content via Web
Licensed Under Creative Commons by Naresh Jain
29
38. Freeset - In Business for Freedom
Licensed Under Creative Commons by Naresh Jain
30
39. Stage 1
Static
Files
DB
freesetglobal.com
s
Vie
te
da
w
Up
Freeset - In Business for Freedom
Licensed Under Creative Commons by Naresh Jain
30
40. Stage 1
Stage 2
Static Static Static
Files Files Files
DB DB DB
Structural
Changes Sync
freesetglobal.com dev.freesetglobal.com freesetglobal.com
s
Updates
Vie
te
View
da
w
Up
ck
li
-C
oy
le
pl
ng
De
Si
Freeset - In Business for Freedom
Licensed Under Creative Commons by Naresh Jain
30
52. Can we embrace CD
for eLearning?
Rich Multi-Media Content
Video, Screencasts, Quizzes, Images, Personas, etc.
Programming Exercises
Java, C#, C++, C & Python
Mac OS, Windows, Linux, Solaris
Different IDE Plugins
Server side code analysis (Java, C#, C++, C & Python)
Licensed Under Creative Commons by Naresh Jain
42
53. This is what we did...
Licensed Under Creative Commons by Naresh Jain
43
54. Deploy build to inactive
production servers
Licensed Under Creative Commons by Naresh Jain
44
55. Inactive joins the cluster
Licensed Under Creative Commons by Naresh Jain
45
56. Delivery tests verify
inactive release
Licensed Under Creative Commons by Naresh Jain
46
57. Reverse proxy swaps
inactive with active
Licensed Under Creative Commons by Naresh Jain
47
59. CD Requires Zero Downtime
Licensed Under Creative Commons by Naresh Jain
49
60. Zero Downtime Requires
Performing updates without interrupting users is
essential for Zero Downtime deployments.
• The application code
• Database schema
• Data files
• Web Server
• Application Server or Servlet Container
• Database Server
• OS upgrades and patches
Licensed Under Creative Commons by Naresh Jain
50
61. What about DB
Upgrades?
Will Continuous Deployment work?
Licensed Under Creative Commons by Naresh Jain
51
62. Hibernate
• hbm2ddl.auto = update
• Rarely we need to go in and update DB
manually
Licensed Under Creative Commons by Naresh Jain
52
63. Zero-downtime DB Updates
012_rename_login_id_to_user_name
012_add_user_name_column 02_remove_login_id_column
expansion contraction
Src: Owen Rogers http://exortech.com/blog/
Licensed Under Creative Commons by Naresh Jain
53
64. Zero-downtime DB Updates
Src: Owen Rogers http://exortech.com/blog/
Licensed Under Creative Commons by Naresh Jain
54
65. Zero-downtime DB Updates
• expansion
Src: Owen Rogers http://exortech.com/blog/
Licensed Under Creative Commons by Naresh Jain
54
66. Zero-downtime DB Updates
• expansion
• preserves backwards compatibility
Src: Owen Rogers http://exortech.com/blog/
Licensed Under Creative Commons by Naresh Jain
54
67. Zero-downtime DB Updates
• expansion
• preserves backwards compatibility
• contract
Src: Owen Rogers http://exortech.com/blog/
Licensed Under Creative Commons by Naresh Jain
54
68. Zero-downtime DB Updates
• expansion
• preserves backwards compatibility
• contract
• clean up
Src: Owen Rogers http://exortech.com/blog/
Licensed Under Creative Commons by Naresh Jain
54
73. Breaks work into micro-pieces,
thereby enabling micro-deliveries
Licensed Under Creative Commons by Naresh Jain
59
74. Limited Work In Progress
Licensed Under Creative Commons by Naresh Jain
60
75. Knows when to hide or
reveal work in progress
Licensed Under Creative Commons by Naresh Jain
61
76. Team takes shared ownership of the
entire software development lifecycle
Licensed Under Creative Commons by Naresh Jain
62
77. The product is in a
always-working-state
No developer is blocked because they can't get stable code
Licensed Under Creative Commons by Naresh Jain
63
78. Stop the Line Culture
Team catches issues at the source and avoid last
minute integration and deployment nightmares
Licensed Under Creative Commons by Naresh Jain
64
79. Team crave for rapid feedback
Licensed Under Creative Commons by Naresh Jain
65
80. Complete Traceability
Version Control, Project & Requirements
Managements tool, Bug Tracking and Build
system are completely integrated
Licensed Under Creative Commons by Naresh Jain
66
81. Questions?
Naresh Jain
@nashjain
naresh@agilefaqs.com
http://blogs.agilefaqs.com
Licensed Under Creative Commons by Naresh Jain
67