Le forum PHP 2012 s’est déroulé la semaine dernière à la Cité Universitaire de Paris. Clever-Age était sponsor de l’évènement avec en plus 7 de ses consultants présents sur scène et dans l’assemblée. Retour sur les sujets qui ont particulièrement retenu notre attention.
Mardi 5 juin 2012, il est à peine plus de 8H00 et tout est encore calme devant la Cité Universitaire de Paris. Les membres du bureau de l’AFUP règlent les derniers détails, courent à gauche à droite et se préparent à accueillir les participants au forum PHP 2012. L’évènement est sur le point de démarrer.
A 8H30 tout est prêt. La mascotte PHP salue les premiers arrivants qui retirent leur badge à l’accueil et se dirigent vers le buffet. Premier objectif de la journée : un café et une viennoiserie.
Une heure plus tard, les conversations se font plus bruyantes et la foule prend place dans l’espace Adenauer pour la keynote d’ouverture.
Après un mot de bienvenue et quelques instructions pratiques visant au bon déroulement de l’évènement, Xavier Lacot (actuel président de l’AFUP) a cédé la parole à Rasmus Lerdorf pour la première conférence du forum PHP.
PHP in 2012
par Rasmus Lerdorf
http://talks.php.net/show/afup12
Rasmus a commencé sa présentation par un diaporama de plus de 70 sites (et pas des moindres : Yahoo, Flickr, Facebook, Baidu, …) réalisés avec PHP. Puis il est revenu en arrière jusqu’en 1993, afin de rappeler par le code quelques étapes qui ont mené PHP jusqu’à sa version actuelle : PHP 5.4.
S’en est logiquement suivi une énumération étayée d’exemples des nouveautés apportées PHP 5.4. Si cette nouvelle mouture permet au développeur de synthétiser plus encore son code (chainage, nouvelle syntaxe courte pour les tableaux), Rasmus souligne judicieusement que ces raccourcis sont à double tranchant : ils doivent être utilisés à bon escient afin de préserver la lisibilité et la compréhension du code.
Le point a aussi été fait sur les performances qui ont encore été améliorées. PHP 5.4 consomme moins de mémoire. Des fonctionnalités obsolètes telle que y2k_compliance ou magic_quotes ont été supprimées. Bref, c’est la version la plus performante de PHP.
De plus, avec son serveur web intégré très pratique pour tester rapidement du code, on se dit qu’il est vraiment temps de passer à PHP 5.4. D’ailleurs, après un rapide sondage à main levée, Rasmus a constaté que – trop – nombreux sont ceux qui utilisent encore en production la branche 5.2 de PHP. En rappelant à l’assemblée que PHP 5.3 a déjà 3 ans (et oui !), il nous a encouragé à passer au plus vite à PHP 5.4 afin de profiter des gains en performances et sécurité apportés par cette version. A minima, il faut mettre à jour PHP à la version 5.3.
Rasmus a conclu sa conférence on nous confiant sa vision de la programmation au travers d’un projet. Réalisé en PHP, il permet à des familles de se retrouver après avoir été séparées par un tremblement de terre. Pour l’auteur, ce qui est vraiment important ce n’est pas le langage de programmation utilisé en lui-même, mais le service qu’il permet de rendre.
Reste que PHP a justement la faculté de rendre, toujours aussi facilement, de nombreux services.
Annotating with Annotations
par Rafael Dohms
http://www.slideshare.net/rdohms/annotating-with-annotations-forumphp-2012
Rafael Dohms, développeur brésilien très actif de la communauté PHP, commence sa présentation en nous rappelant précisément ce qu’est une annotation : un bloc de documentation (docblock) qui modifie le comportement du programme durant l’exécution.
Après quelques rappels sur l’historique des annotations (notamment l’abandon en 2010 d’une RFC visant à implémenter les annotations au moyen d’un ajout de syntaxe dans le core de PHP), il met en balance les avantages et inconvénients des annotations : injection facile de comportement et configuration directement au sein de l’objet, mais difficultés de déboguage et performances dégradées (les docblocks ne sont pas du code natif).
Après une petite revue des principaux moteurs d’annotations (Doctrine commons, Notoj, PHP Documentor 2, Zend Framework 2 Annotations), Rafael nous explique par l’exemple comment implémenter une annotation de filtrage.
Talk très intéressant, très bien construit et à forte composante technique.
Tirer parti de Postgresql en PHP avec Pomm
par Grégoire Hubert
http://pomm.coolkeums.org/phpforum/build/01-introduction.html
Au cours d’une conférence dynamique et efficace, Grégoire a démontré la souplesse offerte par PostgreSQL pour l’extraction de données et leur exploitation en PHP.
En prenant pour exemple le système solaire, il nous a permis de constater que la syntaxe de Postgre permet d’extraire en une seule requête des données agrégées, là où plusieurs requêtes seraient nécessaires avec d’autres SGBD courants tels que MySQL.
La présentation était également l’occasion de découvrir POMM : un gestionnaire PHP d’objets de modèle, et de voir comment le mettre en oeuvre. POMM n’étant pas un ORM, il n’est pas fortement lié aux tables de la base de données. Il permet donc de profiter pleinement de la souplesse offerte par le langage de requête de Postgre.
Coup de pied dans la LAMP
par Damien Alexandre et Benjamin Clay
http://ternel.net/forumphp/
Nous avons eu la chance de pouvoir présenter notre conférence « Coup de pied dans la LAMP », un tour d’horizon de la stack web la plus utilisée du monde et des solutions pour en améliorer les performances à moindre coût.
L’objectif était de présenter des alternatives viables et simples à mettre en place, le public étant orienté développeurs et non administrateurs systèmes.
Nous avons démontré via des stress-tests que Ngnix et MariaDb sont des solutions stables, puissantes et plus rapides que le couple Apache2 / MySQL 5 lorsqu’il s’agit de délivrer un site web sous Drupal 7. Et nous avons aussi abordé Cherokee, Percona, Drizzle et SPDY, le peut-être futur HTTP 2.0.
Vous pouvez retrouver les sources de notre conférence « Coup de pied dans la LAMP » sur Github. A cette adresse vous trouverez également des outils et scripts bien utiles pour vos stress-tests.
Monitoring applicatif : Pourquoi et comment ?
par Kenny Dits
http://www.slideshare.net/kennydee/monitoring-applicatif-pourquoi-et-comment
Kenny Dits, responsable études et développements nous explique comment avoir de la visibilité sur ses projets grâce au monitoring applicatif.
Mais que doit-on monitorer exactement ? Absolument tout ! Aussi bien les appels aux services applicatifs que la gestion des utilisateurs, les temps d’affichage, les erreurs applicatives …
Deuxième question : pourquoi monitorer ? Pour être alerté des problèmes avant que les utilisateurs ne les remontent, et déterminer la cause principale de ces incidents.
La solution mise en oeuvre : le duo StatsD / Graphite.
StatsD est un démon très simple en NodeJS crée par Etsy et Flickr. Il écoute les messages sur un port en UDP, extrait les métriques et les transmet les données à Graphite.
Graphite permet d’obtenir une représentation des données collectées sous forme de graphiques. Il se compose de trois éléments :
- Carbon : un démon qui écoute les données
- Whisper : une librairie de base de données simple qui stocke les données
- Graphite webapp : une interface graphique en Django
En consultant le chapitre « The Render URL API » de la documentation de Graphite, vous parviendrez à créer des tableaux de bord de graphiques ciblés (responsable technique, administrateurs systèmes, développeurs, …) très utiles.
Avec un peu d’astuce, vous pourrez même concevoir votre propre système d’alertes (envois d’emails, sms, …).
En conclusion, on est ici en présence d’outil complet, véritable liant entre les développeurs et l’exploitation qui permet avant tout d’être très réactif.
Anatomie, fonctionnement et performances de PHP
par Julien Pauli
http://www.slideshare.net/jpauli/anatomie-et-performances-de-php
Julien a commencé par rappeler comment PHP est construit et ce qu’est un langage interprété. Puis il s’est livré à une présentation approfondie du fonctionnement du langage, en abordant les 4 phases principales de l’exécution d’un script PHP :
- Startup
- Compilation
- Execution
- Shutdown
La phase de compilation a été particulièrement bien traitée. Il faut dire qu’elle comporte à elle seule 3 étapes primordiales du cycle d’exécution d’un programme PHP :
-# l’analyse lexicale (lexing) : le code PHP est analysé et transformé en une suite de règles.
-# l’analyse syntaxique (parsing) : la sortie de l’analyse lexicale est analysée et validée. C’est à ce stade que peuvent survenir les « parse errors » bien connues des développeurs PHP.
-# la compilation (compiling) : la sortie de l’analyse syntaxique est transformée en OPCode qui pourra être exécuté par la machine virtuelle Zend.
Bien que l’analyse lexicale soit plus rapide depuis PHP 5.3 (grâce à l’intégration du lexeur re2c), il est préférable d’épargner à PHP l’exécution répétée de cette étape et de celle de l’analyse syntaxique. La solution consiste à mettre en cache l’OPCode généré lors de la phase de compilation afin de le réutiliser à la prochaine exécution. Plusieurs outils (dont APC) permettent cela depuis longtemps et offrent ainsi un gain de temps d’exécution non négligeable. L’utilisation de ces outils est donc toujours valable et encouragée.
Dans la suite de la conférence, Julien a évoqué des outils d’aide à l’analyse du code PHP (dont XDebug, XHPROF, Callgrind et strace), en vue de l’amélioration des performances de celui-ci.
Puis il a abordé l’épineux problème de la gestion de la mémoire en PHP et plus particulièrement le fonctionnement du Zend Memory Manager, du garbage collector, et quelques bonnes pratiques de développement.
La présentation s’est terminée par une liste de conseils (choses à faire, à ne pas faire) pour obtenir des développements PHP performants.
Si elle a pu en laisser certains sur le bord de la route, cette conférence très technique et dense n’en était pas moins passionnante.
Gestion des dépendances dans un projet PHP
par Jean-Marc Fontaine
http://www.slideshare.net/JMF/gestion-des-dpendances-dans-un-projet-php-forum-php-2012
Jean-Marc Fontaine est un habitué. Ancien président de l’AFUP, il sait retenir l’attention de son public avec des sujets variés, souvent liés à l’organisation ou à la qualité.
Après une bonne introduction sur les solutions actuelles pour la gestion des dépendances (manuel, svn:export dans Subversion, sous-modules Git, PEAR, …), leurs impacts, avantages et inconvénients (mises à jour, versions disponibles, parallélisation des versions), un nom est lâché : Composer.
Composer c’est la rock star du moment :
- Pas d’effets de bord, les dépendances sont spécifiques à chaque projet
- Gestion d’actions personnalisées (vidage de cache, création de fichiers, …)
- Autoload compatible PSR-0
- Gestion de modèles de projet
En parallèle Packagist propose un annuaire de paquets complet (1500 paquets pour 3800 révisions) et Satis permet de gérer votre dépôt privé pour héberger vos paquets.
Tout le monde s’y met, c’est le moment !
Varnish pour le développeur PHP
par Jérôme Renard
http://jrenard.info/blog/varnish-for-php-developers-the-slides.html
La deuxième journée de conférence a commencé par un sujet bien technique : le reverse-proxy Varnish. Jerôme Renard démarre par une présentation générale de l’outil, son utilisation et ses interactions avec les différents entêtes du protocole HTTP 1.1 relatifs au cache. On notera une très bonne explication de l’entête “Vary” qui permet de déclarer un ou plusieurs entêtes HTTP de la requête comme discriminants pour la mise en cache de la réponse. Par exemple, ajouter un entête “Vary : Accept-Language” permettrait de mettre en cache une version de la ressource demandée en fonction des langues acceptées par le client.
Plus tard, Jérôme aborde la configuration de Varnish via son mini langage de configuration (VCL). Au travers de plusieurs exemples, il démontre que Varnish peut être bien plus qu’un simple reverse-proxy : load-balancing, url rewriting, contrôles de sécurité, etc.
La présentation se termine sur la mise en oeuvre de tests unitaires permettant de valider la mise en cache des ressources suivant les règles établies, et sur quelques astuces permettant de maximiser le taux de “cache hit” (requêtes auxquelles Varnish peut répondre sans faire appel au backend).
Drupal comme vous ne l’avez jamais vu
par Bastien Jaillot et Simon Perdrisat
https://speakerdeck.com/u/gagarine/p/drupal-comme-vous-ne-lavez-jamais-vu
C’est la conférence orientée CMS du forum. Animée par Bastien Jaillot et Simon Perdrisat, elle présente Drupal « comme on ne l’a jamais vu ».
Mais que se cache t-il derrière ce titre accrocheur ?
Grâce à une liste non-exhaustive de composants aussi bien en front qu’en back, ils nous expliquent comment tirer le meilleur parti du CMS (en l’occurrence, de la version 7).
Parmi les tonnes de modules disponibles sur la communauté, il faut faire le tri.
En front, on retiendra Mothership qui permet d’avoir un thème épuré en HTML5. Associé à Bootstrap (kit CSS/JS comportant des éléments d’interface) et à Less (langage dynamique pour CSS), il constituera une très bonne base pour une intégration custom.
Côté back, on peut gérer les dépendances avec Composer, simple à intégrer à Drupal car il y a un module pour ça et une intégration Drush.
Par ailleurs, ils insistent sur la dénormalisation des données : les fields de Drupal sont coûteux , il faut stocker les calculs. En utilisant des alternatives de stockage tels que le NoSQL (mongoDB), l’indexation des données (solr , elasticsearch…) et les systèmes de cache (Redis, memcache), on peut obtenir un réel gain en performances. De plus, Socket.io permet de faire du temps réel (cf. le module Node.js integration).
Pour les tests unitaires, il faut abandonner le module SimpleTest qui n’évoluera plus au profit de PHPUnit ou Atoum. Ils citent également Mink et BDD pour les tests fonctionnels.
Enfin, ils nous proposent des alternatives au module statistics pour monitorer ses applications telles que Graphite et StatsD.
Ce concentré d’éléments vous permettra de construire « le CMS de vos rêves ». Vous l’aurez compris, Drupal c’est bien, mais en utilisant des composants externes c’est encore mieux !
A quick start on Zend Framework 2
par Enrico Zimuel
http://www.slideshare.net/e.zimuel/a-quick-start-on-zend-framework-2
Enrico Zimuel, membre de la core team du Zend Framework 2, présente les concepts et fonctionnalités de cette nouvelle mouture du framework aujourd’hui encore en version bêta.
Y figurent notamment la devenue classique injection de dépendances, une gestion des évènements placée au coeur du framework (Event Driven Architecture) et une vraie gestion des modules.
La conférence s’est poursuivie par la présentation de l’installation du framework dans sa version 2.0.0beta4. Le système de gestion de package Pyrus a aussi été abordé, ainsi que la problématique de migration des applications en version 1 vers la version 2 du framework.
La présentation a dressé le portrait d’un framework au goût du jour, solide et moderne, mais dépourvu de fonctionnalité novatrices.
A surveiller : la release candidate devrait être disponible cet été.
Table ronde DSI
C’est une première pour le forum PHP ! Une conférence sous forme d’interviews menée par Yann Serra (qui publie entre autre sur 01net.com) avec :
- Sébastien ANGELE, directeur technique adjoint du groupe Express – Roularta
- Martin BORONSKI, directeur technique de M6Web
- Sébastien DEBANDE, DSI à la Mairie de Lille
- Jean-Marc LEGLISE, DSI de LaFourchette.com
- Olivier GRANGE-LABAT, directeur technique chez Le Monde Interactif
- François ZANINOTO, CTO chez e-TF1
Plusieurs questions ont été posées lors de cette table ronde, notamment sur les choix techniques effectués par les différents participants. Si PHP a séduit par sa simplicité et son faible coût et mise en oeuvre, sa facilité d’accès permet aux recruteurs de disposer d’un grand nombre de développeurs opérationnels. Avoir des cycles de développement plus rapides, c’est pratique dans le cadre d’une activité « évènementialisée », a souligné Martin Boronski.
On a aujourd’hui des niveaux comparables entre Java et PHP pour tout ce qui concerne la normalisation et l’industrialisation des projets. Lorsqu’on travaille dans des équipes importantes ou lorsque les livraisons et déploiements sont très fréquents (comme pour le site de l’Express), il faut pouvoir effectuer des rollbacks en quelques minutes.
Qu’en est-il des développeurs ? La curiosité, la veille technique et la capacité à pouvoir se mettre à la place de l’utilisateur priment sur le diplôme et c’est souvent par le réseau (Twitter…) qu’on les trouvent.
Mais la véritable problématique reste de savoir comment garder ses développeurs : donner du temps libre pour la veille, organiser des journées « hacking », avoir le sentiment de participer à une oeuvre collective ou encore travailler sur un projet ayant une bonne visibilité sont autant de facteurs positifs pour les employés. Le salaire ne suffit plus, un développeur est un assimilé à un artiste et son cadre de travail en est d’autant plus important.
À bientôt !
Merci aux organisateurs et à l’AFUP pour cette belle édition du forum PHP qui aura une fois encore tenu toutes ses promesses.
En attendant l’édition 2013, nous vous donnons d’ores et déjà rendez-vous au PHPTour organisé à Nantes les 29 et 30 novembre 2012.