continuous delivery the french way agile cambridge 2014
DESCRIPTION
We detail the way LesFurets.com is organised to deliver daily new features. This session was performed at Agile Cambridge 2014TRANSCRIPT
Dimitri BAELI - Arnaud PFLIEGER https://github.com/lesfurets
CONTINUOUSDELIVERYTHE FRENCH WAY
LESFURETS.COM22 software engineers3 Devops (automation & operations)1 Architect
LESFURETS.COM1 website, 6 product lines400k lines of code, 30k Unit tests200 Selenium tests10+ Servers1 code base
IN 201211 RELEASES
Mind set:Plan/Estimate/Code/Test/Release monthly
IN 2014143 RELEASES
Mind set:Ship what is READY the next day
IN 2012Scrum sprints ended by a releaseSubversion : trunk + 1 maintenance branchBuild : 15min, Selenium in a grid: 200 in 1hTesting phase : 4-6 days, Deployment in 2hCommit to Prod : from 5d to 4 weeks
IN 2014Lean KanbanDaily releasesGIT : master + feature branchesBuild : 3' (was 15') + Selenium : 10' (was 1h)Release : 5min + 30min monitoringCommit to Prod : coding time + 1 day
A FEW THINGS WE READ
AGILE MANIFESTOPRINCIPLE 3
"Our highest priority is to satisfy the customer through early and continuous delivery ofvaluable software."
PRODUCT DEVELOPMENT FLOWDON REINERTSEN
Work with a flowManage Queues of workLead Time more than work durationReduce per release costs
CONTINUOUS DELIVERYJEZ HUMBLE, DAVID FARLEY
1. Fast builds2. Pre-Commit check (all tests ever ok)3. Simple and fast automated deployments4. Production monitoring and alerting5. Root Cause Analysis
DELIVER EARLY, DELIVER OFTEN
Source: http://paulhammant.com/2013/03/13/facebook-tbd-take-2/
KANBAN : EVOLUTIONARY CHANGEDAVID ANDERSON
Visualize the workLimit the Work in ProcessExplicit RulesContinuous ImprovementLeadership
HOW GOOGLE TEST SOFTWAREJAMES WHITAKER
NoQA : Quality EngineeringSET : build test tools for devsDev QA their own changes
GIT FLOWVINCENT DRIESSEN
A successful git branching modelhttp://nvie.com/posts/a-successful-git-branching-model/
START BYFINISHING !
BECAUSE FRENCH GUYS AREDOING EVERYTHING BACKWARD
CONTINUOUS DELIVERY1. Operations2. Delivery3. Validation4. Continuous integration5. Analysis & Coding : Branch
OPERATIONSTECHNICAL MONITORING AND ALERTING
OPERATIONSFUNCTIONAL MONITORING AND
ALERTING
DELIVERY
AUTOMATE
"Infrastructure as code"
Code
Conf
SQL
LocalPre-prod Prod
DEPLOYMENT
0 downtime
Blue/green
Doubled production environmentLoadbalancer
User LoadbalancerProduction 1
Production 2Database
version N
version N+1
VALIDATIONManual testsRegression Testing : ZenoSeleniumCode reviewsShowcase/functional validation
ZENOVISUAL REGRESSION
SELENIUM
SELENIUMPage Object PatternFluent API (FluentLenium like)Selenium in the sky with LXC200 Selenium tests in <10min
CONTINUOUS INTEGRATIONIMPACTS THE CODEBASE
CONTINUOUS INTEGRATIONBRANCHING MODEL
Trunk + Release branchTrunk based (all commits to master + toggle)Feature Branching + Merge when ready
CONTINUOUS INTEGRATION
Deliver ...when it's ready
FEATURE BRANCHING
CONTINUOUS INTEGRATIONON EVERY COMMIT
CompilationAutomated testsContinuous Merge (Octopus)
CONTINUOUS MERGE
octopus
master feature A feature B
octopus
master feature A
feature B
octopus
master feature A
feature Bdisposablecommit
CONTINUOUS MERGEBuild a test environmentDetect conflictsPlug/unplug branches easilyGit Octopus Merge
MANAGING CONFLICTS
Avoid conflicts vs Resolve conflicts
MANAGING CONFLICTS
A LOT OF OPTIONS
Remove the conflicting branch (put aside, comeback later)Find a way to make it mergeMerge branches in conflict (resolve the conflict)Merge in master (+ merge everywhere)
Merge is the worst case (default in trunk based development)
30 BRANCHES AT WORK !
EXCEPTIONS TO THE BRANCHING MODELFeature togglesBig refactorings
FEATURE TOGGLE
When ?
Lots of conflictsLong term branch
BIG REFACTORINGSToo many conflictsLong term task
Special treatmentBlocks the release
THANK YOU TOArnaud: let's see if branching really fails (octopus)Mehdi: I bet it won't work (bet accepted !)Matthieu: Perceptual Diff ? ok let's tryThomas: Docker+RamFS for the Selenium Grid (1h -> 10min)Andreï/Julien: Fluent Selenium Page Object generationEmmanuel: Ok for some bugs in production, but fix them fastGilles: Go, go, go !And all the devteam to jump in deep end so easily
ONE MORE THINGFork us on GitHub
Selenium in the sky with LXCGit Octopus - Continuous MergingAnd more soon ...Follow us cousins of
http://github.com/lesfurets
@BeastieFurets @ctmersselenium-in-the-sky-with-lxc@ctmers
THANK YOU