Save 37% off PRO during our Black Friday Sale! »

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.

5332798c9b1a0dd2e3f82820897177e9?s=128

kennydee

June 20, 2014
Tweet

Transcript

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

    2014
  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)
  3. Au début : Cyréalis (2006) 3 développeurs

  4. None
  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
  6. Stack Php 4 Mysql 5.0 MyIsam Procédural FTW Couplage monstrueux

    Framework maison Pas de SCM !
  7. Pas de SCM ! FTP sur le Master

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

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

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

    de développement
  11. La « dév » ssh <login>@dev /home/<login>/<projet>/ = http://<login>.dev.<projet>.fr Très

    proche de la production Même configuration pour chaque développeur
  12. Rachat de Cyréalis par M6Web (2009) env. 15 développeurs

  13. Fusion entre Neuilly / Lyon Le choc des cultures

  14. Migration Php 5 PHP 4 => PHP 5.2 Procédural =>

    POO Canada Dry E_ALL http://tech.m6web.fr/la-poo- canada-dry/
  15. None
  16. –M. Randy « Commençons par comprendre pourquoi le code fonctionne

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

  18. Nouvelle Organisation Par équipe Vidéo Portails thématiques et sites de

    chaînes Shopper
  19. None
  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…
  21. Rassembler les équipes et pratiques Lancement d’un audit

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

  23. None
  24. - Un dev - « De toute facon, y’a pas

    de conséquence : au pire, on meurt. »
  25. L’audit Le nez dans votre caca

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

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

  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
  29. Le nouveau socle est né Symfony 2 / Php 5.4

    / Mysql InnoDb Code Review Git / Gitlab Scrum POO Tests Monitoring
  30. Remise en question Personnel Des équipes en général

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

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

  33. Git init Passage à Git + Gitlab

  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
  35. Changement de Culture

  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
  37. La culture de l’OpenSource

  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é »
  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/
  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/
  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 …
  42. Les conférences externes Réseautage Prendre du recul sur son quotidien

    Apprendre un maximum Etre conforté dans ses choix
  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
  44. Last Friday Talk Les karaokés Slideshow ! Plus d’infos :

    http:// tech.m6web.fr/organiser-des- conferences-technique-en- interne/
  45. Le blog technique http://tech.m6web.fr Force les personnes à écrire Documentation

    Feedback
  46. Méthodologie Mise en place de Scrum

  47. Les outils Jenkins (Intégration continue) HipChat + Fubot (Centre de

    notifications) ScrumWise Github Enterprise \o/
  48. Le monitoring applicatif Graphite StatsD https://speakerdeck.com/ kennydee/monitoring-applicatif- pourquoi-et-comment

  49. Les tests Atoum Behat CasperJs + VigoJs

  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/
  51. - Un dev - « Quelqu’un peut me mettre un

    pouce ? »
  52. Conclusion

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

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