Retour sur l’édition 2018 du PHP Tour à Montpellier

Retour sur l'édition 2018 du PHP Tour à Montpellier

Nous avons assisté à la toute dernière édition du PHPTour, l’événement itinérant de l’Afup va en effet changer dès 2019 pour une journée de conférences dans toute la France (Afup Day). C’est à Montpellier, en fin de semaine dernière que le clap de fin a eu lieu.

Comme à notre habitude, nous étions présents pour partager et apprendre pendant deux jours. Beaucoup de choses ont été abordées et nous allons, dans cet article, revenir sur les sujets qui nous ont le plus marqué.

L’architecture et l’infrastructure

Bien penser son système de traduction, dès le départ, est primordial dans le cadre du développement d’une application web. Symfony propose bien sûr quelques outils, mais sans les fonctionnalités avancées de PHP-Translation et le workflow exposé par Mathieu Santostefano, nous serions encore à l’âge de pierre : conflits git de fichiers .xlf, corrections de wording fastidieuses en production, tests fonctionnels dépendants de la traduction… Faisant suite à nos articles sur le sujet, Mathieu a présenté une mise à jour du workflow de traduction que nous utilisons sur plusieurs de nos projets.

Autre composant de Symfony dont nous avons parlé, le Workflow. Grégoire Pineau a une nouvelle fois introduit ce composant dont il est l’auteur et dont l’adoption a été très bonne. Les fonctionnalités ont doublé depuis les débuts modestes et l’intégration avec le framework est vraiment beaucoup plus poussée aujourd’hui, un bonheur à utiliser.

Bien architecturer son application est crucial si elle doit être maintenable dans le temps. Arnaud Lemaire nous a présenté différent types d’architectures pour répondre à ces besoins de maintenance et d’évolution. Cette conférence était très didactique. Il a commencé par parler de CQR, puis de DDD, CQRS et enfin d’Event Sourcing. Même si ce type d’architecture (CQRS + ES) est très à la mode en ce moment et qu’elle peut résoudre beaucoup de problématiques, il ne faut pas oublier qu’il n’est pas adapté à toutes les situations.

Comprendre PHP et améliorer les performances

Nous avons beaucoup aimé le talk de Benoît Jacquemont à propos de strace et ltrace. Tout en décortiquant le fonctionnement d’un processus dans un système Unix, Benoît nous a montré comment utiliser ces outils auxquels nous ne sommes pas tous habitués et comment analyser ou observer un processus lent ou bloqué sans avoir à l’arrêter. Les exemples étaient bien choisis et nous avons hâte d’avoir des problèmes d’IO à débugger !

Grâce aux conseils de Romain Monceau, Doctrine ne devrait plus être un problème lors de traitements lourds et volumineux en batch (traitement par lot). Nous avons découvert les Tracking Policy de la librairie, qui permettent de ne plus automatiquement calculer et envoyer les changements d’une entité managée. Les autres bonnes pratiques telles que la méthode clear() ou le fait de flusher non pas à chaque entité mais par batch restent bien sûr d’actualité. Autre bonne découverte de ce talk, l’extension PHP Meminfo est compatible avec PHP 7 et nous étions complètement passés à côté !

Derick Rethans a entièrement déconstruit l’exécution d’un script PHP, du lexer/parser de code PHP, à la transformation en OPCode ou ByteCode en passant par la construction de l’AST et de sa lecture, tout ceci en nous expliquant comment l’exécution peut aller d’un point à un autre via la directive JMPZ. Cela permet alors de mieux comprendre la conférence de Nicolas Grekas, qui nous a refait son talk « Tirer le maximum de PHP 7 », dont nous avons déjà parlé après le Symfony Live 2018.

Construction d’API, REST et GraphQL sur le devant de la scène

