Fermer
ActualitésWeb

Compte rendu de la deuxième journée du Forum PHP 2012

Si vous êtes un lecteur régulier du BlogNT vous n’êtes pas sans savoir que la semaine dernière, le BlogNT se déplaçait au Forum PHP 2012 à Paris ! Alors que j’ai pu vous faire vivre au mieux l’évènement en vous proposant mes notes sur les différentes conférences auxquelles j’ai assisté, ainsi qu’un premier article faisant un retour sur ce dernier, notamment en découvrant un aspect fondamental pour tous les développeurs, les tests, ainsi qu’une conférence sur le monitoring applicatif, pourquoi et comment ?, et autres locutions fort intéressantes s’articulant autour de PHP, mais également de tous les aspects entourant ce dernier, et venant parfaitement répondre aux thèmes de l’évènement : performance, qualité et nouveaux usages.

Dans cet article, je vais donc logiquement vous présenter la suite du Forum PHP 2012 et ainsi agréger et résumer les conférences pour lesquelles j’ai été réellement attiré.

Après avoir du affronter les aléas des transports en communs de Paris, impossible de rentrer dans un tram, cette seconde journée qui s’avérait fort intéressante sur le papier allait commencer avec 30 minutes de retard, l’affluence sur le RER B avait pour conséquence de diminuer la population de geeks à la Cité Universitaire Internationale.
C’est donc à 9H30 que Jérôme Renard démontrait à tous les avantages de la mise en place de Varnish. Pour ceux qui l’ignorent, Varnish est un accélérateur de sites Web fonctionnant sur le principe d’un reverse proxy. Ainsi, le système va prendre en charge les requêtes HTTP et communiquer avec votre serveur Web en ne demandant la création des pages Web seulement quand cela est nécessaire.
Que peut-on mettre en cache ? Tout ce qui est passé en GET, mais également tous les entêtes HTTP, tels que les Expires (CSS, JS, fichiers binaires, PDF, images, …), l’entête Cache-Control, Vary et Age (durée de vie de l’objet cache). Afin de réaliser ces changements, en PHP on utilise la méthode header qui permet de spécifier l’entête HTTP lors de l’envoi des fichiers HTML.
VCL ? Avec Varnish, on va utiliser un fichier nommé VCL, Varnish Configuration Language, afin de programmer la façon dont on veut mettre en cache les objets. Ce dernier permet une grande flexibilité.
S’il y a une fonction que vous devez retenir de Varnish, c’est la méthode vcl_recv, qui est la première fonction appelée lors de chaque appel. Au sein de celle-ci, vous allez pouvoir détecter les différents user_agent, effectuer une réécriture d’URL ou encore dédier des serveurs Web à des traitements spécifiques.
Une autre méthode avec laquelle vous devez vous habituer avec Varnish est : vcl_fetch. Celle-ci est appelée une fois que le serveur Web a retourné la réponse. La redéfinir va vous permettre de surcharger les entêtes HTTP. En revanche, veuillez noter qu’il vous sera impossible d’accéder au contenu HTML de la réponse.
Enfin, sachez qu’il vous est tout à fait possible de supprimer des éléments du cache, et même depuis PHP !
Et côté performance ? Grâce à la mise en cache, Varnish va considérablement augmenter les performances de votre application, votre blog ou votre site Web grâce à une mise en cache. À ce jour, des sites tournant ne peuvent pas se permettre de couper Varnish sous peine de voir leur plateforme s’effondrer.

Peu de temps après cette conférence, c’est Patrick qui arrive sur scène afin de nous présenter le thème de la sienne : “Maitrisez les structures de données 102” ! Celle-ci nous a permis de découvrir SPL qui fournit un jeu de structures de données standards. Pour les amateurs d’un array en PHP, sachez qu’un objet en PHP 5.4 utilise moins de mémoire que ce dernier. Je vous conseille de regarder du côté de SplQueue, SplStack ou encore SplFixedArray. Enfin, pour finir sur des recommandations, pensez à utiliser des structures de données appropriées, à la complexité en termes de temps et d’espaces et surtout, nommez vos variables !
Chose sympathique dans cette conférence, j’ai pu repartir avec un petit elePHPant après découvert en question annexe la marque d’une BMW qui s’était cachée dans l’une des diapos de Patrick. Merci à lui !

