Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli
-
Upload
institut-lean-france -
Category
Technology
-
view
180 -
download
0
Transcript of Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli
![Page 1: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/1.jpg)
Kanban as CodeCode level impact of a Lean mindset
![Page 3: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/3.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Insurance aggregator
5 Products
2,5M quotes per year
Paid by contracts initiated
Our product
![Page 4: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/4.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
The engine
• Complex forms
• 40-200 Fields (Expedia is around 10 fields)
• Risk pricing engine
• 50+ external webservices called in real time
• Collect answers within seconds
• 2B+ fields mapping per year
• Embedded online subscription moduleLesFuretsWebSite
Panel Partners
Data Partners
![Page 5: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/5.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Competitive Advantage(s)
Product Catalogue :Number of Panel members
Speed of getting new Panel membersAcquisition price compared to google, …
Quality of the offers presented to the usersQuality of the clients presented to the partners
UX of the WebSite :Speed of getting a proposal, clarity of the proposalAvoid mistakes along the form filling
![Page 6: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/6.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
The IT Team
• 23 Developers & 2 Ops
• 2 Functional Teams & 1 Infrastructure & Team
• 1 Single code base of 500.000 lines
• 40.000 unit tests (low level automated tests)
• 200 selenium tests (browser based automated tests)
•1-3 release per day of 1-10 changes
• 1 branch per feature : released when ready
• Soon known as “Kanban as code”
• 20-30 branches in parallel, 1-10 released per day
@beatiefurets
github.com/lesfurets
![Page 7: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/7.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
500.000 Lines of Code (LoC) that’s :
7 dictionaries of 500 pages (140 lines / page)
2 times the 7 Harry Poter volumes (3400 pages)
A new version daily5-10 changes by 25 devs
Intermezzo : 500.000 line of code ?
x 7x 2
![Page 8: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/8.jpg)
Why daily releases ?What read and understood
![Page 9: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/9.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Manifeste agile
Principe #1
« Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. »
http://agilemanifesto.org/principles.html
![Page 10: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/10.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Food for thought : back to the future
![Page 11: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/11.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Reading survivor kit : save your life
![Page 12: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/12.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Minimal Viable : what you can’t ignore
![Page 13: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/13.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Release early, release often
http://paulhammant.com/2013/03/13/facebook-tbd-take-2/
![Page 14: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/14.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Learning #1 : Release early, release often
• To reduce the Time to Market :• Release small batches of features
• Release often
• Releasing often• Change the way source code is managed
• Change in the QA strategy (Dev QA their own changes)
• Test tooling is provisioned for the des
• Fast Feedbacks as a gift
![Page 15: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/15.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Continuous Delivery : 5 Golden Rules
1. Fast build
2. Unbreakable build
3. Easy and automated deployments
4. Runtime Monitoring and alerting
5. Root cause analysis of incidents
![Page 16: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/16.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Git / Git Flow / Github Flow
Powerful branching model
http://nvie.com/posts/a-successful-git-branching-model/
Master
Branch
Pull Request
Github
![Page 17: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/17.jpg)
Code management in 2017The minimum to know, no excuse !
![Page 18: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/18.jpg)
@beastiefurets@dbaeli
Original code:
master
![Page 19: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/19.jpg)
@beastiefurets@dbaeli
Change 1 : Lean IT
![Page 20: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/20.jpg)
@beastiefurets@dbaeli
Change 2 : Beastie Furets
![Page 21: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/21.jpg)
@beastiefurets@dbaeli
Change 3 : Hello Beastie
![Page 22: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/22.jpg)
@beastiefurets@dbaeli
A commit
![Page 23: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/23.jpg)
@beastiefurets@dbaeli
master
Commit 1 : Lean IT
commit 1
![Page 24: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/24.jpg)
@beastiefurets@dbaeli
A branch (copy)
![Page 25: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/25.jpg)
@beastiefurets@dbaeli
Change 2 = commit 2
commit 2
master commit 1
![Page 26: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/26.jpg)
@beastiefurets@dbaeli
Let’s merge the branch
![Page 27: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/27.jpg)
@beastiefurets@dbaeli
master
Change 1 & Change 2 : combined (merged)
commit 1 merged
commit 2
![Page 28: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/28.jpg)
@beastiefurets@dbaeli
A conflict of 2 branches
![Page 29: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/29.jpg)
@beastiefurets@dbaeli
Commit 3 : Hello Beastie
master
commit 3
![Page 30: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/30.jpg)
@beastiefurets@dbaeli
master
Commit 2 : Hello Lean IT
commit 2
![Page 31: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/31.jpg)
@beastiefurets@dbaeli
???????
Change 3 : Hello Beastie
master
conflictcommit 3
commit 2
![Page 32: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/32.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Minimum viable vocabulary (1/2)
•Commit: • is a change within the code base
• described as a “diff” from original (or patch)
• History :• Sequence of Commits (changes)
• Branch:• A full copy of the code base at a given time
• Can be seen as an alternate history
• Merge:• Replay commits of a branch on another
branch 1
branch
commit 1
commit 2
commit 4
commit
merge
commit 3
![Page 33: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/33.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Minimum viable vocabulary (2/2)
• Conflict: • when 2 commits aren’t compatible
• from 2 branches
• Resolution :• give a solution to the conflict
• Rebase :• change the start point of a branch
• time travel (get into the future)
branch 1
branch 2 commit 2
commit a
conflict
commit 3
commit 2
commit a
commit 3
rebase
![Page 34: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/34.jpg)
Release more often - Step 1Monthly releases (2012)
![Page 35: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/35.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Plan / estimate / code / test / release monthly
Sprints style 12 releases in a year
2012 : Monthly release
![Page 36: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/36.jpg)
@beastiefurets@dbaeli
branch (prod)
trunk trunk
3 - 4 semaines 1 - 4 jours5 jours
Release
Code Freeze
branch
![Page 37: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/37.jpg)
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
![Page 38: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/38.jpg)
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
![Page 39: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/39.jpg)
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
![Page 40: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/40.jpg)
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
Risk of conflicts
![Page 41: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/41.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Agile Team of 12, SCRUM by the book
•Monthly sprints, planning, coding, testing, demo, release
• 1 Week of testing (code review, manual testing, bug fixes)
• Build Time : 15 minutes• Regression Testing : 1-2 hour
•Blockers : • Build time• Regression Testing• A Week of manual testing
2012 : Monthly releases
![Page 42: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/42.jpg)
Release more often - Step 2Weekly release (2013)
![Page 43: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/43.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2013 : Weekly release
Planifier / estimer / coder / tester Release weekly
50 releases per year
![Page 44: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/44.jpg)
@beastiefurets@dbaeli
branch (prod)
trunk trunk
3 - 4 semaines 1 - 4 jours5 jours
Release
Code Freeze
branch
![Page 45: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/45.jpg)
@beastiefurets@dbaeli
branch (prod)
trunk trunk
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
Storie 1
![Page 46: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/46.jpg)
@beastiefurets@dbaeli
branch (prod)
trunk trunk
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
Storie 1
![Page 47: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/47.jpg)
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
![Page 48: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/48.jpg)
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 weeks 1 - 4 days5 days
1 week
![Page 49: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/49.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
• Keep Scrum monthly planning with Weekly releases
•Changes:• Use the patch process to deliver features (cherry pick)
• Build down to 3 minutes (vs 15 minutes)
•Blockers:• Regression Testing + Recette• Code level management (release branch)• Painful weekly patch release
2013 : Getting Weekly
![Page 50: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/50.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Learning #2 : Patch process as release process
• When something goes wrongs on the live system
•Do you have a strong process to release a fix ?
• NO => you’re living dangerously => get one• YES => why don’t you use it for usual releases ?
•Anyway :• Get a robust and fast delivery process is not an option !
![Page 51: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/51.jpg)
Release more often - Step 3Daily release (2014)
![Page 52: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/52.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2014: Daily Releases
Ship what is ready … every day !
Marathon style
250 releases per year (already 50 in 2017 !)
![Page 53: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/53.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Model 3: Kanban as code
Storie 1
Storie 2Storie 3
![Page 54: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/54.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Storie 1
Model 3: Kanban as code
![Page 55: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/55.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Storie 1
Model 3: Kanban as code
Is this branch ready ?
![Page 56: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/56.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Storie 1
Model 3: Kanban as code
merge & test
Merge the branch and test
![Page 57: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/57.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Storie 1
merge & test & drop
Model 3: Kanban as code
Merge the branches and test
![Page 58: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/58.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Storie 1
Storie 2
merge & test
Model 3: Kanban as code
Merge the branches and test
![Page 59: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/59.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Storie 1
Storie 2Storie 3
merge & test
Model 3: Kanban as code
Merge the branches and test
![Page 60: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/60.jpg)
@beastiefurets@dbaeli
Keep the branches independentAvoid the conflict
Merge the branches and test
git-octopus by lesfurets (on GitHub)
![Page 61: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/61.jpg)
@beastiefurets@dbaeli
master
trunk
1 day 1 day
Storie 1
Storie 2Storie 3
Model 3: Kanban as code
![Page 62: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/62.jpg)
@beastiefurets@dbaeli
ticket1
ticket2
ticket3
ticket4
ticket5
features releaseslocal
ticket3
master
ticket3
ticket1
master
octopus-features
octopus-releases
few minutes 1 jour à 1 mois 1 - 2 jours
Validation
0 - 2 jours
release
![Page 63: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/63.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Learning #4 : Don’t block the others
• We keep the features separated until the last moment
• Other teams are merging by default !!!
• Continuous Merge (as test tooling):
• Detect conflicts with others (without requiring you to get their code)
• Allow you to avoid conflits
• Allow you to drop your code temporarely
•Bonus:
• Avoid unfinished code to be used by the others
![Page 64: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/64.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Break release branches, release from trunk
• Improvments:
• Automated release from finished development
• Per feature code review & demo
• 15 minutes regression testing (testing architecture)
• Release by 1 dev alone
• Monitoring & Root cause analysis of issues
2014: Daily Releases
![Page 65: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/65.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Learnings : Kanban as Code
#1 : Release early, release often #2 : Patch process as main release process #3 : Avoid merge & conflicts #4 : Don’t block the others
![Page 66: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/66.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Take away : Kanban as Code
The Goals:
• # A Flow of Features at code level (Branches)
• # Release what is ready when it’s ready (Start by finishing)
• # Branches are your Kanban card (Step 1 of a pull system)
Why does it work :
• # Enforce the features to be independent (Really Independent !)
• # Low risk of conflict on 500.000 Line of Code (daily)
• # No branch can block another one (or it the same)
![Page 67: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/67.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Beastie Furets (LesFurets IT Team)
@beastiefurets
beastie.lesfurets.com
lesfurets
![Page 68: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/68.jpg)
@dbaeli@beastiefurets
MERCI !
![Page 69: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/69.jpg)
69
LesFurets.com LeanKanban.fr29, 30 Novembre 2017 www.leankanban.fr
![Page 70: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/70.jpg)
@beastiefurets@dbaeli
Avoid the conflict
![Page 71: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/71.jpg)
@beastiefurets@dbaeli
Change 3 : Original (conflict with Change 2)
master
commit 3
![Page 72: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/72.jpg)
@beastiefurets@dbaeli
Change 3bis : New version (avoid conflict)
master
commit 3
commit 2
![Page 73: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/73.jpg)
@beastiefurets@dbaeli
Commit 1, 2: Easy merge
master
commit 3
commit 2
resolved
commit 1
![Page 74: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/74.jpg)
@beastiefurets@dbaeli
Change 1, 2 & 3bis : Merged
master merged
commit 3
commit 2commit 1
![Page 75: Kanban as code: the Continuous Delivery at LesFurets.com by Dimitri Baeli](https://reader031.fdocuments.in/reader031/viewer/2022030313/58ed091b1a28ab42668b45e3/html5/thumbnails/75.jpg)
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Learning #3: Avoid merge & conflicts
• For 2 Features developed separately:
• Merge = enforce to release together
• But Merging new code is the default for many teams
• Avoid merges (or release immediately):
• Trunk Based Development
• Any alternatives ?