Php Tour 2016

PHPTour 2016 – Jour 2

Par SynoLab le 24 mai 2016

 Lecture 6 minutes

Après une (très) bonne soirée au bar "Le delirium", et une (très) bonne nuit, nous voilà repartis pour une seconde journée au PHP Tour de l'AFUP.

Performance Optimization

Fabien Potencier @fabpot

Pour commencer ce deuxième jour c’est le créateur de Symfony qui a parlé d’un autre bébé de sa société Sensiolabs: Blackfire. Il a donc été question de moyens d'analyser le code, utiliser des métriques et des schémas d’exécution pour optimiser le rendu d’une application PHP. Quelques punchline nous ont marqué et méritent d'être citées :

  • Optimiser la performance n'est pas optimiser le temps mais l'algorithme
  • Le temps n'est qu'une conséquence
  • The performance is a feature !

Les Webhooks: véritable levier d'intégration de votre application

Guillaume Potier @guillaumepotier

Présentation de la notion de webhook qui permet de déclencher des appels à des services externes lors d’évènement spécifique. C’est donner le pouvoir à l’utilisateur/client de connecter des applications entre elles. Par exemple dans une application de gestions de réunions, permettre à l’utilisateur de dire qu’à chaque sauvegarde il envoi sa réunion dans un Google Calendar. Pour cela il faut principale de la gestion d’appel API mais aussi de la gestion de file d’attente AMQP avec du RabbitMQ par exemple. Guillaume a répondu aux questions concernant la gestion de l’erreur/inacceccibilité du service tiers : par exemple au bout d’échec de N webhook consécutif vers un service alors le webhook se désactive et un email de service par pour prévenir du problème.

De 7 à 3s: retour d'experience sur la performance web sur Decitre.fr

Sébastien Rogier @srogier (http://srogier.github.io/presentation-web-performance-decitre/)

Superbe presentation de Sébastien qui nous offre un retour concret sur des optimisations que vous aviez peut être en tête. Cette présentation le prouve : ces actions sont efficaces. L'originalité de cette intervention réside dans le fait que les optimisations en questions résident dans le front office. On notera des actions comme la réduction de resources à télécharger (via l'utilisatin de data uri dans les cas par exemple), le Lazy Loading pour les images, etc.
Sébastien nous a également présenté quelques outils comme tinypng ou encore requestmap.webperf.tools.
Enfin, il a insisté sur le fait d'intégrer la performance à la culture d'équipe.

Prenons soin de nos microservices

Samuel Roze @samuelroze

En parfaite continuité avec les webhook, Samuel a parlé de tout ce qui a trait aux microservices. Il nous a présenté une librairie intéressante : Tolerance. Cette librairie permet de traiter toute la notion d’appel, de réessaie, d’erreur pour rendre un service non bloquant afin qu’il ne mette pas en péril toute la chaine. Le microservice permet aussi d’avoir des équipes (1 équipe = 1 service) indépendantes. Il présente un design global qui indique comment un service peut être interrogé et ce qu’il rend. Ensuite chacun est totalement autonome pour mettre en place son service sur la technologie qu’il veut, via l’hébergement qu’il veut, etc. Pour cela rien de mieux que des conteneurs et un Kubernetes pour les orchestrer.

Advanced package development

Hannes Van De Vreken @hannesvdvreken

Très proche de la conférence de Matthieu Napoli sur les bonnes pratiques de publication d’un projet. Un gros focus a été fait sur la dépendance d’une librairie qu’on publie avec d’autres librairies.

Soyez doux avec votre prod.

Olivier Dolbeau, Benjamin De Bernardi (https://speakerdeck.com/odolbeau/be-gentle-with-your-prod)

Explication de comment BlaBlaCar utilise les Toggles Features pour pousser des fonctionnalités en production et les activer partiellement (sur un pays, une population spécifiques, des utilisateurs avec certains badges, sur mobile uniquement, etc) afin de les déployer totalement sur la plateforme. Pour cela ils ont sélectionné la librairie Qandidate qui gère entre autre de nombreuses stratégies permettant d’activer/désactiver les features.

Retour d’expérience : réaliser des Workers en PHP

Fabien de Saint pern @fabdsp

Retour d’expérience de la mise en place des Workers chez M6Web. Il a été question de RabbitMq mais aussi des dangers de surarchitectures. En effet pour un besoin précis il avait été mis en place un appel api permettant d'envoyer des données dans une queue, RabbitMQ consommait cette queue pour faire une mise en jour. Au final, cela produisait un overhead très fort alors que la mise à jour effective était traitée en un temps vraiment très minime. En conséquence, tout cela a été simplifié pour alléger le temps de traitement.

Performances PHP7 contre PHP5

Julien Pauli @julienPauli

Julien nous a présenté une conférence très précise sur les performances de PHP7. Nous avons pu aborder le comportement de l'opcode selon de nombreux cas et nous avons pu découvrir quelques astuces utiles. Par exemple, l'utilisation de fonctions natives doivent être préfixées de l'antislash, pour éviter le test de fallback, ou encore l'utilisation de variables encapsulées dans les chaînes plutôt que la concaténation. Enfin, il nous a également donné de nombreux aspect mis à jour comme l'optimisation des zval, la réécriture de l'allocateur mémoire, etc.

Scaler du legacy, coûte que coûte

Nicolas Le Nardou @nktox

Encore un retour d’expérience de chez Materiel.Net sur comment une période de solde qui a fait tomber le site a été le déclencheur d’une refonte de celui-ci. Le site était dans un code et une architecture très vielle dont le leitmotiv était : "houlà cette partie là sa marche on ne va pas y toucher." De nombreuses petites retouches ont été faites en plusieurs fois entre deux périodes de charges ecommerce (deux périodes de soldes) pour résorber cette dette. Encore une fois, nous avons a parlé d’automatisation, de tests et de métriques offrant des retours rapides sur les bénéfices ou les mauvais effets d’un développement.

Conclusion

Belle édition que ce PHP Tour 2016 ! Merci à l'AFUP et Clermont'ech pour ce bel évènement.

Nous espérons que ce petit retour vous donnera envie de nous retrouver à un évènement AFUP très bientôt.

GIF