Compte rendu de la deuxième journée du Forum PHP 2012 - Salle comble pour 'La qualité au-delà du code' de Jean-Marc Fontaine

La seconde conférence pour laquelle je voudrais revenir plus en détails, concerne celle faite par Jean-Marc Fontaine intitulée, “La qualité au-delà du code” ! Rien qu’en lisant sur mon petit carton l’intitulé, je savais que j’allais être captivé, et cela n’a pas manqué, surtout quand Jean-Marc débute la conférence par indiquer que “70% du temps consacré à un applicatif l’est dans sa maintenance”. Le ton est lancé … et l’on comprend de suite où veut nous emmener le conférencier. Pour y arriver, il va aborder différents aspects de la qualité du code que sont : la compréhensibilité, la cohérence, l’exhaustivité, la concision, la portabilité, la scalabilité, les tests, la fiabilité et enfin la maintenabilité. Ces termes sont essentiels de nos jours se doivent d’être respectés, ou du moins pas oubliés dès lors que vous commencez le développement d’un nouvel applicatif.
Côté compréhension, une documentation de qualité, exhaustive et à jour est indispensable. Concernant les commentaires au sein de votre code source, ceux-ci doivent être clairs, qu’il est inutile de le paraphraser, précis et exhaustifs, et essayez de définir une langue unique (Anglais ou Français suivant le type du projet). À noter que PHP CodeSniffer peut vous aider à gérer ces derniers.
Et la cohérence ? Le nommage est un aspect essentiel lors de la mise en œuvre d’un développement ! Ce dernier doit être logique, cohérent et pertinent concernant toutes vos variables ! Petits conseils de Jean-Marc que d’ailleurs j’essaie d’appliquer au quotidien, est d’avoir des variables sur lesquelles on va plutôt mettre un nom, et un verbe, voir verbe et un nom, pour une fonction. Enfin, suivez des règles de codage pour la mise en forme de votre code.
Pour l’exhaustivité, évitez d’incorporer des éléments temporaires dans la version finale. Autrement dit, tous les tests que vous avez pu mener dans votre projet doivent être exclus lors de la livraison finale. Moins il y a de code à maintenir, plus il est aisé de le maintenir. Évitez également de commiter un code commenté. En effet, si jamais votre code venait à être lu par un développeur tiers, celui-ci se posera certainement la question de savoir à quoi vous avez pu penser en écrivant ce code et s’il a un éventuel intérêt ! Si vous avez des interfaces externes, sont-elles disponibles ? Votre partenaire est-il prêt ? Assurez-vous que tout est conforme avec ces derniers ?
Concision ? Évitez une documentation avec des passages inutiles, les libraires externes inclues dans votre projet, quelles sont leurs utilité ? Si à ce jour certaines sont inutilisées, n’hésitez pas à les supprimer, elles deviendront vite obsolètes et engendrons potentiellement des failles de sécurité. De plus, pensez à éviter du code mort augmente inutilement la taille de l’application ! De plus, évitez le code dupliqué, la factorisation est une phase essentielle d’un développement. Ce travail qui peut s’avérer “inutile” dans un premier temps, va s’avérer indispensable à long terme. Côté outils, Xdebug, PHP DCD (Dead Code Detector), ou encore PHP CPD (Copy/Paste Detector) peuvent vous aider à résoudre les différents problèmes soulevés ci-dessus.
Et les tests dans tout ça ? Les tests unitaires, fonctionnels, de charge et de sécurité sont indispensables. Un code fonctionnel n’est pas forcement un cas testable (Injection de dépendance).
Enfin le dernier point sur lequel Jean-Marc a voulu insister, est la fiabilité et la maintenabilité. La tolérance aux erreurs est essentiel. Évitez que l’application ne tombe pas à la première erreur (redondance BDD, cache, …), et pensez à un mode dégradé. Pour ce faire, définissez en amont les cercles d’importances et trouver des alternatives. On parle alors de la technique feature flipping qui permet d’activer / désactiver du code (donc des fonctionnalités) indépendamment d’un cycle de mise en production. Ainsi, grâce à cette technique vous allez pouvoir activer une nouvelle fonctionnalité facilement, déployer une fonctionnalité sur un sous-ensemble de serveurs, dégrader partiellement les fonctionnalités d’un site en cas de situations critiques, etc …
Concernant la maintenabilité, essayez de rendre vos installations et mises à jour de façon simplifiées. De plus, lors de votre déploiement, ajoutez des logs ! Ces derniers vous permettront de comprendre la vie interne de l’application. Même si cela peut être efficace pour certaines personnes, évitez les @ dans votre code, rendant les pratiques compliquant le débogage de l’application…

