Code Rhapsodie s’est rendu au Forum PHP 2019 organisé par l’AFUP.
Ce forum a été placé sous le signe de l’inclusion et le respect en mettant en place cette année la vélotypie et rappelant le code de conduite de l’AFUP. L’écologie a eu aussi une place importante avec un grand effort de recyclage et la mise en place d’une boite à troc de goodies. Les conférences ont été variées même si certains thèmes tels que le Domain Driven Development (DDD), les tests, la programmation défensive et la résilience ont été très présents.
L’événement s’est conclu en rappelant que le Call For Papers pour l’AFUP day est ouvert jusqu’au 25 novembre.
Nuno Maduro nous conseille dans sa conférence de faire de la programmation défensive, en pensant ainsi que la pire situation possible arrivera.
Ils nous a présenté ses idées en 7 points:
Une conférence en anglais très abordable, claire et avec des exemples pratiques.
Clean Architecture = Architecture Hexagonale + Onion Architecture + Streaming Architecture + MVP + Use-Case Driven Approach
Pour éviter que vos projets deviennent impossibles à maintenir, et ne plus savoir où mettre le nouveau code, Nicolas de Boose recommande de mettre en place la clean architecture.
Suivre cette architecture demande en général d’avoir plus de classes et il y a besoin d’un certain temps pour s’y adapter, cependant cela rendra votre code indépendant et facilement testable. Elle peut s’avérer très utile quand le métier est complexe et qu’un simple CRUD n’est pas suffisant. Sur un site web vitrine, il y a peu de chance que cela soit nécessaire, par exemple.
Une question qui revient souvent avec ce type d’architecture : où mettre le code ?
Pour répondre il faut d’abord répondre à la question : qui demande l’ajout du code ?
Retrouvez les slides ici.
“Les choses vont échouer, c’est un fait”.
Pour Pascal, quand on parle de disponibilité d’une application, nous ne visons pas une application qui fonctionne toujours mais plutôt une application qui fonctionne bien presque tout le temps.
Ainsi, nous pouvons envisager d’attribuer une quantité de 9 que l’on souhaite pour notre application. Par exemple une application qui soit disponible 99.9% du temps ou que 99.9% des requêtes réussissent.
Il peut être tentant de partir sur une structure de microservices, mais il faut être vigilant à ce que l’on promet à notre client puisque les temps de disponibilité se multiplient entre des services qui dépendent les uns des autres. Avec des schémas simples fait à la main et plein d’humour, Pascal nous explique tout cela.
Il introduit ainsi trois concepts :
Dans sa conférence, Pascal nous donne aussi plein de conseils et nous rappelle de penser utilisateur, les métriques sont importantes mais si l’utilisateur n’est pas content, il ne reviendra pas. Parfois, fonctionner en mode dégradé est plus intéressant que ne pas fonctionner du tout.
Faisant suite à la conférence de Pascal, Mickaël Andrieu nous a parlé d’un cas précis d’application résiliente.
Suite à une mauvaise expérience avec le dashboard de PrestaShop qui avait arrêté de fonctionner à cause d’une petite partie de celui-ci, il nous rapporte les clés de ce qui leur a permis d’améliorer la plateforme.
D’abord, il nous conseille d’améliorer notre infrastructure : faire appel à des services à haute disponibilité.
Puis, d’améliorer notre code : faire des requêtes avec des timeout, du code non bloquant, prévoir des fallback en cas de problèmes et surtout pouvoir fonctionner en mode dégradé.
Ainsi, il nous a présenté le pattern du circuit breaker et la librairie qu’il a développé et intégré à Prestashop. L’idée est d’avoir la maîtrise sur le comportement dégradé, d’être capable de fournir une réponse dégradée mais aussi de réessayer auprès d’un service externe.
Combinée avec la conférence de Pascal, ces deux conférences donnent un bel aperçu de comment rendre son application résiliente.
Paula et Antonio nous ont mis en garde de l’importance de faire des tests. Entre autres pour réduire les bugs, faciliter le refactoring et gagner du temps et de l’argent.
Ainsi, ils nous ont parlé de tests unitaires, tests d’intégration et tests fonctionnels à travers un exemple de puzzle simple et clair.
La conférence est en anglais, mais très abordable également. Si vous avez encore des doutes sur l’importance des tests, on vous la recommande !
Paul Molin est venu nous parler des failles le plus courantes en PHP à travers d’exemples concrets et quelques conseils. Dans sa conférence, il aborde le XSS, les problèmes de droits d’accès, les injections SQL, les exécutions de code en remote, les CSRF, le déni de service, les XXE et les dépendances vulnérables.
Alex Rock se confie à nous dans sa conférence pour nous avouer qu’il est autiste et nous parler des personnes neuro-atypiques en général et des difficultés rencontrées au quotidien.
Il nous explique que pour les autistes, le comportement social doit être acquis et non pas induit ce qui peut rendre les interactions sociales difficiles. Ainsi, même si cela paraît évident, le mieux à faire lorsqu'on rencontre quelqu’un est de suspendre son jugement et d’être à l’écoute.
Dans sa conférence, Alex nous montre qu’il y a différentes neuro-atypies ainsi que différentes causes et conséquences de celles-ci.
Il nous donne quelques conseils pour le recrutement de personnes neuro-atypiques :
Une conférence très intéressante et touchante que l’on vous recommande !
Avec un duo théâtral, Marie-Cécile Godwin et Thomas Di Lucco nous invitent à réfléchir sur le futur en nous partageant des futurs fermés, qui ne sont plus possibles et des futurs ouverts vers lesquels on peut toujours aller. Si le développement durable vous intéresse et que vous rêvez d’un meilleur futur, on vous recommande cette conférence.
Encore une conférence théâtrale et atypique de François Zaninotto. Cette fois-ci, il incarne Eugène Fournier un professeur en sciences spécialisé en insectes. A travers une métaphore comparant agilité et sélection naturelle, il nous invite à réfléchir sur pourquoi l’agilité fonctionne en entreprise et de plus en plus d’entreprises l’adoptent.
Marco Pivetta commence sa conférence avec entre autres cette diapositive “PHP est horrible, l’expérience est le roi”, son conseil est : “appropriez-vous de la qualité de votre code pour sortir de la boucle infinie des dates boutoir qui enchaînent avec du travail et des missions pompiers où l’on a jamais du temps pour faire de la qualité”.
Pour cela il nous propose quelques conseils :
Nicolas Grekas est venu nous présenter le Symfony HTTPClient
C’est un nouveau client HTTP pour PHP qui propose quelques avantages :
Retour d’expérience sur le passage du site Meetic du “MVC = CRUD” au “DDD”.
Le métier de Meetic est complexe et en constante évolution. Ils doivent répondre à des problématiques légales et éthiques dans de bonnes conditions. L’utilisation des entités avec les getters/setters générant de plus en plus de problèmes, il fallait aller vers autre chose.
Le DDD avec ces nombreux concepts (découplage du métier et de la technique, architecture en oignon, architecture hexagonale...) et designs patterns (CQRS, ES, Port & Adapter) leur a apporté de nombreux réponses.
Le découplage des décisions techniques et des décisions métiers leur sert de guide pour savoir où placer le code (dans l'hexagone ou en dehors).
Ainsi, il peuvent être à jour sur l’utilisation de toutes les librairies tierces utilisées (car le code est lié à la technique et donc en dehors de l'hexagone).
Mathieu Napoli nous présente son retour d’expérience sur la recherche de “LA SOLUTION PARFAITE”. Cette dernière n'existant pas la solution dépend du problème et doit être adaptée à la situation.
La solution dépend du métier (complexité, criticité), du business (selon la phase : exploration, extension, extraction) et des humains (compétences, stabilité de l’équipe...).
Selon lui, la complexité technique doit être inférieure ou égale à la complexité métier. Au final, un code legacy c’est un projet qui a réussi.
Le découpage courant des projets est horizontal (ex: DB, ORM, Repository, Entity et Service, Controller) alors qu’un découpage vertical apporte plus de solutions.
Le découpage par module permet de traiter chaque module séparément et parfois avec des solutions complètement différentes. Ainsi, la cohérence n’est plus une priorité.
La duplication du code en fonction du contexte métier n’est pas un gros mot tout comme CRUD, SQL, et HARDCODER.
L’architecture est progressive car elle s’adapte au cas actuel pour y répondre.
Retrouvez les slides ici
Roland Lehouc nous explique avec humour des concepts de physique en s’appuyant sur Star Wars: la force, la puissance, l’effet joule ...
Ainsi nous avons découvert qui est le jedi le plus puissant ! Regardez sa conférence et découvrez la réponse !
To celebrate the release of Dataflow 5 for Symfony 7, here is some feedback on ...
🎯 Nous relevons le défi de lancer un grand concours : Vous faire gagner un ...
How to dynamically calculate shipping costs? The official documentation that explains how to create shipping ...
How to create a new product attribute type in Ibexa Commerce
A la recherche d'un poste de travail temporaire ou permanent ? Vous recherchez un environnement ...
Après une découverte de surface d'Ibexa Commerce, entrons plus dans le détail pour comprendre son ...
Ibexa DXP propose un module pour gérer des produits pour la réalisation d'un site e-commerce. ...
Voici une présentation d'IbexaMailing, un module qui ajoute la gestion des newsletters à Ibexa. IbexaMailing est ...
C'est la dernière occasion de vous souhaitez le meilleur pour cette année 2024 et surtout ...
To celebrate the release of Dataflow 5 for Symfony 7, here is some feedback on ...
🎯 Nous relevons le défi de lancer un grand concours : Vous faire gagner un ...
How to dynamically calculate shipping costs? The official documentation that explains how to create shipping ...
How to create a new product attribute type in Ibexa Commerce
A la recherche d'un poste de travail temporaire ou permanent ? Vous recherchez un environnement ...
Après une découverte de surface d'Ibexa Commerce, entrons plus dans le détail pour comprendre son ...
Ibexa DXP propose un module pour gérer des produits pour la réalisation d'un site e-commerce. ...
Voici une présentation d'IbexaMailing, un module qui ajoute la gestion des newsletters à Ibexa. IbexaMailing est ...
C'est la dernière occasion de vous souhaitez le meilleur pour cette année 2024 et surtout ...