Mathieu Desnouveaux

Architecture

40 sketchnotes disponibles pour ce thème

🏗️

Architecture logicielle et conception système

Sketchnote illustrant les nouveaux design patterns IA avec Symfony présentée par Titouan Galopin au Symfony Live Paris 2026. Le schéma montre que les design patterns permettent d'écrire du bon code capable d'évoluer. Dans les LLM, l'enjeu est de garantir la maintenance du prompt et du résultat. La difficulté principale : gérer le changement. DSPy est présenté avec son pipeline : Intention + Dataset d'évaluation → Génération Prompt → Optimisation (attribuer un score au résultat d'un prompt avec des heuristiques) → Prompt Final. Le dataset d'évaluation peut être généré par l'IA. La non-régression consiste à refaire le processus et mesurer la différence.

Les nouveaux design patterns IA avec Symfony

Publié le 31 mars 2026
Par Titouan Galopin
🐘 PHP 🤖 AI/ML 🏗️ Architecture
📅 Symfony Live
Sketchnote illustrant l'utilisation de JSON avec SQL présentée par Rémy Bonfils et Olivier Fourny au Symfony Live Paris 2026. Le schéma montre la promesse (données structurées) vs la réalité (CSV sans structure, 80 000 configs possibles, enrichissement futur). La fausse bonne idée EAV (1 table, 1 attribut par ligne, 1 item = x lignes) est écartée. La solution retenue : stocker une modélisation JSON. Les avantages : optimisation en mappant le JSON en objet, manipulation du JSON en BDD via JSON Function et Doctrine, et surtout la possibilité de faire évoluer les modèles sans modifier toute l'application.

JSON + SQL : hérésie ou élégance ? Retour d'expérience

Publié le 31 mars 2026
Par Rémy Bonfils & Olivier Fourny
🐘 PHP 📊 Data 🏗️ Architecture
📅 Symfony Live
Sketchnote illustrant l'héritage Doctrine présentée par Rémi Janot au Symfony Live Paris 2026. Le schéma montre un exemple d'héritage PHP : Admin (login, password, permission), Customer (login, password, address) et User (login, password) avec héritage en PHP. La question "Comment en DB ?" est posée. Le discriminant est un type dans la table User mère avec des options : index, discriminator map, enum PHP, limiter les niveaux d'héritage. Il existe aussi la Mapped Superclass. Deux stratégies sont comparées : STI (Single Table Inheritance) avec une table unique, adapté pour peu de types, mais génère beaucoup de champs nullables par type. CTI (Class Table Inheritance) avec des tables filles jointes avec l'id de la table mère, sans champs en plus mais avec un coût des jointures, utiliser des index.

Doctrine Inheritance

Publié le 31 mars 2026
Par Rémi Janot
🐘 PHP 📊 Data 🏗️ Architecture
📅 Symfony Live
Sketchnote illustrant les sidekicks applicatifs Symfony présentée par Nicolas Grekas au Symfony Live Paris 2026. Le schéma compare PHP (stateless by design, protégé mais difficile de toucher sa config) et FrankenPHP (Worker Mode, permet de lancer de l'action entre les requêtes). Le pipeline Worker HTTP montre : Sidekick → Tableau Blanc (set_vars, limité aux scalaires) → Thread HTTP (get_vars). Un exemple concret : un sidekick maintient à jour une liste de feature flags ou autre config en temps réel. Les usages incluent Health Monitoring, Service Discovery, Cache Invalidation et Feature Flags. L'intégration couvre Auto Configuration, Mode Hybride, FrankenPHP, Worker et Puppet. Les tâches à venir permettront de pousser des tâches aux workers.

Reconfigurer Symfony en temps réel avec des sidekicks applicatifs

Publié le 31 mars 2026
Par Nicolas Grekas
🐘 PHP 🏗️ Architecture 🚀 Performance
📅 Symfony Live
Sketchnote illustrant les filtres API Platform présentée lors d'un meetup AFUP Lorraine. Le schéma explique qu'un filtre permet de limiter des ressources selon des critères par des attributs sur nos entités (ORM/ODM & Elastic Search). Il y a une refonte suite à l'arrivée de la compatibilité avec Laravel. Le découpage d'un filtre fourre-tout (SearchFilter avec IRI Filter, Exact Filter, Partial Filter, OR Filter, etc.) devient plus simple et respectueux. Les filtres plus simples montrent l'usage d'objets > tableaux pour la maintenance du framework et la possibilité de créer ses filtres personnalisés avec un Query Builder. Le Parameter Provider permet de transformer un paramètre (URI + parent + chain + resource) et la documentation automatique. La génération par Maker ainsi que la migration sans BC break avec les commandes Maker & Rector pour migrer.

API Platform : repenser les filtres

Publié le 30 novembre 2025
Par Vincent Amstoutz
🐘 PHP 🔗 API 🏗️ Architecture
📅 AFUP Lorraine
Sketchnote illustrant les principes SOLID et l'injection de dépendances pour la performance au Forum PHP 2025. Le schéma montre les 5 principes SOLID (S-Responsabilité unique n'avoir qu'une seule raison de changer, O-Ouvert/Fermé ouvert à l'extension fermé à la modification on peut empiler des couches sans tout changer, L-Substitution de Liskov permet d'utiliser n'importe quelle classe fille, I-Ségrégation des interfaces réduit les interfaces et évite le couplage, D-Inversion de dépendance dépendre d'abstraction). Deux moments d'utilisation: 1-Au build (chercher les implémentations, ajout dans un fichier PHP), 2-Au runtime (on utilise le fichier). Extensions via décorateur (compiler pass) ou un attribut. L'injection de dépendance utilise les attributs pour identifier, configurer et décorer les dépendances. Pour résoudre des problèmes de perf, la solution est Lazyness avec un paresseux qui dit 'voir les détails dans la doc'.

PERF & Injection de dépendance - Êtes-vous assez paresseux-ses

Publié le 30 novembre 2025
Par Nicolas Grekas
🐘 PHP 🏗️ Architecture 🚀 Performance
📅 Forum PHP
Sketchnote illustrant Kubernetes de manière visuelle présentée au Forum PHP 2025. Le schéma explique comment représenter un Pod (Pokeball avec Kube logo - un chef d'orchestre). Le Node peut être une machine physique ou virtuelle, contenant la plus petite unité déployable (Pod avec containers). Le Service permet DNS, IP, Alias pour accéder au Pod. Le Namespace permet l'isolation des ressources. Les Jobs sont des processus longs (ponctuel, séquentiel, parallel) et les CronJobs sont des jobs périodiques. Le ConfigMap contient Config (clé) avec Pod et Secret (cadenas). Tout le monde est différent est illustré au bas.

Understanding Kubernetes The Visual Way

Publié le 30 novembre 2025
Par Aurélie Vache
🔧 DevOps 🏗️ Architecture
📅 Forum PHP
Sketchnote illustrant 4 design patterns pour la résilience présentée au Forum PHP 2025. Le schéma commence par 'tout échoue tout le temps' avec le principe de réduire le blast radius et ne laisser pas un processus attendre pour rien. La corrélation entre les requêtes est expliquée (tout le monde en même temps mène à différer les requêtes et différer les retry). Quatre stratégies sont présentées: étaler les crons et multiplier les queues avec introduction de l'aléatoire (ampoule), constant work (engrenage - préparer les réponses avant de recevoir les requêtes), attention à la variabilité avec pic d'activité aléatoire et préparer les réponses, découper en cellules indépendantes (ciseaux), et shuffle sharding (dé - répartir aléatoirement les ressources).

4 design patterns avancés pour améliorer la résilience d'une application

Publié le 30 novembre 2025
Par Pascal Martin
🏗️ Architecture 🚀 Performance
📅 Forum PHP
Sketchnote illustrant l'utilisation des monades pour archiver efficacement de grands volumes de données, présentée au Forum PHP 2025. Le schéma montre le contexte d'archivage de documents avec métadata et binaire, l'idée initiale de streaming de données avec Generator puis logique puis foreach, mais cela mène à une composition de générateurs qui rend le système complexe. Pour simplifier, les monades sont présentées comme une solution de programmation fonctionnelle divisée en préparation, action et testable sans contexte lourd (stateless). Des composants utiles sont présentés: ORM monadisé, Filesystem monadisé, et Encoding monadisé.

Archiver efficacement de grands volumes de données grâce aux monades

Publié le 30 novembre 2025
Par Baptiste Langlade
🐘 PHP 🏗️ Architecture 📊 Data
📅 Forum PHP
Sketchnote retraçant l'évolution de l'injection de dépendances dans Symfony. Chronologie: Vanilla PHP (instanciation directe), Symfony 1 (2007, sfContext), Symfony 2 (2011, conteneur de services), Symfony 2.7 (autowiring), API Platform 1 (2015), API Platform 2 (2016), Symfony 3.3 (2017, 'magic' API resource basée sur le conteneur de services + tag manuel), Symfony 4 (configuration automatique, service privé avec optimisation), Symfony 5.3 PHP8 (2019, arrivée des attributs), Symfony 6 (2021, les attributs deviennent la norme), API Platform 3 (2022, state processor), Symfony 7 (2023, autowire, iterator). Flèche descendante indique 'un parcours évolutif vers une simplification'.

Symfony & l'injection de dépendances : du passé au futur

Publié le 29 novembre 2025
Par Imen Ezzine
🐘 PHP 🏗️ Architecture
📅 API Platform Conference
Sketchnote sur l'Event Storming appliqué aux projets API Platform. Le schéma montre l'objectif d'apporter de la valeur via un atelier collaboratif avec toutes les parties prenantes. L'Event Storming décrit l'application (actions, acteurs, données, systèmes externes) et produit des résultats: agrégats, documentation de l'application, porte l'intention, rassemble code et métier. La distinction Command/Query par rapport à CRUD est expliqué avec la disctinction intention/valeur vs data. L'objectif rappelé est la diffusion de l'intention par propagation d'événements qui conservent l'intention.

Et si on utilisait l'Event Storming dans nos projets API Platform

Publié le 29 novembre 2025
Par Grégory Planchat
🏗️ Architecture 👥 Management
📅 API Platform Conference
Sketchnote illustrant les design patterns essentiels . Sept patterns sont présentés avec leurs diagrammes: Strategy (permet de gérer des algorithmes similaires), Adapter (transformation d'interface vers API/DB), Factory (options vers objet), Builder (utile dans les tests, chaîne de construction d'objet), Proxy (objet intermédiaire), Observer (regarde l'objet, exécute le code de l'observer si l'observé bouge), Decorator (pour ajouter un comportement à un objet), Facade (masque la complexité), et Chain of Responsibility (pour enchaîner les comportements).

Design Pattern: le trésor est dans le vendor

Publié le 29 novembre 2025
Par Smaine Milianni
🏗️ Architecture 🐘 PHP
📅 API Platform Conference