13h, il est temps de déjeuner ! Avec Fabien on en profite pour rencontrer Kenny Dits, qui avait la précédente journée fait une présentation très appréciée sur le monitoring applicatif, et Olivier Mansour de chez M6 Web ! Discutions vraiment intéressantes et c’est dans des moments comme ça que l’on s’aperçoit que nous avons tous les mêmes problématiques de développement, déploiement, etc…

Allez à peine le sandwich avalé, on s’empresse de se rendre à la conférence d’Amaury, qui va nous expliquer les démons en PHP, de inetd à ZeroMQ. Grâce à sa présentation nous allons apprendre comme il est simple de coder des démons en PHP, analyser les performances possibilités qui nous sont offertes : (x)inetd, mono / multi-processus, ZeroMQ, libevent, eio,.. Ensuite, on passe aux accès concurrents et à la scalabilité par Jérôme Vieilledent.

Alors que se tenait au même moment de la dernière conférence la table ronde des DSI qui m’aurait fortement intéressée, je ne pouvais manquer Atoum, présenté par Frédéric Hardy ! Pourquoi ce choix ? Tout simplement car je suis Frédéric depuis un long moment sur Twitter, et j’ai toujours souhaité en apprendre davantage sur Atoum ! Atoum se base sur le TDD, qui est une méthode de test itérative. Si ne savez pas ce que signifie TDD, je ne peux que vous conseiller de lire la première partie de ce compte rendu du Forum PHP puisque je reviens plus longuement sur ce dernier dans ce billet. Atoum, est un framework de tests unitaires spécifiques aux versions de PHP supérieures ou égales à 5.3.
Il a pour objectif affiché d’être simple, moderne et intuitif.
PHP 5.3 un frein à son développement ? Il est vrai que ce choix pourra effrayer certains utilisateurs, développeurs, mais cette exigence de soutenir 5.3 est une réelle volonté et assumée de la part de Frédéric. En effet, ce dernier souhaite tout simplement promouvoir PHP 5.3 ! La principale raison de PHP 5.3, est tout simplement car le framework utilise des éléments spécifiques à cette version, telles que les espaces de noms, le Late State Binding (résolution statique à la volée), ou encore les fonctions anonymes et les fermetures. Autant de fonctionnalités offertes par la version 5.3 qui permettent de fournir un code concis et plus ergonomique.
Rapidité ? Atoum est extrêmement rapide ! Lors de l’installation, une archive PHAR à télécharger permettait de rapidement déployer le framework. Cette archive va non seulement pouvoir être utilisée pour l’installation mais également pour son utilisation puisqu’il vous faudra tout simplement l’inclure dans l’entête de votre vite de test.

Compte rendu de la deuxième journée du Forum PHP 2012 - Le test, un élément devenu indispensable de nos jours !

Note : D’autres méthodes d’installation sont également possibles : Vous allez pouvoir retrouver le projet sur Github, récupérer un PHAR donc, mais également sur Composer !