Cette année, les API étaient à l’honneur avec pas moins de 4 conférences. Kévin Dunglas nous a présenté le Serializer de Symfony lors d’une première conférence. Puis dans une deuxième, il nous a fait une comparaison entre REST et GraphQL. GraphQL semble avoir beaucoup d’avantages sur REST (récupération de divers résultats en une seule requête). Cependant, il y a aussi de nombreux défauts (cache, log, authentification, loin du standard HTTP). Les formats hypermédia, comme json+ld ou Hydra, permettent d’avoir des fonctionnalités similaires tout en respectant les standards du Web. Il en a profité pour faire un tour des fonctionnalités d’API-Platform, framework dont il est le lead développeur. Et pour finir, à travers différents cas d’usage, il a fait une comparaison entre les deux formats.

PHP Asynchrone et workers

Joël Wurtz a présenté les différentes façons d’executer des appels asynchrone avec PHP. L’objectif étant de ne pas tomber dans les travers du « callback hell » et d’avoir un code final clair et explicite. Après avoir parlé des Promises, d’Asynit, de ReactPHP et Amp bien sûr, c’est surtout Fiber qui retient toute l’attention. La RFC ouvre la porte d’un PHP où être asynchrone ne serait plus qu’un détail d’implémentation, nous avons hâte !

Nous faisons aussi beaucoup de traitements asynchrones via des messages queues, à ce titre la conférence d’Ulrich Lusseau sur son retour d’expérience avec RabbitMQ était instructive : les erreurs à éviter, les pièges et les recommandations. à voir pour partir du bon pied avec la solution.

La documentation

« Sans documentation, pas de fonctionnalité », c’est le sujet de la présentation effectuée par Sarah Haïm-Lubczanski, Technical Writer chez eZ Systems. Sarah y présente les différentes facettes de son métier et explique à quel point une documentation de qualité, exhaustive et à jour contribue à la valeur d’un produit logiciel. En détaillant plusieurs aspects de son travail quotidien, elle montre qu’il ne suffit pas de livrer de nouvelles versions pour faire évoluer un produit, mais que guider les utilisateurs est nécessaire pour faciliter leur adhésion aux nouvelles fonctionnalités.

Du PHP mais pas que !

Nous avons eu cette année plusieurs conférences qui n’étaient pas centrées sur PHP, ni son écosystème immédiat.

Graou

Une des conférences les plus appréciées de ce PHP Tour était également non-technique : conducteur de train pendant 10 ans, Nicolas Wurtz nous a parlé de GRAOU, l’application qu’il a développé originellement pour aider sa femme à consulter facilement son planning (plutôt complexe) de conducteur de train. Véritable touche-à-tout (ancien ingénieur du son), Nicolas a présenté l’évolution de la plateforme GRAOU (Gestion des Roulements Assistée par OUrdinateur) qu’il a développé et maintenu, seul de son côté, en parallèle de son métier de conducteur. Aujourd’hui utilisée par 18 000 des 20 000 agents roulants de la SNCF, cette application non officielle a recréé du lien entre les différents agents, en leur permettant de s’organiser des sorties, des repas ou autres activités. En effet, avant GRAOU, il n’était pas facile de savoir où se trouve tel ou tel collègue, où et quand le croiser, etc. En mettant en avant la Qualité de Vie au Travail (sujet très important chez JoliCode), Nicolas a su toucher le public et il a eu le droit a une belle standing ovation – définitivement une des conférences les plus appréciées de l’événement ! 👏

Richard Hanna nous a, pour sa part, fait un retour d’expérience très intéressant sur le passage d’une application mobile d’e-learning en site Web PWA (Progressive Web App). Les gains sont nombreux et pas seulement en coût de développement, pour une expérience utilisateur tout aussi bonne. Meilleure interopérabilité, application plus légère (300 ko VS 7 Mo), facile à installer et à mettre à jour, nous approuvons à 100%.

Aurélien David a eu l’occasion de nous parler d’un projet qui lui tient à coeur, Prettier. Ce projet JavaScript est utilisé pour formater le code en suivant un standard et récemment le support de PHP a été ajouté (en alpha) ! Moins configurable que PHP-CS-Fixer certes, cet outil aura l’intérêt de s’intégrer facilement avec les autres formateurs CSS, JS, XML… déjà présents dans nos stacks.

Le contrat de travail

