Deploying your application whenever you want is easy. Everyone does it nowadays. And that works great when you have a small group of people responsible for an application. But what if you have several teams working on the same application? What if you have almost 80 people committing more than 30 times a day? Can you face the challenge of deploying that application os often as you wish and succeed in keeping it stable? Bol.com did! In this talk we will walk the journey of bol.com from conservative four week release cycle to full autonomy. What are the challenges we faced, how we tackled them.
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Taming a beast - Bol.com's journey from deploying once a month to more then once a day - Mike Chernev - Codemotion Amsterdam 2018
1.
2. > whoami> whoami
Addicted to technology
Reads manga
Star Wars fan
Struggles to play the guitar
@MikeChernev@MikeChernev
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
3. > whoami> whoami
Addicted to technology
Reads manga
Star Wars fan
Struggles to play the guitar
@MikeChernev@MikeChernev
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
4.
5. AgendaAgenda
1. Perspective1. Perspective
2. define: beast2. define: beast
4. Taming the beast4. Taming the beast
3. Why not3. Why not slayslay it it
5. Lessons learnt5. Lessons learnt
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
7. bol.com ~ 18 years agobol.com ~ 18 years ago
One applicationOne application
One DeploymentOne Deployment
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
8. bol.com ~ 10 years agobol.com ~ 10 years ago
4 weeks
Time
Release cycleRelease cycle
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
9. bol.com ~ 5 years agobol.com ~ 5 years ago
4 weeks
Time
Release cycleRelease cycle
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
10. bol.com ~ 2 years agobol.com ~ 2 years ago
4 weeks
Time
Release cycleRelease cycle
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
19. AgendaAgenda
1. Perspective1. Perspective
2. define: beast2. define: beast
4. Taming the beast4. Taming the beast
3. Why not3. Why not slayslay it it
5. Lessons learnt5. Lessons learnt
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
20. AgendaAgenda
1. Perspective1. Perspective
2. define: beast2. define: beast
4. Taming the beast4. Taming the beast
3. Why not3. Why not slayslay it it
5. Lessons learnt5. Lessons learnt
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
21. How to tame a beast?How to tame a beast?
Through being able to change it at a fast andThrough being able to change it at a fast and
stable pacestable pace
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
23. Continuous Delivery (CD)Continuous Delivery (CD)
“Continuous Delivery is a software development“Continuous Delivery is a software development
discipline where you build software in such a waydiscipline where you build software in such a way
that the software can be released to production atthat the software can be released to production at
any time.”any time.”[1][1]
Martin Fowler
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
26. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Problems with CDProblems with CD
"Problems, causes and solutions when adopting"Problems, causes and solutions when adopting
continuous delivery—A systematic literature review."continuous delivery—A systematic literature review."
Laukkanen, Eero, Juha Itkonen, and Casper Lassenius.Laukkanen, Eero, Juha Itkonen, and Casper Lassenius.
Information and Software Technology 82 (2017): 55-79.Information and Software Technology 82 (2017): 55-79. [2][2]
27. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Problems with CDProblems with CD
"Problems, causes and solutions when adopting"Problems, causes and solutions when adopting
continuous delivery—A systematic literature review."continuous delivery—A systematic literature review."
Laukkanen, Eero, Juha Itkonen, and Casper Lassenius.Laukkanen, Eero, Juha Itkonen, and Casper Lassenius.
Information and Software Technology 82 (2017): 55-79.Information and Software Technology 82 (2017): 55-79. [2][2]
published February 2017
(2 months after we started)
28. Build design Complex build, inflexible build
System design System modularization, unsuitable architecture, internal dependencies, database
schema changes
Integration Large commits, merge conflicts, broken build, work blockage, long-running
branches, broken development flow, slow integration approval
Testing Ambiguous test result, flaky tests, time-consuming testing, hardware testing, multi-
platform testing, UI testing, untestable code, problematic deployment, complex
testing
Release Customer data preservation, documentation, feature discovery, marketing, more
deployed bugs, third party integration, users do not like updates, deployment downtime
Human and
organizational
Lack of discipline, lack of motivation, lack of experience, more pressure, changing
roles, team coordination, organizational structure
Resource Effort, insufficient hardware resources, network latencies
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
Problems with CDProblems with CD
29.
Integration merge conflicts, work blockage, long-running
branches,
Testing flaky tests, time-consuming testing,
problematic deployment,
Release feature discovery,
Human and
organizational
Lack of discipline, lack of motivation, lack of experience,
team coordination,
Build design Complex build, inflexible build
System design System modularization, unsuitable architecture, internal dependencies, database
schema changes
Integration Large commits, broken build,
broken development flow, slow integration approval
Testing Ambiguous test result, hardware testing, multi-
platform testing, UI testing, untestable code, complex
testing
Release Customer data preservation, documentation, marketing, more
deployed bugs, third party integration, users do not like updates, deployment downtime
Human and
organizational
more pressure, changing
roles, organizational structure
Resource Effort, insufficient hardware resources, network latencies
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
Problems with CDProblems with CD (for our application)(for our application)
33. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Lack of discipline, lack of motivation, lack of experienceLack of discipline, lack of motivation, lack of experience
ProblemProblem
34. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Lack of discipline, lack of motivation, lack of experienceLack of discipline, lack of motivation, lack of experience
ProblemProblem
35. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Lack of discipline, lack of motivation, lack of experienceLack of discipline, lack of motivation, lack of experience
SolutionSolution
36. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Lack of discipline, lack of motivation, lack of experienceLack of discipline, lack of motivation, lack of experience
ResultResult
37. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Long running branches, merge conflicts, work blockageLong running branches, merge conflicts, work blockage
ProblemProblem
38. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Long running branches, merge conflicts, work blockageLong running branches, merge conflicts, work blockage
SolutionSolution
39. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Long running branches, merge conflicts, work blockageLong running branches, merge conflicts, work blockage
ResultResult
40. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Feature discovery, team coordination, problematic deploymentsFeature discovery, team coordination, problematic deployments
ProblemProblem
41. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
SolutionSolution
Feature discovery, team coordination, problematic deploymentsFeature discovery, team coordination, problematic deployments
42. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
ResultResult
Feature discovery, team coordination, problematic deploymentsFeature discovery, team coordination, problematic deployments
43.
44. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Lack of discipline, lack of motivation, lack of experienceLack of discipline, lack of motivation, lack of experience
ProblemProblem
45. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
ResultsResults
30 releases instead of 430 releases instead of 4
446 features realeased446 features realeased
TTL 4 days vs 1.5 weeksTTL 4 days vs 1.5 weeks
46. AgendaAgenda
1. Perspective1. Perspective
2. define: beast2. define: beast
4. Taming the beast4. Taming the beast
3. Why not3. Why not slayslay it it
4a. A look into the future4a. A look into the future
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
5. Lessons learnt5. Lessons learnt
47. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
What's next?What's next?
“The past is always tense,“The past is always tense,
the future perfect.”the future perfect.”
Zadie Smith Zadie Smith
50. AgendaAgenda
1. Perspective1. Perspective
2. define: beast2. define: beast
4. Taming the beast4. Taming the beast
3. Why not3. Why not slayslay it it
5. Lessons learnt5. Lessons learnt
@MikeChernevCodemotion Amsterdam 2018: Taming a beast
51. @MikeChernevCodemotion Amsterdam 2018: Taming a beast
Stable and reliable tests suiteStable and reliable tests suite
Proper branching strategyProper branching strategy
Lessons learntLessons learnt
Visibility on your pipelineVisibility on your pipeline
Effective communicationEffective communication
Stable and reliable tests suiteStable and reliable tests suite