Bilan du Forum PHP 2014: Le PHP, langage de l'innovation ?
Le PHP est-il un langage de choix pour relever le défi de l'innovation ? Compte-rendu sélectif de ce qu'en a dit la communauté PHP réunie au Beffroi de Montrouge le 23 et 24 octobre dernier.
Le thème officiel de cette édition 2014 était: “Du concept à la production, PHP premier à l’arrivée”. Le fil rouge du forum consistait donc à éclairer les atouts du PHP dans un environnement de développement rapide, itératif et bien souvent lié aux problématiques innovantes. Le PHP peut-il être le fer de lance d’un parti de l’innovation ?
Le PHP est Lean Startup
C’était en tout cas le postulat posé par Fabrice Bernard lors de la keynote d’ouverture. Evidemment, ce n’est pas le PHP qui est Lean Startup, mais il s’intégrerait très bien dans une telle démarche.
L’une des premières conférences, “La mesure, ce n’est pas que pour le devops” de Patrick Allaert et Olivier Garcia, était justement en plein sur ce thème. Il y fut beaucoup question de la mise en place de métriques de suivi d’un projet (métriques AAA pour Actionnables Auditables Accessibles et métriques AARRR pour Acquisition Activation Retention Referral Revenue) et des outils permettant de recueillir ces métriques. Les deux conférenciers n’ont pas indiqué si PHP était le langage de choix dans une démarche Lean, mais il est intéressant de noter qu’aucun des outils présentés, comme Google Analytics et son API, ou StatsD, n’était directement issu du monde PHP. L’importance du produit dans un conduite de projet, bien avant le choix d’une technologie, est apparu comme une évidence.
Le PHP est fiable
L’un des points d’importance dans le choix d’un langage dans une démarche Lean concerne sa fiabilité et donc ses outils de tests.
L’intervention de Johannes Schmitt, “Improving Code Quality Continuously”, même si elle prenait parfois l’aspect d’une brochure publicitaire pour son produit Scrutinizer, a eu le mérite de bien exposer les basiques des tests en PHP.
Mais c’est l’intervention de William Durand, “Test logiciel : Passé, Présent, Futur” qui fut brillante sur cette thématique des tests. Avec une première partie présentant “l’état de l’art” des tests en PHP, le seconde ouvrait la problématique au-delà de la simple bonne pratique et du PHP (gor, gremlins.js). William Durand est admirable, globalement pour tout son travail dans le monde du PHP, mais ici surtout pour son optimisme le poussant à considérer comme acquise l’utilisation des bonnes pratiques au sein de l’industrie du développement PHP. Même s’il ne s’agit plus de convaincre de l’utilité des tests dans le processus de développement, leur mise en place au quotidien reste selon moi encore une affaire de présent.
Cette opinion est renforcée par l’intervention de Marc Hugon qui a présenté ses “Retours d’expérience: Test fonctionnels chez Maisons du Monde” avec beaucoup d’humour.
Le PHP est devops
Devops est un mouvement visant à réduire la friction organisationnelle entre les “devs” (chargés de faire évoluer le système d’information) et les “ops” (chargés d’exploiter les applications existantes). Ce que l’on pourrait résumer en travailler ensemble pour produire de la valeur pour l’entreprise. (source Wikipedia). Pour être premier à l’arrivée dans la course “du concept à la production”, le PHP doit donc se plier facilement à une démarche devops. Et à l’écoute des nombreuses conférences sur cette thématique, les arguments ne manquent pas.
La question classique de différentiel entre l’environnement de développement et de production (et des environnements intermédiaires de recette ou de démo) a été abordée par Nicolas Silberman et Sébastien Angèle dans leur conférence “Industrialisation des environnements de dev avec Puppet et Amazon”. En effet, comment développer facilement pour un environnement de production final complexe (ici, plusieurs applicatifs PHP interdépendants et plusieurs bases de données sur des technologies différentes) ? Et comment rapidement déployer cet environnement pour la démonstration d’une nouvelle fonctionnalité ? L’équipe de l’Express s’est orientée vers une solution d’environnements à la demande sur AWS, solution orchestrée par du Puppet au début du projet, puis du Chef (et packer.io) jugé plus souple et plus simple. Si globalement la solution leur donne satisfaction, il reste encore beaucoup de problèmes à régler pour avoir un cadre aussi idyllique que celui promis par le devops. Le difficile sujet des données (ils utilisent pour le moment des “dump” des données de production) entraîne une lourdeur encore très problématique dans leur processus.
Et si PHP s’intègre très bien à un environnement Amazon, qu’en est-il de son utilisation sur d’autres environnements comme celui de Microsoft par exemple ? Lors de la présentation “Au cœur de la stratégie Microsoft « Cloud first, Mobile first »” Hervé Leclerc a fait la démonstration en directe que PHP s’intègre très bien à cet environnement cloud Azure, et ce avec d’autres outils du monde du libre comme Ansible.
PHP apparaît donc comme un langage fiable, bien outillé, prêt à être rapidement déployé sur des environnements locaux ou cloud. Mais est-il pour autant le premier à l’arrivée ?
Le PHP, langage de l’innovation ?
"[..] car si il existe un langage tellement merveilleux qu’il permettrait de tout faire, vous ne croyez pas que cela ferait longtemps qu’on n’utiliserait plus que celui là ?"
Cette phrase était l’un des axes de l’intervention de François Zaninotto (CEO de Marmelab) “Frameworks: A History of Violence”. L’un des axes seulement, tant cette conférence était riche en pistes de réflexion, dont celles-ci retenues pour le suite de ce compte-rendu :
- le métier au cœur de l’architecture applicative plutôt que le langage
- les microservices et leur interopérabilité
- s’offrir le choix du langage pour traiter chaque problématique
NDLR: François est aussi le dirigeant de marmelab, donc le patron de l’auteur de ce billet. Si vous vous questionnez sur l’impartialité de son avis sur cette conférence, allez la voir.
Ces différentes idées n’ont-elles donc été évoquées que lors de cette intervention ? Non, loin s’en faut.
Xavier Gorse et Yves Heitz ont ainsi présenté dans leur conférence “Architecture d’une application Full API orienté micro service” un cas vraiment concret de mise en place d’une architecture microservice. Si une partie conséquente des microservices est réalisée en PHP, d’autres techno comme Node.js, Go ou MeteorJs sont préférées au PHP sur quelques briques d’architecture. L’intervention a mis l’accent sur l’importance du système de gestion des logs (avec logentries), ainsi que sur la gestion des messages asynchrones (réalisée avec iron.io). Il est à retenir de cette conférence que, si effectivement aborder un système complexe avec des microservices permet de simplifier la résolution d’une problématique métier bien circonscrite de manière élégante, le complexité globale du système résultant est très loin d’être négligeable. Yves Heitz a, entre autre, fait référence à des problématiques d’architecture conduisant à séparer toute la partie écriture de la partie lecture de leur Api (CQRS), ce qui n’est pas forcement trivial.
L’architecture en microservices était aussi au cœur de l’intervention de Geoffrey Bachelet “Vers des applications “12 factor” avec Symfony et Docker”. Geoffrey a présenté les 12 grands principes d’une application software-as-a-service définis par l’équipe d’Heroku. Les exemples se basaient sur une infrastructure réalisée avec Docker, il fut en fait très peu question de Symfony. Là encore, le gain en simplification de la résolution d’un service ciblé (chaque service devant être stateless et ne devant rien partager avec les autres services) conduit à des choix d’architecture d’infrastructures non triviaux, par exemple le pattern Ambassador.
Le “Retour d’expérience ARTE GEIE : développement API” fait par François Dume fut l’une des interventions la plus réjouissante de cette édition 2014. Il s’agit en effet d’une preuve au réel de ce principe du libre choix de la meilleure techno pour une fonctionnalité donnée. Plutôt que de classiquement se tourner vers les fonctionnalités OAuth de leur applicatif réalisé en Symfony, le choix de l’équipe technique s’est porté sur l’utilisation moins courante de Nginx et Lua (plus une brique Sf2 supplémentaire) pour gérer l’authentification des utilisateurs sur la nouvelle Api d’Arte. Le plaisir pris par l’équipe de développement sur ce projet était communicatif.
Enfin la conférence “Cohabitation de PHP et Node au Monde, pourquoi et comment” de Olivier Grange-Labat est venu définitivement prouver le bien-fondé de la mise au cœur du processus de développement du métier et de l’utilisation du bon langage pour le bon besoin. Cette intervention retraçait la refonte de la partie CMS du journal le Monde, CMS dont le développement à impliquer aussi bien l’équipe du monde.fr que les journalistes du journal papier. Au final, ce CMS s’est matérialisé dans une application one-page réalisée en Node.js. Le frontal du site lemonde.fr reste lui en PHP. Pour terminer, la phrase d’Olivier Grange-Labat conclut parfaitement le sujet:
“Voux êtes développeur avant d’être développeur PHP. La techno n’est qu’un outil”.
Conclusion
“Du concept à la production, PHP premier à l’arrivée” ? Sans doute pas, en tout cas pas toujours. D’ailleurs cela n’a sans doute pas de sens de chercher une technologie toujours adaptée à toutes les situations. Les différentes expériences et opinions partagés lors des conférences poussent plutôt à multiplier les choix disponibles dans sa boîte à outils de développeur. Boîte dans laquelle le PHP tient une place de choix !
Et ce qui fut remarquable lors de ce forum 2014, c’est la multitude de technologies abordées, autres que le PHP : Ansible, Puppet, Chef, Docker, Microservices, Node.js, AWS, Azure, ELK, Nginx, Lua … Comme quoi, cette appétence pour les autres technologies semble déjà une qualité bien partagée au sein de la communauté PHP.
Post-scriptum : voici un bon lien regroupant les liens vers tous les slides et toutes les vidéos des conférences du Forum 2014.