D’autres sujets intéressants ont été présentés, par exemple « décrypter votre contrat de travail », par Hélène Schapira, présentation au cours de laquelle différents aspects de la relation contractuelle salarié-employeur ont été présentés. Par le biais d’un parallèle plus ou moins judicieux – mais néanmoins amusant – avec des notions de programmation, elle a successivement parlé du temps de travail, des responsabilités, de l’étalement du travail, des avantages associés (et dus), ainsi que de la rémunération évidemment.

Il n’est pas possible de passer à côté, à l’approche de sa mise en application le 25 mai 2018, le RGPD est sur toutes les lèvres. à cette occasion, Frédéric Hardy nous proposait de comprendre cette nouvelle réglementation du point de vue d’un développeur.

Pour comprendre comment appliquer ce règlement il faut d’abord comprendre ce à quoi il nous contraint. Et cela commence par la collecte de données. L’un des principaux points traite de cette collecte et nous force, nous développeurs, à demander à nos clients de justifier explicitement la raison de la collecte de chaque donnée personnelle de l’utilisateur, qui doit entrer dans l’un des 6 cadres légaux :

  • Intérêt légitime ;
  • Intérêt vital ;
  • Exécution d’un contrat ;
  • Mission d’intérêt public ;
  • Consentement ;
  • Obligation légale.

Les détails de ces cadres légaux sont détaillés dans l’article 6 du RGPD (Merci NextInpact pour les articles de qualité sur le sujet).

Voici les quelques conseils que nous avons retenu pour faciliter la mise en conformité de nos développements :

  • Travailler en amont avec nos clients sur la pertinence et la justification de chaque donnée personnelle collectée. Retranscrire toutes ces justifications dans un document versionné au même titre que le code ;
  • Rédiger une documentation technique des moyens mis en œuvre pour la sécurisation des données, versionnée également ;
  • Sécuriser systématiquement les supports de stockage des données personnelles (chiffrement des disques), ainsi que des canaux de communications: HTTPS (TLS 1.2 minimum), SFTP à privilégier, HTTP et FTP à bannir ;
  • Mettre en place une sécurité relative à la sensibilité des données stockées ;
  • Attribuer un compte d’administration par personne, ne plus partager le compte admin pour accéder au back-office de production ;
  • Définir une date d’expiration pour chaque donnée collectée ;
  • Rendre révocables par l’utilisateur les autorisations d’utilisation de ses données personnelles ;
  • Monitorer systématiquement les infrastructures de production (accès, bande passante, …) ;
  • En cas de détection de faille, d’intrusion ou de vol de données, prévenir les autorités (CNIL), dans les 72 heures, avec les détails relevés sur l’infraction et la documentation technique (cf. 2) ;
  • Ne jamais utiliser d’export de base de données de production en développement ou en recette. Privilégier les fixtures ;
  • Prévoir l’exportabilité des données personnelles de chaque utilisateur (dans des formats standards comme openSchema, json-schema…) ;
  • Pseudonymiser les données partagées avec des entreprises tierces ;
  • Supprimer les données dont la date d’expiration est révolue.

Adieu

Lego Minifig au PHP Tour

Le PHP Tour va nous manquer et nous avons hâte de voir ce que les Afup Days vont nous réserver. Cette dernière édition a vraiment profité d’une superbe organisation :

  • le cinéma Gaumont comme lieu de conférence était parfait : sièges douillets, grand écran, calme plat pour bien entendre la scène mais aussi les questions de l’auditoire et M&M’s à proximité !
  • un système de retour par gommettes était proposé, permettant de très rapidement et simplement donner un retour sur les conférences vues (comme un « like » mais plus précis), à refaire ;
  • un apéro communautaire très agréable au centre de Montpellier (ainsi que le repas des conférenciers) ;
  • une sélection de sujets qui s’est révélée intéressante, bien que nous n’ayons pas pu voir toutes les conférences, nous pourrons nous rattraper avec la captation vidéo ;
  • une équipe Afup toujours disponible et au service de la qualité de l’événement !

Merci aux organisateurs et à bientôt pour le Forum PHP !

à ce propos, chez nous chaque collaborateur assiste aux conférences de son choix plusieurs fois par an, cela fait partie du job. Nous recrutons, n’hésitez pas à nous contacter !

blog comments powered by Disqus