Simplicité ? Atoum permet de simplifier l’écriture et la maintenance de tests, et ce grâce à une API naturelle qui a été développée pour être instinctive et facile de prise en main, grâce également à des annotations, ou encore des assertions expressives. Ainsi, ces dernières calquent le langage naturel et utilisent une interface fluide, permettant également de réaliser plusieurs tests sur une même variable.
Et comment le mettre en œuvre ? Pour mettre en place Atoum au sein de votre projet c’est très simple ! Vous allez pouvoir exécuter Atoum en ligne de commande, mais également à l’aide d’un autorun (simple require_once du PHAR dans le script PHP du test. L’écriture d’un test se veut très simpliste (là c’est le moment où Frédéric lance Vim, son Terminal et c’est parti, du code, du code et encore du code !). Si j’aurais pu filmer la démonstration menée par Frédéric le mieux va être de faire un article dédié à Atoum ! Parmi les principaux faits on peut noter le bouchonnage. En effet, Atoum permet de bouchonner des classes, des classes abstraites ou encore des classes inconnues, mais également des interfaces. Il s’agit d’une extension de l’adaptateur avec un espace de nom dédié et une assertion dédiée. Si vous n’avez pas compris ce dernier passage, sachez que je parle des mocks (ou Mock object) qui, en programmation objet, sont des objets simulés qui reproduisent le comportement d’objets réels de manière contrôlée. L’idée de créer un mock va vous permettre de tester le comportement d’autres objets, réels, mais liés à un objet inaccessible ou non implémenté. Ainsi, dans un test unitaire, les mocks peuvent simuler le comportement d’objets réels et complexes et sont utiles à ce titre quand ces objets réels sont impossibles à utiliser. Sur Atoum, les mocks sont automatiquement générés !
Et demain ? Aujourd’hui, Atoum ce sont plus de 800 Ko de code, près de 25 000 lignes de code ! Si une documentation est en cours de rédaction sur Github, Frédéric fait des appels aux contributeurs pour l’aider. De plus à la vue d’une future sortie publique, un site Web dédié à Atoum est en cours de réalisation. Pour le futur Frédéric a déjà commencé à intégrer un PoC pour PHP 5.4, et espère que le projet sera de plus en plus adapté. À ce jour s’il n’existe pas la possibilité de passer des tests de PHP Unit vers Atoum, Frédéric a annoncé réfléchir à la migration.

Et voilà, le Forum PHP 2012 est désormais bel et bien fini ! Au final, ces deux jours ont été riches en découvertes. Grâce à des conférences et des conférenciers de qualités, tout le monde a semblé avoir apprécié cette nouvelle édition. Je voudrais également à travers cet article remercier tous les bénévoles de l’association AFUP pour l’organisation et la mise en place de cet évènement. Avec des cadeaux offerts à chaque fin de conférence suite à des questions pertinentes, le Forum PHP n’a rien a envié aux plus grosses conférences.
Rendez-vous en 2013 donc ! En attendant, vous pouvez toujours vous rendre à l’étape 2012 du tour de France du PHP Tour également organisé par l’AFUP. Cette année, l’édition se déroulera à Nantes, les 29 et 30 novembre 2012, au Centre de Communication de l’Ouest.
Pour cette édition nantaise, la thématique de prédilection sera PHP & l’open-data, la communication protocole ouvert et interopérabilité. N’hésitez pas à soumettre votre candidature !

PS : Les photos ont été récupérées depuis un groupe Flickr

Y étiez-vous ? Qu’en avez-vous pensé ? Avez-vous des questions sur les conférences décrites ci-dessus ?

Mots-clé : AFUPAtoumconférencesForum PHP 2012qualité du codeVarnish
Yohann Poiron

L’auteur Yohann Poiron

J’ai fondé le BlogNT en 2010. Autodidacte en matière de développement de sites en PHP, j’ai toujours poussé ma curiosité sur les sujets et les actualités du Web. Je suis actuellement engagé en tant qu’architecte interopérabilité.