devoxx france 2015 livrer chaque jour ce qui est prêt

51
@BeastieFurets #LesFuretsContinuous Livrer chaque jour ce qui est prêt https://www.lesfurets.com @BeastieFurets Dimitri BAELI (@dbaeli) Benjamin DEGERBAIX (@benbaix)

Upload: beastiefurets

Post on 17-Jul-2015

420 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Livrer chaque jour ce qui est prêt

https://www.lesfurets.com @BeastieFurets Dimitri BAELI (@dbaeli) Benjamin DEGERBAIX (@benbaix)

Page 2: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Livrer chaque jour ce qui est prêt

• Contexte

• Points de repère

• Points clés : de la conception à l’exploitation

• Quelques inspirations

2

Page 3: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

Contexte

Page 4: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

1er site indépendant de comparaison d’assurance :

• Lancé en 2012

• 2,5M de devis par an

• 31% du marché de la comparaison de contrats auto

Page 5: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

ApplicationUne application front et une application backoffice :

• 6 produits :

• Java (tomcat) & GWT (client)

• 400k LOC

• 40k tests unitaires

• 200 tests Selenium

Page 6: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Équipe de développement• 4 Feature Teams :

➡ 7 Business Analysts / Product Owners

➡ 22 Développeurs

• 2 OPS + 1 QE

• 2 Archi-codeurs

Page 7: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

2012L’ancienne organisation en scrum classique :

• Build : 15 minutes

• 200 Seleniums : 1 heure

• Sprints d’un mois se terminant par une mise en production

Page 8: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Rythme 2012 - Mensuel12 releases

L’esprit :

planifier / estimer / coder / tester / liver de manière mensuelle

Sprints

Page 9: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Depuis 2014L’organisation actuelle :

• Build : 3 minutes

• Seleniums : 10 minutes

• Livraison de ce qui est prêt à J+1

Page 10: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Rythme 2014/15 - Quotidien208 releases en 2014 (déjà 47 en 2015)

L’esprit :

livrer ce qui est prêt aujourd’hui… tous les jours !

Marathon

Page 11: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Feature Time To Market• 2012 :

➡ Du dernier commit à la MEP : en moyenne 2 semaines

➡ Non satisfaisant pour le business

• 2014 :

➡ Du dernier commit à la MEP : en moyenne 2 jours

➡ Quand c’est prêt

Page 12: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

Points de repère

Page 13: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Manifeste agilePrincipe #1

« Notre plus haute priorité est de satisfaire le client en livrant rapidement et régulièrement

des fonctionnalités à grande valeur ajoutée. »

http://agilemanifesto.org/iso/fr/principles.html

Page 14: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Livrer tôt, livrer souvent

http://paulhammant.com/2013/03/13/facebook-tbd-take-2/

Page 15: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Continuous Delivery

1. Build rapide

2. Build robuste

3. Déploiements simples et automatisés

4. Monitoring de production et alertes

5. Analyse des causes racines

Page 16: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Git FlowUn puissant modèle de branches Git

http://nvie.com/posts/a-successful-git-branching-model/

Page 17: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

Points clés : de la conception à l’exploitation

Page 18: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Améliorer par la fin5. Monitoring & Exploitation

4. Mise En Production

3. Release Création & Validation

2. Développement

1. Conception

Page 19: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

1. Conception

Page 20: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Flux de fonctionnalités• #1 Fonctionnalités conçues pour être indépendantes

• Livrable dès que c’est prêt

• Découplage des fonctionnalités

• Si dépendant alors attendre ou fusionner

• #2 Fast feedback

• Petites taches vites en production

• Retour chiffré rapide pour prise de décision : stop / cont.

Page 21: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

2. Développement

Page 22: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Environnement Dev• Chaque fonctionnalité sur une branche feature dédiée

• Code Production (master) + fonctionnalité uniquement

• Isolation sur le poste de chaque développeur (+ alias DNS)

• Environnements quasi iso Production

• Capacité de se focaliser sur ce développement

Page 23: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Intégration ContinueFeature Branching + Intégration Continue

Page 24: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Intégration ContinueL’intégration continue effectue à chaque commit :

• Compilation

• Tests automatisés

• Merge des features branches (Octopus)

➡ On fait du continuous merge avec l’Octopus

Page 25: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Continuous Merge Octopus• Outil Open Source de merge en continu

