Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nouveau socle pour une nouvelle vie, chez M6Web

Nouveau socle pour une nouvelle vie, chez M6Web

De 2006 à aujourd’hui, d’une start-up avec 3 développeurs à une direction technique de plusieurs dizaines de développeurs, retour d’expérience sur les étapes qui nous ont amenés à industrialiser nos développements Php, nos outils et notre culture.

kennydee

June 20, 2014
Tweet

More Decks by kennydee

Other Decks in Programming

Transcript

  1. Nouveau socle
    pour une nouvelle vie,
    chez
    Php Tour Lyon 2014

    View Slide

  2. about.me
    Kenny DITS
    @kenny_dee
    Responsable Etude & Developpement chez M6Web
    Sites de chaînes (m6.fr, w9.fr, …)
    Connect
    Portails thématiques (clubic.com, jeuxvideo.fr, turbo.fr, deco.fr)

    View Slide

  3. Au début : Cyréalis (2006)
    3 développeurs

    View Slide

  4. View Slide

  5. –Moi / F.Jomier
    - On purge le cache infini tous les jours !
    - Non, c'est le cache 7 jours qu'on purge tous les jours

    View Slide

  6. Stack
    Php 4
    Mysql 5.0 MyIsam
    Procédural FTW
    Couplage monstrueux
    Framework maison
    Pas de SCM !

    View Slide

  7. Pas de SCM !
    FTP sur le Master

    View Slide

  8. –Moi
    « Est ce qu’il y’a quelqu’un dans le include.h.php ?»

    View Slide

  9. Ensuite : Cyréalis (2008)
    6-7 développeurs

    View Slide

  10. Plateforme de développement
    Mise en place de SVN \o/
    Plateforme de développement

    View Slide

  11. La « dév »
    ssh @dev
    /home/// = http://.dev..fr
    Très proche de la production
    Même configuration pour chaque développeur

    View Slide

  12. Rachat de Cyréalis par M6Web (2009)
    env. 15 développeurs

    View Slide

  13. Fusion entre Neuilly / Lyon
    Le choc des cultures

    View Slide

  14. Migration Php 5
    PHP 4 => PHP 5.2
    Procédural => POO Canada Dry
    E_ALL
    http://tech.m6web.fr/la-poo-
    canada-dry/

    View Slide

  15. View Slide

  16. –M. Randy
    « Commençons par comprendre pourquoi le code fonctionne »

    View Slide

  17. -Un dév plus chez nous (enfin je l’espère …)

    View Slide

  18. Nouvelle Organisation
    Par équipe
    Vidéo
    Portails thématiques et sites de
    chaînes
    Shopper

    View Slide

  19. View Slide

  20. – D. Roussel / M. Brunot
    - Je veux faire du code qui marche et qui sert à quelque chose !
    - C’est soit l'un, soit l'autre, mec…

    View Slide

  21. Rassembler les équipes et pratiques
    Lancement d’un audit

    View Slide

  22. L’audit (2012)
    env. 30 développeurs

    View Slide

  23. View Slide

  24. - Un dev
    - « De toute facon, y’a pas de conséquence : au pire, on meurt. »

    View Slide

  25. L’audit
    Le nez dans votre caca

    View Slide

  26. -Moi
    Savoir se faire aider
    Accepter d’être aidé

    View Slide

  27. Les ateliers
    6 mois de partage, d’échange et
    de confrontation …

    View Slide

  28. Les ateliers
    Utilisation d’un framework ou pas
    Passage à UTF-8 ou conservation ISO-8859-1
    Passage à GIT
    Symfony 2
    Jenkins
    Stratégie de cache
    Intégration de WS dans l’architecture globale
    Passage à Php 5.3 ou PHP 5.4
    Feature Flipping
    Une base de données par
    environnement
    Utilisation d’un ORM ou pas
    Librairies internes
    Exemple de mauvaises pratiques

    View Slide

  29. Le nouveau socle est né
    Symfony 2 / Php 5.4 / Mysql InnoDb
    Code Review
    Git / Gitlab
    Scrum
    POO
    Tests
    Monitoring

    View Slide

  30. Remise en question
    Personnel
    Des équipes en général

    View Slide

  31. Ensemble
    Vraie convergence entre
    développeurs
    Y’a plus qu’à !

    View Slide

  32. L’après audit (2013)
    env. 40 développeurs

    View Slide

  33. Git init
    Passage à Git
    + Gitlab

    View Slide

  34. Le nouveau socle : Comment ?
    Impossible de tout jeter
    Arriver a faire cohabiter du legacy
    et du « nouveau socle »
    Découpage en un maximum de
    petites briques

    View Slide

  35. Changement de
    Culture

    View Slide

  36. Culture
    Pousser tout le monde à faire de la veille technique
    Faire en sorte que les dévs soient fiers de leur travail
    Rendre intéressants techniquement des projets fonctionnellement pénibles
    Supprimer les « silos »
    S’ouvrir

    View Slide

  37. La culture de
    l’OpenSource

    View Slide

  38. L’open Source
    Sensibilisation à l’Open Source
    https://github.com/M6Web/
    Trouver des petits projets ou side-
    projects à Open-Sourcer
    Force a écrire du code « propre »
    et « testé »

    View Slide

  39. Les projets open Source
    Projects
    Coke is a Shell/Bash command using PHP Code
    Sniffer allowing rules management per project
    JenkinsLight is a build monitoring tool (buildwall)
    that allows you to quickly detect failing projects
    for Jenkins
    VigoJS is a (small) Javascript tool using
    CasperJS and PhantomJS to make easily
    functional tests on web applications
    HttpToStatsd is a node.js http to statsd logger
    And many more : http://tech.m6web.fr/oss/

    View Slide

  40. Les bundles & libs Open Source
    Bundle and libs
    StatsdBundle : Symfony2 Bundle easing the statsd
    usage
    Firewall and FireWallBundle : Symfony2 bundle
    providing IP filtering features
    Redis : PHP component used to access Redis throught
    predis, and RedisMock : A simple PHP Redis mock
    websocket-bench : Nodejs cli tool for benchmark web
    socket server, currently support (socket.io, faye)
    HttpKernelBundle : Custom sf2 HttpKernel with
    additional events
    And many more : http://tech.m6web.fr/oss/

    View Slide

  41. Babitch
    Enregistrez vos scores de babyfoot et
    comparez vos statistiques #kikimeter
    https://github.com/M6Web/Babitch et
    https://github.com/M6Web/BabitchClient
    API Symfony2 RESTFul
    Front AngularJS
    Yeoman, D3.JS, Protractor, Bower, Grunt

    View Slide

  42. Les conférences externes
    Réseautage
    Prendre du recul sur son
    quotidien
    Apprendre un maximum
    Etre conforté dans ses choix

    View Slide

  43. Last Friday Talk
    Les conférences internes
    Pour l’orateur
    Communiquer, creuser les
    sujets, devenir référent
    Pour le public
    Veille techno, Idées,
    Compétence

    View Slide

  44. Last Friday Talk
    Les karaokés Slideshow !
    Plus d’infos : http://
    tech.m6web.fr/organiser-des-
    conferences-technique-en-
    interne/

    View Slide

  45. Le blog technique
    http://tech.m6web.fr
    Force les personnes à écrire
    Documentation
    Feedback

    View Slide

  46. Méthodologie
    Mise en place de Scrum

    View Slide

  47. Les outils
    Jenkins (Intégration continue)
    HipChat + Fubot (Centre de
    notifications)
    ScrumWise
    Github Enterprise \o/

    View Slide

  48. Le monitoring applicatif
    Graphite
    StatsD
    https://speakerdeck.com/
    kennydee/monitoring-applicatif-
    pourquoi-et-comment

    View Slide

  49. Les tests
    Atoum
    Behat
    CasperJs + VigoJs

    View Slide

  50. La Code Review
    Utilisation maximum des Pull
    Requests de Github
    Augmentation de la qualité du code
    Et de la couverture de tests
    Humilité des développeurs
    http://tech.m6web.fr/lache-moi-la-
    branch/

    View Slide

  51. - Un dev
    - « Quelqu’un peut me mettre un pouce ? »

    View Slide

  52. Conclusion

    View Slide

  53. Aujourd’hui :
    Grosse majorité des développements réalisés « nouveau socle ».
    L’ « ancien socle » existe et existera encore longtemps.
    Qualité du code en très forte progression.
    Cloudification progressive de nos briques (2nd écran).
    Feedback des équipes très positif.

    View Slide

  54. A améliorer :
    Integration continue avec Docker.
    Test fonctionnels multi browser.
    + de partage (OpenSource / Vidéos / Articles …).
    Alerting.
    Plateforme de logs applicatifs (Kibana/Elastic Search)
    Le mélange « ancien / nouveau » socle, rend « l’ancien » très dur à maintenir.

    View Slide

  55. A retenir ?
    N’hésitez à vous faire aider.
    Ouvrez vous, partagez, regardez ce que font les autres.
    Travaillez la « culture » et la veille.
    L’industrialisation, la qualité, les bons outils, rendent votre travail plus
    agréable.
    Le code que vous faites aujourd’hui, est le merdier que vous aurez à gérer
    demain.

    View Slide

  56. On recrute !
    http://tech.m6web.fr/m6web-lyon-recherche-un-lead-developpeur-architecte-web-h-f-en-cdi/
    !
    http://www.groupem6.fr/ressources-humaines/offres-emploi/

    View Slide

  57. Questions ?
    @kenny_dee
    @techM6Web => http://tech.m6web.fr
    Slides => https://speakerdeck.com/kennydee

    View Slide