Workshop Exercises to spice up your Agile Retrospective Agile Cambridge 2017 - Ben Linders
Continuous delivery the french way Agile Cambridge 2014
-
Upload
dbaeli -
Category
Technology
-
view
762 -
download
0
description
Transcript of Continuous delivery the french way Agile Cambridge 2014
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