@BeastieFurets#LesFuretsContinuous
Livrer chaque jour
ce qui est prêt
https://www.lesfurets.com
@BeastieFurets
Dimitri BAE...
@BeastieFurets#LesFuretsContinuous
Livrer chaque jour ce qui est prêt
• Contexte
• Points de repère
• Points clés : de la ...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
Contexte
@BeastieFurets#LesFuretsContinuous
1er site indépendant de comparaison d’assurance :
• Lancé en 2012
• 2,5M de devis par a...
@BeastieFurets#LesFuretsContinuous
Application
Une application front et une application backoffice :
• 6 produits :
• Java ...
@BeastieFurets#LesFuretsContinuous
Équipe de développement
• 4 Feature Teams :
➡ 7 Business Analysts / Product Owners
➡ 22...
@BeastieFurets#LesFuretsContinuous
2012
L’ancienne organisation en scrum classique :
• Build : 15 minutes
• 200 Seleniums ...
@BeastieFurets#LesFuretsContinuous
Rythme 2012 - Mensuel
12 releases
L’esprit :
planifier / estimer / coder / tester /
live...
@BeastieFurets#LesFuretsContinuous
Depuis 2014
L’organisation actuelle :
• Build : 3 minutes
• Seleniums : 10 minutes
• Li...
@BeastieFurets#LesFuretsContinuous
Rythme 2014/15 - Quotidien
208 releases en 2014 (déjà 47 en 2015)
L’esprit :
livrer ce ...
@BeastieFurets#LesFuretsContinuous
Feature Time To Market
• 2012 :
➡ Du dernier commit à la MEP : en moyenne 2 semaines
➡ ...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
Points de repère
@BeastieFurets#LesFuretsContinuous
Manifeste agile
Principe #1
« Notre plus haute priorité est de satisfaire le client
en ...
@BeastieFurets#LesFuretsContinuous
Livrer tôt, livrer souvent
http://paulhammant.com/2013/03/13/facebook-tbd-take-2/
@BeastieFurets#LesFuretsContinuous
Continuous Delivery
1. Build rapide
2. Build robuste
3. Déploiements simples et automat...
@BeastieFurets#LesFuretsContinuous
Git Flow
Un puissant modèle de branches Git
http://nvie.com/posts/a-successful-git-bran...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
Points clés : de la conception à l’exploitation
@BeastieFurets#LesFuretsContinuous
Améliorer par la fin
5. Monitoring & Exploitation
4. Mise En Production
3. Release Créa...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
1. Conception
@BeastieFurets#LesFuretsContinuous
Flux de fonctionnalités
• #1 Fonctionnalités conçues pour être indépendantes
• Livrable...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
2. Développement
@BeastieFurets#LesFuretsContinuous
Environnement Dev
• Chaque fonctionnalité sur une branche feature dédiée
• Code Product...
@BeastieFurets#LesFuretsContinuous
Intégration Continue
Feature Branching + Intégration Continue
@BeastieFurets#LesFuretsContinuous
Intégration Continue
L’intégration continue effectue à chaque commit :
• Compilation
• ...
@BeastieFurets#LesFuretsContinuous
Continuous Merge Octopus
• Outil Open Source de merge en continu
• Développé en interne...
@BeastieFurets#LesFuretsContinuous
Continuous Merge Octopus
@BeastieFurets#LesFuretsContinuous
Environnement Stage
• Quasi iso environnement de Production
• Regroupement de toutes le...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
3. Release Création & Validation
@BeastieFurets#LesFuretsContinuous
Création Release Branche
Création entièrement automatisée :
• Regroupement des features...
@BeastieFurets#LesFuretsContinuous
Validation Release Branche
Validation à l’aide d’outils manuels et automatiques :
• Tes...
@BeastieFurets#LesFuretsContinuous
Grid Selenium on LXC
• 200 Tests Selenium : 6 heures
• Grid Selenium classique : 1heure...
@BeastieFurets#LesFuretsContinuous
Zeno Pixel
• Outil Open Source de comparaison d’images (perceptual diff)
• Développé en...
@BeastieFurets#LesFuretsContinuous
Zeno Pixel
• Screenshots automatiques des pages du site
• Cross-environment (Stage, Pre...
@BeastieFurets#LesFuretsContinuous
Zeno Pixel
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
4. Mise En Production
@BeastieFurets#LesFuretsContinuous
Mise En Production
• Réalisée de A à Z par un seul développeur
• Automatisée via Jenkin...
@BeastieFurets#LesFuretsContinuous
Infrastructure As Code
Toutes les modifications de configuration sont historisées
Les bug...
@BeastieFurets#LesFuretsContinuous
Déploiement
Tout le déploiement est fait avec 0 downtime en utilisant un
système Blue /...
@BeastieFurets#LesFuretsContinuous
Git Flow Résumé
39
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
5. Monitoring & Exploitation
@BeastieFurets#LesFuretsContinuous
Monitoring technique
Sondes Zabbix - Indicateurs techniques
@BeastieFurets#LesFuretsContinuous
Monitoring fonctionnel
Sondes Zabbix - Indicateurs fonctionnels
@BeastieFurets#LesFuretsContinuous
Alertes & Logs
Chaque logs/traces d'erreurs arrivent par mail
depuis de chaque environn...
@BeastieFurets#LesFuretsContinuous
Post Mortem
• Work in progress
• Post Mortem sur chaque incident de Production
• Analys...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
Quelques Inspirations
@BeastieFurets#LesFuretsContinuous
How Google Test Software
• Quality Engineering plutôt que 

Quality Assurance
• Créatio...
@BeastieFurets#LesFuretsContinuous
Kanban : Evolutionary Change
• Visualisation du travail
• Limiter le travail en cours (...
@BeastieFurets#LesFuretsContinuous
Product Development Flow
• Travailler en flux
• Gérer les files d’attentes
• Regarder le ...
@BeastieFurets#LesFuretsContinuous
How to measure anything
• Lié à une décision à prendre
• Poser le problème
• Beaucoup p...
@BeastieFurets#LesFuretsContinuous
The Phoenix project
• How to avoid experts as SPOF
• DevOps as Business enabler
• Small...
@YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous
On recrute !
http://www.lesfurets.com/nous-rejoindre
Prochain SlideShare
Chargement dans…5
×

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

1 371 vues

Publié le

Devoxx 2015 - Livrer chaque jour ce qui est prêt ! Points clés du développement d'un produit avec une livraison par jour.

C'est une aventure très enrichissante de passer d'une organisation de type "éditeur logiciel" (Cycle Plan/Dev/Recette/Prod) avec une release par mois à une organisation non moins solide de type "Continuous Delivery" avec une mise en production par jour de "ce qui est prêt". C'est pourquoi nous vous proposons de découvrir les moyens techniques et organisationnels en pratique chez LesFurets.com pour garantir la qualité tout en diminuant le "Time To Market" : déploiement par les devs, travail en feature branches avec un merge continu, itérations avec le business, monitoring de prod pour tous, ...

Benjamin Degerbaix
Après avoir passé 5 ans à développer des logiciels de gestion et d'analyse de risques pour les banques de marchés, je travaille actuellement, et ce depuis près de 2 ans, au sein de l'équipe R&D du site de comparaison d'assurances LesFurets.com. Je touche un peu à tout, du front au back, de la UI du site mobile, à l'extraction de données et l'automatisation de rapports.

Publié dans : Internet
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 371
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
25
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

  1. 1. @BeastieFurets#LesFuretsContinuous Livrer chaque jour ce qui est prêt https://www.lesfurets.com @BeastieFurets Dimitri BAELI (@dbaeli) Benjamin DEGERBAIX (@benbaix)
  2. 2. @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
  3. 3. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous Contexte
  4. 4. @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
  5. 5. @BeastieFurets#LesFuretsContinuous Application Une application front et une application backoffice : • 6 produits : • Java (tomcat) & GWT (client) • 400k LOC • 40k tests unitaires • 200 tests Selenium
  6. 6. @BeastieFurets#LesFuretsContinuous Équipe de développement • 4 Feature Teams : ➡ 7 Business Analysts / Product Owners ➡ 22 Développeurs • 2 OPS + 1 QE • 2 Archi-codeurs
  7. 7. @BeastieFurets#LesFuretsContinuous 2012 L’ancienne organisation en scrum classique : • Build : 15 minutes • 200 Seleniums : 1 heure • Sprints d’un mois se terminant par une mise en production
  8. 8. @BeastieFurets#LesFuretsContinuous Rythme 2012 - Mensuel 12 releases L’esprit : planifier / estimer / coder / tester / liver de manière mensuelle Sprints
  9. 9. @BeastieFurets#LesFuretsContinuous Depuis 2014 L’organisation actuelle : • Build : 3 minutes • Seleniums : 10 minutes • Livraison de ce qui est prêt à J+1
  10. 10. @BeastieFurets#LesFuretsContinuous Rythme 2014/15 - Quotidien 208 releases en 2014 (déjà 47 en 2015) L’esprit : livrer ce qui est prêt aujourd’hui … tous les jours ! Marathon
  11. 11. @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
  12. 12. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous Points de repère
  13. 13. @BeastieFurets#LesFuretsContinuous Manifeste agile Principe #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
  14. 14. @BeastieFurets#LesFuretsContinuous Livrer tôt, livrer souvent http://paulhammant.com/2013/03/13/facebook-tbd-take-2/
  15. 15. @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
  16. 16. @BeastieFurets#LesFuretsContinuous Git Flow Un puissant modèle de branches Git http://nvie.com/posts/a-successful-git-branching-model/
  17. 17. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous Points clés : de la conception à l’exploitation
  18. 18. @BeastieFurets#LesFuretsContinuous Améliorer par la fin 5. Monitoring & Exploitation 4. Mise En Production 3. Release Création &Validation 2. Développement 1. Conception
  19. 19. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous 1. Conception
  20. 20. @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.
  21. 21. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous 2. Développement
  22. 22. @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
  23. 23. @BeastieFurets#LesFuretsContinuous Intégration Continue Feature Branching + Intégration Continue
  24. 24. @BeastieFurets#LesFuretsContinuous Intégration Continue L’intégration continue effectue à chaque commit : • Compilation • Tests automatisés • Merge des features branches (Octopus) ➡ On fait du continuous merge avec l’Octopus
  25. 25. @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
  26. 26. @BeastieFurets#LesFuretsContinuous Continuous Merge Octopus
  27. 27. @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
  28. 28. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous 3. Release Création & Validation
  29. 29. @BeastieFurets#LesFuretsContinuous Création Release Branche Création entièrement automatisée : • Regroupement des features prêtes (Octopus) • Déploiement sur Pre-Prod (quasi iso Prod) • Validation sur Pre-Prod
  30. 30. @BeastieFurets#LesFuretsContinuous Validation Release Branche Validation à 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)
  31. 31. @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
  32. 32. @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
  33. 33. @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
  34. 34. @BeastieFurets#LesFuretsContinuous Zeno Pixel
  35. 35. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous 4. Mise En Production
  36. 36. @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
  37. 37. @BeastieFurets#LesFuretsContinuous Infrastructure As Code Toutes les modifications de configuration sont historisées Les bugs de configuration sont des bugs de code
  38. 38. @BeastieFurets#LesFuretsContinuous Déploiement Tout le déploiement est fait avec 0 downtime en utilisant un système Blue / Green
  39. 39. @BeastieFurets#LesFuretsContinuous Git Flow Résumé 39
  40. 40. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous 5. Monitoring & Exploitation
  41. 41. @BeastieFurets#LesFuretsContinuous Monitoring technique Sondes Zabbix - Indicateurs techniques
  42. 42. @BeastieFurets#LesFuretsContinuous Monitoring fonctionnel Sondes Zabbix - Indicateurs fonctionnels
  43. 43. @BeastieFurets#LesFuretsContinuous Alertes & Logs Chaque 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
  44. 44. @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
  45. 45. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous Quelques Inspirations
  46. 46. @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
  47. 47. @BeastieFurets#LesFuretsContinuous Kanban : Evolutionary Change • Visualisation du travail • Limiter le travail en cours (WIP) • Règles explicites • Amélioration continue • Leadership
  48. 48. @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
  49. 49. @BeastieFurets#LesFuretsContinuous How to measure anything • Lié à une décision à prendre • Poser le problème • Beaucoup plus simple qu’on pense 49
  50. 50. @BeastieFurets#LesFuretsContinuous The Phoenix project • How to avoid experts as SPOF • DevOps as Business enabler • Small and motivated teams • Resilience ! 50
  51. 51. @YourTwitterHandle@YourTwitterHandle@BeastieFurets#LesFuretsContinous On recrute ! http://www.lesfurets.com/nous-rejoindre

×