Symphonie pour PHP industrialisé en agilité majeure Agile Grenoble 2011 - #agilegrenoble
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 ...
Marc Nazarian Bernard Huguet Jonathan Bonzy Acteurs
Best of Media 40 millions de visiteurs uniques par mois Tom’s Hardware | Tom’s Guide | Tom’s Games News, Forum et Tech sup...
Tom’s Labs Articles sur la R&D chez Best of Media http://www.tomslabs.com Machine learning, agilité, … ;)
Tests, BDD, TDD ? Public Projet Web ? Développeur, Product Owner, Scrummaster ? PHP ou Java ?
Au programme Boilerplate PHP Un projet from scratch Un projet legacy Comment planter le décor de mon projet ? A quoi resse...
Acte 1 : un boilerplate Le product owner Le développeur quick win Le développeur clean code
Le langage Quick and dirty avec PHP Projet Web Front Industriel 80% PHP / 10% Asp.net / 5% Java / … PHP : Facebook, Yahoo,...
L’IDE Netbeans ou Eclipse ? Bloc note ou Vi ?    Choix pour le boilerplate :  Netbeans Netbeans intègre le mieux la synta...
Le framework index.php … faut coder, faut coder !    Choix pour le boilerplate :  Symfony 1.4 Ne pas réinventer la roue  ...
Le gestionnaire de sources    Choix pour le boilerplate :  Git Avancer en parallèle Messagerie et Zip des fichiers le soi...
Les tests    Choix boilerplate :  PHPUnit, Behat & Selenium Développeur sénior => pas de bug ! PHPUnit : standard pour le...
Intégration & déploiement continus    Choix pour le boilerplate :  Jenkins Jouer les tests au cas par cas à la main Autom...
Bilan du boilerplate PHP PHP : langage Web Symfony 1.4 : framework populaire Git :  gestionnaire de sources fléxible Netbe...
Acte 2 : un nouveau projet Le product owner Le développeur clean code Le développeur clean code aussi ;)
Bootstrap du projet Déploiement automatique d’une coquille vide Je veux un forum  Construire le forum de manière itérative...
15 jours s’écoulent …
Menu démo du sprint 1 Passer l’application sous Git Dummy test unitaire en PHPUnit Créer un squelette d’application Premie...
Initier le framework + Git Télécharger Symfony 1.4  Configurer ses hosts Apache Raccourci : passage par Github Checklist d...
Exécuter des tests unitaires Installer PHPUnit (via PEAR) Ecrire un test simple Vérifier que ça marche Checklist des tâche...
Exécuter des tests fonctionnels Installer Behat (via PEAR) Contrôler sa pyramide des tests Checklist des tâches :  Scenari...
La pyramide des tests http://www.tomslabs.com/index.php/2011/04/test-automation-strategy/ Maintenance des tests et temps d...
Packager l’application Installer Maven2 Ecrire un pom.xml Lancer un mvn clean test    VERT Checklist des tâches :  Packag...
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ériodiqu...
Deployment Pipeline http://www.tomslabs.com/index.php/2011/06/development-to-production-pipeline/
Bilan du squelette PHP en prod “ Défoncer” les portes pour aller en prod 48 déploiements par jour ou plus ;)  Surveillance...
Quelques mois plus tard …
Acte 3 : reprendre un projet Le product owner Le développeur clean code - maverick Le développeur clean code - iceman
Contexte du projet Quelle stratégie adopter ? Forum avec des millions de topics Zéro bug autorisé  Changer l’ancienne gest...
Test harness strategy 01 – Ecrire des scenarii 03 – Encapsuler dans une API  04  –  Migrer l’API  02 – Implémenter les sce...
Story board des mois passés …
01 – Harnais de sécurité
02 – Implémenter scenarii
03 – Encapsuler dans une API
04 – Migrer l’API
Bilan du code PHP legacy Pas d’obligation de tout jeter Surveillance des bugs avec les scenarii du harnais 4 étapes pour a...
Bilan de cette symphonie …
Ce qu’on a vu : Boilerplate PHP Un projet from scratch Un projet legacy Démarrez demain avec une stack PHP industrielle Me...
Fin & Questions Jonathan Bonzy  @jonathanbonzy Bernard Huguet  @bernardhuguet Marc Nazarian  @marcnazarian
Upcoming SlideShare
Loading in...5
×

Symphonie pour PHP industrialisé en agilité majeure

3,966

Published on

Présentation pour l'Agile Grenoble 2011

Avoir des millions d'amis, comparer des millions d'offres ou publier des millions de news sont autant d’exemples d’applications écrites en PHP. Ce langage de la “programmation pour les nuls”, qui permet tous les écarts, reste pourtant un choix privilégié pour les solutions web. Avec les bons outils et les bonnes pratiques, ce langage est modulable, testable et facilement livrable. Au travers d’une approche technique montrant par l’exemple quels instruments choisir, découvrez comment jouer la partition d’une symphonie pour PHP industrialisé en agilité majeure.

Au programme:

- Dégager un boilerplate d’un projet PHP ou comment ne pas tout jeter à l’arrivée

- Reprendre la main sur leur projet frontend et avoir une stratégie de refactoring par les tests
“Not only working software, but also well-crafted software” - Manifesto for Software Craftsmanship

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Retrouvez le lien vers le boilerlate PHP sur Tom’s Labs : http://www.tomslabs.com/

    Publiez vos questions dans les commentaires ou retrouvez nous sur Twitter :
    - Jonathan Bonzy : http://twitter.com/jonathanbonzy
    - Bernard Huguet : http://twitter.com/bernardhuguet
    - Marc Nazarian : http://twitter.com/marcnazarian
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
3,966
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
25
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×