• Développé en interne chez LesFurets.com :

➡ https://github.com/lesfurets/git-octopus

• Conférence dédiée à Devoxx par Arnaud Pflieger

Page 26: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Continuous Merge Octopus

Page 27: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Environnement Stage• Quasi iso environnement de Production

• Regroupement de toutes les features en cours (Octopus)

• Effets de bord des features

• Seleniums sur le regroupement

• Suivi des logs plus facile

Page 28: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

3. Release Création & Validation

Page 29: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Création Release BrancheCréation entièrement automatisée :

• Regroupement des features prêtes (Octopus)

• Déploiement sur Pre-Prod (quasi iso Prod)

• Validation sur Pre-Prod

Page 30: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Validation Release BrancheValidation à l’aide d’outils manuels et automatiques :

• Tests unites et d’intégration

• Code review

• Validation fonctionnelle (sur env Stage)

• Grid Selenium

• Non régression UI (Zeno)

Page 31: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Grid Selenium on LXC• 200 Tests Selenium : 6 heures

• Grid Selenium classique : 1heure

• Grid Selenium RamFS : 10 minutes

• 1 Machine OVH, 128 Go RAM, 300 euros/mois

• Détails sur https://github.com/lesfurets/selenium-lxc

Page 32: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Zeno Pixel• Outil Open Source de comparaison d’images (perceptual diff)

• Développé en interne chez LesFurets.com :

➡ https://github.com/lesfurets/zeno-pixel

• Conférence dédiée à Devoxx par Matthieu Fourtina

Page 33: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Zeno Pixel• Screenshots automatiques des pages du site

• Cross-environment (Stage, Pre-Prod, Prod)

• Cross-device (Desktop, Mobile, Tablet)

• Comparaisons des versions de chaque page

• Calcul des différences graphiques

Page 34: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Zeno Pixel

Page 35: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

4. Mise En Production

Page 36: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Mise En Production• Réalisée de A à Z par un seul développeur

• Automatisée via Jenkins :

➡ Création de la Release Branche

➡ Déploiement de Release Branche

➡ Merge de la Release Branche dans le master

➡ Création et diffusion de la Release Note

Page 37: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Infrastructure As Code

Toutes les modifications de configuration sont historiséesLes bugs de configuration sont des bugs de code

Page 38: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

DéploiementTout le déploiement est fait avec 0 downtime en utilisant un

système Blue / Green

Page 39: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Git Flow Résumé

39

Page 40: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

5. Monitoring & Exploitation

Page 41: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Monitoring techniqueSondes Zabbix - Indicateurs techniques

Page 42: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Monitoring fonctionnelSondes Zabbix - Indicateurs fonctionnels

Page 43: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Alertes & LogsChaque logs/traces d'erreurs arrivent par mail

depuis de chaque environnement :

• 200-1000 erreurs / jour, dont 20% depuis le JS

• 1h synthétisée = 1 mail

• 24h synthétisées = 1 mail

Page 44: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Post Mortem• Work in progress

• Post Mortem sur chaque incident de Production

• Analyse de la cause profonde

• Suivi de résolution de la cause

• Actuellement 5-10 incidents mineurs par mois, ~1 major

Page 45: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

Quelques Inspirations

Page 46: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

How Google Test Software• Quality Engineering plutôt que

Quality Assurance

• Création d’outils de test pour les devs

• Les devs font la QA eux même

Page 47: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Kanban : Evolutionary Change• Visualisation du travail

• Limiter le travail en cours (WIP)

• Règles explicites

• Amélioration continue

• Leadership

Page 48: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

Product Development Flow• Travailler en flux

• Gérer les files d’attentes

• Regarder le lead time plutôt que le coût

de développement

• Réduire le coût de livraison

Page 49: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

How to measure anything• Lié à une décision à prendre

• Poser le problème

• Beaucoup plus simple qu’on pense

49

Page 50: Devoxx france 2015   livrer chaque jour ce qui est prêt

@BeastieFurets#LesFuretsContinuous

The Phoenix project• How to avoid experts as SPOF

• DevOps as Business enabler

• Small and motivated teams

• Resilience !

50

Page 51: Devoxx france 2015   livrer chaque jour ce qui est prêt

@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous

On recrute !

http://www.lesfurets.com/nous-rejoindre