O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Symphonie pour PHP industrialisé en agilité majeure

  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

Symphonie pour PHP industrialisé en agilité majeure

  1. 1. Symphonie pour PHP industrialisé en agilité majeure Agile Grenoble 2011 - #agilegrenoble
  2. 2. PHP n’est pas que le “langage pour les nuls” PHP peut être aussi agile que d’autres A retenir en partant … Un projet PHP from scratch peut être clean En 4 étapes, on “refactore” un projet PHP legacy
  3. 3. Marc Nazarian Bernard Huguet Jonathan Bonzy Acteurs
  4. 4. Best of Media 40 millions de visiteurs uniques par mois Tom’s Hardware | Tom’s Guide | Tom’s Games News, Forum et Tech support 3 ème éditeur mondial de news High Tech 200 millions de pages vues par mois
  5. 5. Tom’s Labs Articles sur la R&D chez Best of Media http://www.tomslabs.com Machine learning, agilité, … ;)
  6. 6. Tests, BDD, TDD ? Public Projet Web ? Développeur, Product Owner, Scrummaster ? PHP ou Java ?
  7. 7. Au programme Boilerplate PHP Un projet from scratch Un projet legacy Comment planter le décor de mon projet ? A quoi ressemble un projet neuf ? Comment reprendre la main sur le legacy ?
  8. 8. Acte 1 : un boilerplate Le product owner Le développeur quick win Le développeur clean code
  9. 9. Le langage Quick and dirty avec PHP Projet Web Front Industriel 80% PHP / 10% Asp.net / 5% Java / … PHP : Facebook, Yahoo, Kelkoo, Best of Media …  Choix pour le boilerplate : PHP
  10. 10. L’IDE Netbeans ou Eclipse ? Bloc note ou Vi ?  Choix pour le boilerplate : Netbeans Netbeans intègre le mieux la syntaxe PHP
  11. 11. Le framework index.php … faut coder, faut coder !  Choix pour le boilerplate : Symfony 1.4 Ne pas réinventer la roue … framework Créer notre propre framework ? Choisir un framework populaire
  12. 12. Le gestionnaire de sources  Choix pour le boilerplate : Git Avancer en parallèle Messagerie et Zip des fichiers le soir Git ou SVN ? Git : branch, local, bisect, …
  13. 13. Les tests  Choix boilerplate : PHPUnit, Behat & Selenium Développeur sénior => pas de bug ! PHPUnit : standard pour les tests unitaires PHP Behat : test fonctionnel PHP Selenium : test d’intégration / sanity Test Driven Development
  14. 14. Intégration & déploiement continus  Choix pour le boilerplate : Jenkins Jouer les tests au cas par cas à la main Automatiser la construction du projet Automatiser le déploiement de l’application Automatiser l’exécution de la suite de tests
  15. 15. Bilan du boilerplate PHP PHP : langage Web Symfony 1.4 : framework populaire Git : gestionnaire de sources fléxible Netbeans : IDE intégrant la syntaxe PHP PHPUnit & Behat : TDD & BDD PHP Jenkins : intégration & déploiement
  16. 16. Acte 2 : un nouveau projet Le product owner Le développeur clean code Le développeur clean code aussi ;)
  17. 17. Bootstrap du projet Déploiement automatique d’une coquille vide Je veux un forum Construire le forum de manière itérative Objectif : on livre en prod un squelette Je n’aurai pas de valeur produit ?
  18. 18. 15 jours s’écoulent …
  19. 19. Menu démo du sprint 1 Passer l’application sous Git Dummy test unitaire en PHPUnit Créer un squelette d’application Premier test fonctionnel en Behat Packager en Maven Job dans Jenkins
  20. 20. Initier le framework + Git Télécharger Symfony 1.4 Configurer ses hosts Apache Raccourci : passage par Github Checklist des tâches :
  21. 21. Exécuter des tests unitaires Installer PHPUnit (via PEAR) Ecrire un test simple Vérifier que ça marche Checklist des tâches :
  22. 22. Exécuter des tests fonctionnels Installer Behat (via PEAR) Contrôler sa pyramide des tests Checklist des tâches : Scenario simple  Ecrire les steps suggérés Implémenter le code et scenario à vert
  23. 23. La pyramide des tests http://www.tomslabs.com/index.php/2011/04/test-automation-strategy/ Maintenance des tests et temps d’exécution
  24. 24. Packager l’application Installer Maven2 Ecrire un pom.xml Lancer un mvn clean test  VERT Checklist des tâches : Packager ça veut dire quoi ?
  25. 25. Créer un job Jenkins Créer un job dans jenkins Déployer le build lors d’un succès Checklist des tâches : Lancer périodiquement le build
  26. 26. Deployment Pipeline http://www.tomslabs.com/index.php/2011/06/development-to-production-pipeline/
  27. 27. Bilan du squelette PHP en prod “ Défoncer” les portes pour aller en prod 48 déploiements par jour ou plus ;) Surveillance de la pyramide des tests Itération sur une coquille vide
  28. 28. Quelques mois plus tard …
  29. 29. Acte 3 : reprendre un projet Le product owner Le développeur clean code - maverick Le développeur clean code - iceman
  30. 30. Contexte du projet Quelle stratégie adopter ? Forum avec des millions de topics Zéro bug autorisé Changer l’ancienne gestion des catégories 20 commiters
  31. 31. Test harness strategy 01 – Ecrire des scenarii 03 – Encapsuler dans une API 04 – Migrer l’API 02 – Implémenter les scenarii
  32. 32. Story board des mois passés …
  33. 33. 01 – Harnais de sécurité
  34. 34. 02 – Implémenter scenarii
  35. 35. 03 – Encapsuler dans une API
  36. 36. 04 – Migrer l’API
  37. 37. Bilan du code PHP legacy Pas d’obligation de tout jeter Surveillance des bugs avec les scenarii du harnais 4 étapes pour aborder sereinement le refactoring
  38. 38. Bilan de cette symphonie …
  39. 39. Ce qu’on a vu : Boilerplate PHP Un projet from scratch Un projet legacy Démarrez demain avec une stack PHP industrielle Mettre en place le déploiement d’un squelette Stratégie en 4 étapes avec un harnais de sécurité
  40. 40. Fin & Questions Jonathan Bonzy @jonathanbonzy Bernard Huguet @bernardhuguet Marc Nazarian @marcnazarian

×