Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Livrer chaque jour ce qui est prêt

Continuous Delivery & Continuous Merge
Le contexte
LesFurets.com
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
1er site indépendant de comparaison d’assurance :
• Lancé en 201...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Application
• 6 formulaires complexes
• 50+ partenaires interrog...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Continuous Delivery ?
Livrés en 4 mois par container !
Record à ...
Etre développeur
Cycle de maturation
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
1995-1998 Etudiant (ENSIMAG)
▪Code jamais utilisé en production
...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
1998-2006 Codeur (Edition logicielle)
▪Livraison: Mensuelle-Annu...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2006-2011 Développement Agile
▪ Livraison: 15-30 jours (démo glo...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2011 Lean & Continuous Delivery
▪ Livraison: J+1 (démo unitaire)...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2016 Manager
D’une équipe de 25 développeurs
• 12.500 lignes par...
Continuous Delivery
La Théorie
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Manifeste agile
Principe #1
« Notre plus haute priorité est de s...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Livrer tôt, livrer souvent
http://paulhammant.com/2013/03/13/fac...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Continuous Delivery
1. Build rapide
2. Build robuste
3. Déploiem...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Git / Git Flow / Github Flow
Git: Un puissant modèle de branches...
Livrer plus souvent
Retour d’expérience
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Organisation en SCRUM classique :
• Sprints d’un mois, Planificat...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2012 : Livraison Mensuelle
Planifier / estimer / coder / tester /...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
• Objectif 2013: livrer plus souvent (hebdo)
• Améliorations:
• ...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2013 : Livraison Hebdo
Planifier / estimer / coder / tester
livre...
@beastiefurets@dbaeli
branch (prod)
trunk trunk
3 - 4 semaines 1 - 4 jours5 jours
Release
Code Freeze
branch
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 jours
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 j...
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 j...
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 j...
@beastiefurets@dbaeli
Storie 1
branch (prod)
trunk trunk
Storie 2
Release
Code Freeze
branch
3 - 4 semaines 1 - 4 jours5 j...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
• Objectif 2014: Livraison journalière
• Améliorations:
• Prépar...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
2014: Livraison Quotidienne
Livrer ce qui est prêt demain … tous...
@beastiefurets@dbaeli
ticket3
features releaseslocal
ticket3
master
ticket3
master
Le temps de commiter 1 jour à 1 mois 1 ...
@beastiefurets@dbaeli
ticket1
ticket3
ticket4
features releaseslocal
ticket3
master
ticket3
ticket1
master
Le temps de com...
@beastiefurets@dbaeli
octopus-features
ticket1
ticket3
ticket4
features releaseslocal
ticket3
master
ticket3
ticket1
maste...
@beastiefurets@dbaeli
ticket1
ticket2
ticket3
ticket4
ticket5
features releaseslocal
ticket3
master
ticket3
ticket1
master...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Time To Market
• 2012 :
➡ Début dev à la MEP : Temps dev + 2 sem...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Vue du métier : 2012
• Mindset “Itération” :
➡ Focalisé sur la d...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Vue du métier : 2014+
• Mindset “Quand c’est prêt” :
➡ Petit = v...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Objectif 2016 - Par feature
Livrer ce qui est prêt aujourd’hui …...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
0"
20"
40"
60"
80"
100"
120"
140"
160"
10" 20" 30" 40" 50" 60" 7...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Livraison Continue – Jours / Heures
Retour d’expérience
Mise en oeuvre
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Améliorer par la fin
5. Monitoring & Exploitation
4. Mise En Pro...
1. Conception
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Flux de fonctionnalités
• #1 Fonctionnalités conçues pour être i...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Organisation
Prioritisation
Resource Allocation
Team Team Team
S...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Flow from Portfolio
2. Développement
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Environnement Dev
• Chaque fonctionnalité sur une branche featur...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Intégration Continue
Feature Branching + Intégration Continue
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Intégration Continue
L’intégration continue effectue à chaque co...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Continuous Merge Octopus
• Outil Open Source de merge en continu...
@beastiefurets@dbaeli
ticket1
ticket2
ticket3
ticket4
ticket5
features releaseslocal
ticket3
master
ticket3
ticket1
master...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Environnement Staging
• Quasi iso environnement de Production
• ...
3. Release Création &
Validation
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Création Release Branche
Création entièrement automatisée :
• Re...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Validation Release Branche
Validation à l’aide d’outils manuels ...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Grid Selenium on LXC
• 200 Tests Selenium : 6 heures
• Grid Sele...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Zeno Pixel
• Outil Open Source de comparaison d’images (perceptu...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Zeno Pixel
• Screenshots automatiques des pages du site
• Cross-...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Zeno Pixel
4. Mise En Production
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Mise En Production
• Réalisée de A à Z par un seul développeur
•...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Infrastructure As Code
Toutes les modifications de configuration s...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Déploiement
Tout le déploiement est fait avec 0 downtime en util...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Git Flow Résumé
5. Monitoring & Exploitation
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Monitoring technique
Sondes Datadog - Indicateurs techniques
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Monitoring fonctionnel
Sondes Zabbix - Indicateurs fonctionnels
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Alertes & Logs
Chaque logs/traces d'erreurs arrivent par mail
de...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Post Mortem
• Work in progress
• Post Mortem sur chaque incident...
Théorie v2
Retour d’expérience
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Kanban Games
•GetKanban !
Découverte des principes Kanban
Contex...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
LIVRES
• KANBAN by D.Anderson
• PRODUCT DEVELOPMENT FLOW by Don ...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Kanban : Evolutionary Change
•Visualisation du travail
•Limiter ...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Product Development Flow
•Travailler en flux
•Gérer les files d’at...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
The Phoenix project
•How to avoid experts as SPOF
•DevOps as Bus...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
How Google Test Software
•Quality Engineering vs Quality Assuran...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
How to measure anything
•D’abord identifier la décision à prendre...
@YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Lean Enterprise
•Orient
•Alternative to Command and Control
•Ent...
79
LesFurets.com LeanKanban.fr29, 30 Novembre 2016
www.leankanban.fr
@dbaeli
@beastiefurets
MERCI !
Nächste SlideShare
Wird geladen in …5
×

Livrer chaque jour ce qui est prêt chez LesFurets.com v3.1 - Ippon 201606

847 Aufrufe

Veröffentlicht am

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, ...
Organisation du travail, principes directeurs et pistes à suivre.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Livrer chaque jour ce qui est prêt chez LesFurets.com v3.1 - Ippon 201606

  1. 1. Livrer chaque jour ce qui est prêt
 Continuous Delivery & Continuous Merge
  2. 2. Le contexte LesFurets.com
  3. 3. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  4. 4. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Application • 6 formulaires complexes • 50+ partenaires interrogés en temps réel • Java (tomcat) & GWT (client) • 400k LOC / 40k tests unitaires / 200 tests Selenium • Livraison Quotidienne • 23 Developers • 6 Tech Leads, 1 Architecte • 2 Ops • 1 Manager @beatiefurets github.com/lesfurets
  5. 5. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Continuous Delivery ? Livrés en 4 mois par container ! Record à battre :-)
  6. 6. Etre développeur Cycle de maturation
  7. 7. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 1995-1998 Etudiant (ENSIMAG) ▪Code jamais utilisé en production ▪Livraison: A la rache ▪Code ▪écrit: 1000 lignes/mois ▪net: +1000 lignes/mois ▪Tests: 3h/mois ▪3 lignes / secondes PRIME A LA FONCTIONALITE
  8. 8. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 1998-2006 Codeur (Edition logicielle) ▪Livraison: Mensuelle-Annuelle (recette) ▪ Code ▪ écris 600 lignes/mois ▪ ajouté (net): +500 lignes/mois ▪utilisé 6-12 mois après finition ▪ Tests ▪ 40h (1/4 du temps) ▪ 4min / ligne PRIME A LA QUALITE
  9. 9. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 2006-2011 Développement Agile ▪ Livraison: 15-30 jours (démo global) ▪ Code: ▪ Ecris: 400 lignes/mois ▪ Ajouté (net): +200 lignes/mois ▪ Utilisé 1-2 semaines après finition ▪ Tests: ▪ 40h (5min / ligne) PRIME A LA LIVRAISON
  10. 10. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 2011 Lean & Continuous Delivery ▪ Livraison: J+1 (démo unitaire) ▪Code ▪Ecrit 400 lignes/mois ▪Ajouté (net) +0 lignes/mois (refactoring) ▪ Utilisé 1-2 jours après finition ▪Test ▪40h (5min / ligne) PRIME A LA VALEUR PRODUITE
  11. 11. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 2016 Manager D’une équipe de 25 développeurs • 12.500 lignes par mois (risque en maintenance) • Mes Objectifs: • Rester sous les 1% d’inflation (du code) • Livrer quand c’est prêt • Ne travailler que sur le plus utile (priorisation) • Garder des développeurs impliqués
  12. 12. Continuous Delivery La Théorie
  13. 13. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Livrer tôt, livrer souvent http://paulhammant.com/2013/03/13/facebook-tbd-take-2/
  15. 15. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Git / Git Flow / Github Flow Git: Un puissant modèle de branches http://nvie.com/posts/a-successful-git-branching-model/ Master Branch Pull Request Github
  17. 17. Livrer plus souvent Retour d’expérience
  18. 18. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Organisation en SCRUM classique : • Sprints d’un mois, Planification au mois, Recette 1 semaine • Build : 15 minutes • 200 Seleniums : 1 heure • Blocages : Build + Selenium + Recette 2012 : Livraison Mensuelle
  19. 19. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 2012 : Livraison Mensuelle Planifier / estimer / coder / tester / livrer de mensuellement Sprints 12 releases en 2012
  20. 20. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli • Objectif 2013: livrer plus souvent (hebdo) • Améliorations: • Identification de fonctionnalité livrable en avance (cherry pick) • Build : 3 minutes (contre 15 minutes) • Blocages: • Selenium + Recette • Organisation du code (trunk based dev) • Cherry Pick sur branche de release 2013 : Livraison Hebdo
  21. 21. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 2013 : Livraison Hebdo Planifier / estimer / coder / tester livrer chaque semaine Sprints 1 mois + Livraison hebdo
  22. 22. @beastiefurets@dbaeli branch (prod) trunk trunk 3 - 4 semaines 1 - 4 jours5 jours Release Code Freeze branch
  23. 23. @beastiefurets@dbaeli Storie 1 branch (prod) trunk trunk Release Code Freeze branch 3 - 4 semaines 1 - 4 jours5 jours
  24. 24. @beastiefurets@dbaeli Storie 1 branch (prod) trunk trunk Storie 2 Release Code Freeze branch 3 - 4 semaines 1 - 4 jours5 jours
  25. 25. @beastiefurets@dbaeli Storie 1 branch (prod) trunk trunk Storie 2 Release Code Freeze branch 3 - 4 semaines 1 - 4 jours5 jours Merge à risque
  26. 26. @beastiefurets@dbaeli Storie 1 branch (prod) trunk trunk Storie 2 Release Code Freeze branch 3 - 4 semaines 1 - 4 jours5 jours
  27. 27. @beastiefurets@dbaeli Storie 1 branch (prod) trunk trunk Storie 2 Release Code Freeze branch 3 - 4 semaines 1 - 4 jours5 jours 1 semaine Storie 3
  28. 28. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli • Objectif 2014: Livraison journalière • Améliorations: • Préparation branche release auto, pas de dev non terminé en release • Selenium : 10 minutes + Zeno (regressions graphiques) • Blocages: • Temps de release (2-3h par 1 dev) • Risque par release (15jh de travail par release) 2014: Livraison Quotidienne
  29. 29. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 2014: Livraison Quotidienne Livrer ce qui est prêt demain … tous les jours ! Marathon 208 releases en 2014 (déjà 150 en 2015)
  30. 30. @beastiefurets@dbaeli ticket3 features releaseslocal ticket3 master ticket3 master Le temps de commiter 1 jour à 1 mois 1 - 2 jours pull requests 0 - 2 jours release
  31. 31. @beastiefurets@dbaeli ticket1 ticket3 ticket4 features releaseslocal ticket3 master ticket3 ticket1 master Le temps de commiter 1 jour à 1 mois 1 - 2 jours pull requests 0 - 2 jours release
  32. 32. @beastiefurets@dbaeli octopus-features ticket1 ticket3 ticket4 features releaseslocal ticket3 master ticket3 ticket1 master Le temps de commiter 1 jour à 1 mois 1 - 2 jours pull requests 0 - 2 jours release
  33. 33. @beastiefurets@dbaeli ticket1 ticket2 ticket3 ticket4 ticket5 features releaseslocal ticket3 master ticket3 ticket1 master octopus-features octopus-releases Le temps de commiter 1 jour à 1 mois 1 - 2 jours pull requests 0 - 2 jours release
  34. 34. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Time To Market • 2012 : ➡ Début dev à la MEP : Temps dev + 2 semaines ➡ Non satisfaisant pour le business • 2014 : ➡ Début dev à la MEP : Temps dev + 2 jours ➡ Quand c’est prêt
  35. 35. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Vue du métier : 2012 • Mindset “Itération” : ➡ Focalisé sur la date de livraison de l’ensemble ➡ Tendance naturelle à charger • Mauvaises Surprises : ➡ Pas dans la release = Au min 1 itération d’attente ➡ Demande de livraisons séparées (pour voir l’impact !) ➡ MVP devient naturel pour décider des gros projets
  36. 36. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Vue du métier : 2014+ • Mindset “Quand c’est prêt” : ➡ Petit = vite ➡ Tendance naturelle à alléger • Bonnes Surprises : ➡ Demande de livraisons séparées (pour voir l’impact !) ➡ MVP devient naturel pour décider des gros projets ➡ Pas dans la release = au min +1 jour
  37. 37. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Objectif 2016 - Par feature Livrer ce qui est prêt aujourd’hui … tous les jours ! Marathon 250+ releases en 2015 (déjà 150+ en 2016)
  38. 38. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 0" 20" 40" 60" 80" 100" 120" 140" 160" 10" 20" 30" 40" 50" 60" 70" 80" 90" 100" 250" 500" 1000" 5000" 5000" Histogramme"du"nombre"de"modifica<on"des"releases" Modifications par Releases Par Release • 5 - 6 Tickets • >150 lignes • Avec des exceptions Objectif: • Eviter les commits de >100 lignes
  39. 39. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Livraison Continue – Jours / Heures
  40. 40. Retour d’expérience Mise en oeuvre
  41. 41. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Améliorer par la fin 5. Monitoring & Exploitation 4. Mise En Production 3. Release Création &Validation 2. Développement 1. Conception
  42. 42. 1. Conception
  43. 43. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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.
  44. 44. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Organisation Prioritisation Resource Allocation Team Team Team Strategic program initiatives 5% RUN 35% BAU / QUAL 60% BUILD
  45. 45. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Flow from Portfolio
  46. 46. 2. Développement
  47. 47. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  48. 48. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Intégration Continue Feature Branching + Intégration Continue
  49. 49. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  50. 50. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Continuous Merge Octopus • Outil Open Source de merge en continu • Développé en interne chez LesFurets.com : ➡ https://github.com/lesfurets/git-octopus • Il existe une conférence dédiée par Arnaud Pflieger
  51. 51. @beastiefurets@dbaeli ticket1 ticket2 ticket3 ticket4 ticket5 features releaseslocal ticket3 master ticket3 ticket1 master octopus-features octopus-releases Le temps de commiter 1 jour à 1 mois 1 - 2 jours pull requests 0 - 2 jours release
  52. 52. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Environnement Staging • 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
  53. 53. 3. Release Création & Validation
  54. 54. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  55. 55. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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)
  56. 56. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  57. 57. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Zeno Pixel • Outil Open Source de comparaison d’images (perceptual diff) • Développé en interne chez LesFurets.com : ➡ https://github.com/lesfurets/zeno-pixel • Il existe une conférence dédiée par Matthieu Fourtina
  58. 58. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  59. 59. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Zeno Pixel
  60. 60. 4. Mise En Production
  61. 61. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  62. 62. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Infrastructure As Code Toutes les modifications de configuration sont historisées Les bugs de configuration sont des bugs de code
  63. 63. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Déploiement Tout le déploiement est fait avec 0 downtime en utilisant un système Blue / Green
  64. 64. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Git Flow Résumé
  65. 65. 5. Monitoring & Exploitation
  66. 66. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Monitoring technique Sondes Datadog - Indicateurs techniques
  67. 67. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Monitoring fonctionnel Sondes Zabbix - Indicateurs fonctionnels
  68. 68. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  69. 69. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  70. 70. Théorie v2 Retour d’expérience
  71. 71. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Kanban Games •GetKanban ! Découverte des principes Kanban Contexte : équipe de développement • KanbanZine ! Découverte des principes Kanban Contexte : fabrication d’un magazine
  72. 72. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli LIVRES • KANBAN by D.Anderson • PRODUCT DEVELOPMENT FLOW by Don Reinertsen • LEAN ENTERPRISE by Humble,Molesky,O'Reilly • KANBAN POUR L’IT by L.Morisseau • PREMIER KANBAN by J.Boeg • THIS IS LEAN by N.Modig, P.Ahlstrom • SLACK by Tom DeMarco • KANBAN FROM THE INSIDE by M.Burrows
  73. 73. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Kanban : Evolutionary Change •Visualisation du travail •Limiter le travail en cours (WIP) •Règles explicites •Amélioration continue •Leadership
  74. 74. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli 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
  75. 75. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli The Phoenix project •How to avoid experts as SPOF •DevOps as Business enabler •Small and motivated teams •Resilience !
  76. 76. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli How Google Test Software •Quality Engineering vs Quality Assurance •Création d’outils de test pour les devs •Les devs font la QA eux même
  77. 77. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli How to measure anything •D’abord identifier la décision à prendre •Identifier l’information manquante •Mesurer uniquement cette information •Beaucoup plus simple qu’on pense
  78. 78. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli Lean Enterprise •Orient •Alternative to Command and Control •Enterprise Portfolio •Explore Uncertainty •Discover opportunities •Exploit •Continuous Delivery, Cost of Delay •Transform •Embrace Lean Thinking, Rethinking the IT Mindset
  79. 79. 79 LesFurets.com LeanKanban.fr29, 30 Novembre 2016 www.leankanban.fr
  80. 80. @dbaeli @beastiefurets MERCI !

×