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.
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
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.
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
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. @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
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
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. @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