continuous delivery the french way agile cambridge 2014

Post on 28-Nov-2014

762 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

We detail the way LesFurets.com is organised to deliver daily new features. This session was performed at Agile Cambridge 2014

TRANSCRIPT

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

top related