SlideShare a Scribd company logo
1 of 43
Performance au quotidien
#Symfony
Xavier Leune
@beoneself
Le groupe
Nos chiffres
+ 60 M VU Monde (Comscore)
+ 24 M VU France (Mediametrie - Desktop)
+ 700M Pages Vues
Trop confiant ?
Oh no
La perf avant tout
100
ms
8
Mo
10
Req
Réduire le coût
Source : Institut de l’estimation au doigt mouillé
Les technos historiques
Ou à construire
Un framework à choisir
Technique de l'entonnoir
Analyse
Benchmark
Etude complète
12
6
3
Mais pas le plus rapide
Symfony est le plus
mature
Lower is better
1
2.4
0.4
4
0
1
2
3
4
5
Consommation Mémoire
CCMBase Laravel Plain PHP Symfony
0
10
20
30
40
50
Consommation CPU
CCMBase Laravel Plain PHP Symfony
Supporter jusqu’à 100 000 rps
Point de blocage: l’ORM
Notre outil devra être conçu pour être
performant
Performance
Active Record… Seriously ?
Le pattern DataMapper
Les dévs doivent savoir ce qu’ils font
Pas d’abstraction
Eager Loading / Lazy Loading : Jamais la
bonne réponse
Un no-RM
Qui souhaite apprendre un méta langage
pour écrire des requêtes ?
Raw SQL
La Developer eXperience avant tout
DX
http://tech.ccmbg.com/ting/
La vitesse de requête ne fait pas tout
Optimisez votre cache privé!
ESI / 304 à l’origine
Optimisez votre cache public !
Les ESI : un fonctionnement méconnu
<esi:include
src="http://example.com/footer"
onerror="continue" />
Les 304 : Une page toujours à jour
Visiteur Proxy
GET /produit
Backend
GET /produit
Page en cache ?
200 OK
Non
Oui
200 OK
GET /produit
If-Modified-Since: Sun, 03
Apr 2016 18:14:00 GMT
304 Not Modified
Déploiement et bonnes pratiques
Attention au cache Symfony
Sinon c’est plus vraiment du cache
Jamais de compilation en prod
Composer install : Le piège
Composer install : Masterisé
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-cache-warmup": true,
"symfony-assets-install": "hard"
}
Process de déploiement
Serveur
d’admin
1 – Git pull
2 – Build phing
• composer install
• compilation sass
• …
Rsync en parallèle
Apache graceful
Le workflow complet
Zoom out
Un process agile: côté Dév
Création d'une
branche
Développement
{ CI }
Intégration continue Déploiement &
Monitoring
Let's focus on brackets
Peer Review Tests unitaires
Tests fonctionnels Test utilisateur
Analyse et correction
1
2 3
Broken By Design Development
BBDD
Choix des métriques
tests:
"Performance générale":
path: "/*"
assertions:
- "main.cpu_time <= 100ms"
- "metrics.sql.queries.count <= 10"
- "main.peak_memory <= 10mb"
- "metrics.output.network_out <= 250kb"
Création des scénarios
scenarios:
HP horoscope:
- /psychologie/horoscope/
HP zodiac:
- /psychologie/horoscope/zodiaque/
Prevision belier du jour:
- /psychologie/horoscope/zodiaque/belier-
jour/
Back to brackets
Peer Review Tests unitaires
Tests fonctionnels Test utilisateur
Tests de
performance
Attention à vos assets…
Front-End != Magic
Merci ! Questions ?
On recrute !
http://tech.ccmbg.com/blog/
http://tech.ccmbg.com/ting/
@beoneself

More Related Content

What's hot

Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.netMSDEVMTL
 
04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core 04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core Cellenza
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA Cellenza
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, LinuxYasmine Amrani
 
Redeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationaleRedeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationaleKaliop-slide
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Wixiweb
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...TheFamily
 
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015Wisembly
 
L’intégration continue et le déploiement continu chez PMCtire
L’intégration continue et le déploiement continu chez PMCtireL’intégration continue et le déploiement continu chez PMCtire
L’intégration continue et le déploiement continu chez PMCtireBenoit St-André
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC Cellenza
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECSylia Baraka
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overviewSymfonyMu
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3MSDEVMTL
 
Synchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codeSynchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codegplanchat
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorFlorian Beaufumé
 

What's hot (20)

Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.net
 
04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core 04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
 
Redeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationaleRedeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationale
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Dev dev devs
Dev dev devsDev dev devs
Dev dev devs
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
 
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015
 
L’intégration continue et le déploiement continu chez PMCtire
L’intégration continue et le déploiement continu chez PMCtireL’intégration continue et le déploiement continu chez PMCtire
L’intégration continue et le déploiement continu chez PMCtire
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPEC
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3
 
Synchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-codeSynchroniser ses applications plus rapidement avec du low-code
Synchroniser ses applications plus rapidement avec du low-code
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 

Viewers also liked

lafourchette.com table sur Esker pour l’envoi de ses factures
lafourchette.com table sur Esker pour l’envoi de ses factureslafourchette.com table sur Esker pour l’envoi de ses factures
lafourchette.com table sur Esker pour l’envoi de ses facturesESKER
 
Cas client La fourchette
Cas client La fourchetteCas client La fourchette
Cas client La fourchetteESKER
 
Rapport La Fourchette
Rapport La FourchetteRapport La Fourchette
Rapport La FourchetteJules Martin
 
Food & Tech Startups
Food & Tech StartupsFood & Tech Startups
Food & Tech StartupsCedric Giorgi
 
e-réputation et réservation en ligne, deux outils clés de la commercialisatio...
e-réputation et réservation en ligne, deux outils clés de la commercialisatio...e-réputation et réservation en ligne, deux outils clés de la commercialisatio...
e-réputation et réservation en ligne, deux outils clés de la commercialisatio...echangeurba
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfonyJeremy Gachet
 
Restaurants et tripadvisor, de consultation à transaction.
Restaurants et tripadvisor, de consultation à transaction.Restaurants et tripadvisor, de consultation à transaction.
Restaurants et tripadvisor, de consultation à transaction.Frederic Gonzalo
 
Comment et pourquoi mesurer le trafic référent?
Comment et pourquoi mesurer le trafic référent?Comment et pourquoi mesurer le trafic référent?
Comment et pourquoi mesurer le trafic référent?Frederic Gonzalo
 

Viewers also liked (8)

lafourchette.com table sur Esker pour l’envoi de ses factures
lafourchette.com table sur Esker pour l’envoi de ses factureslafourchette.com table sur Esker pour l’envoi de ses factures
lafourchette.com table sur Esker pour l’envoi de ses factures
 
Cas client La fourchette
Cas client La fourchetteCas client La fourchette
Cas client La fourchette
 
Rapport La Fourchette
Rapport La FourchetteRapport La Fourchette
Rapport La Fourchette
 
Food & Tech Startups
Food & Tech StartupsFood & Tech Startups
Food & Tech Startups
 
e-réputation et réservation en ligne, deux outils clés de la commercialisatio...
e-réputation et réservation en ligne, deux outils clés de la commercialisatio...e-réputation et réservation en ligne, deux outils clés de la commercialisatio...
e-réputation et réservation en ligne, deux outils clés de la commercialisatio...
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 
Restaurants et tripadvisor, de consultation à transaction.
Restaurants et tripadvisor, de consultation à transaction.Restaurants et tripadvisor, de consultation à transaction.
Restaurants et tripadvisor, de consultation à transaction.
 
Comment et pourquoi mesurer le trafic référent?
Comment et pourquoi mesurer le trafic référent?Comment et pourquoi mesurer le trafic référent?
Comment et pourquoi mesurer le trafic référent?
 

Similar to Performance au quotidien dans un environnement symfony

Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureMarc Nazarian
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishD
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019Eric Para
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
PrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3Nicolas Lœuillet
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Techniques accélération des pages web #kiwiparty
Techniques accélération des pages web #kiwipartyTechniques accélération des pages web #kiwiparty
Techniques accélération des pages web #kiwipartyJean-Pierre Vincent
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...Fabien Potencier
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentationyllieth
 
Princesse CI au pays des tests
Princesse CI au pays des testsPrincesse CI au pays des tests
Princesse CI au pays des testsHubert Lenoir
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation SymfonyJeremy Gachet
 
S43 passer à php 7 sous IBM i
S43   passer à php 7 sous IBM iS43   passer à php 7 sous IBM i
S43 passer à php 7 sous IBM iGautier DUMAS
 

Similar to Performance au quotidien dans un environnement symfony (20)

Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - Varnish
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
PrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShopPrestaShop Day Paris - le futur de PrestaShop
PrestaShop Day Paris - le futur de PrestaShop
 
Intégration Continue et PHP
Intégration Continue et PHPIntégration Continue et PHP
Intégration Continue et PHP
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
 
Symfony à la télé
Symfony à la téléSymfony à la télé
Symfony à la télé
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Techniques accélération des pages web #kiwiparty
Techniques accélération des pages web #kiwipartyTechniques accélération des pages web #kiwiparty
Techniques accélération des pages web #kiwiparty
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentation
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 
Symfony et le Web
Symfony et le WebSymfony et le Web
Symfony et le Web
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
Princesse CI au pays des tests
Princesse CI au pays des testsPrincesse CI au pays des tests
Princesse CI au pays des tests
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation Symfony
 
S43 passer à php 7 sous IBM i
S43   passer à php 7 sous IBM iS43   passer à php 7 sous IBM i
S43 passer à php 7 sous IBM i
 

Performance au quotidien dans un environnement symfony

Editor's Notes

  1. 4 sites dans le top 40
  2. Il ne manquerait pas quelque chose ? Les tests de performance ! Difficiles à automatiser (qu'est ce que je mesure et comment) ? Reprenons cette présentation au début
  3. Pourquoi on est aussi sévères Pourquoi varnish / le cdn ne sont pas les seules bonnes réponses 10 To de RAM pour varnisher tous nos sites
  4. De la même manière que pour un bug, plus la détection est tardive, plus le nombre de personne mobilisé augmente et plus l’impact business est important. Effet cascade d'une requête qui prend trop de temps
  5. PHP Postgresql MariaDB Memcached Redis Varnish Akamai
  6. Quel type d'outil ? Un framework full stack ou un micro framework ? Comment s'assurer qu'on a toujours de bonnes performances. Etude pour choisir le nouveau framework
  7. Et là, bingo, on confirme toutes les théories sur le fait que les framework full stack, c'est long et lourd.
  8. Symfony s’en sort légèrement mieux que laravel en conso CPU. Par contre en mémoire il s’agit du plus gourmand. Evidemment le plain PHP est bien plus rapide que l’ensemble des des frameworks testés et sert de groupe test. Le fmraework
  9. Doctrine est un bon outil, cependant il ne répond pas à nos contraintes  comment faire dès lors ?
  10. Pour un project long terme, Active Record n’est pas un bon choix. D’ailleurs c’est considéré comme un anti pattern  Séparation des responsabilités!
  11. Pour un project long terme, Active Record n’est pas un bon choix. D’ailleurs c’est considéré comme un anti pattern  Séparation des responsabilités!
  12. On ne développe pas des librairies mais des implémentations. Nous avons actuellement Postgresql & MariaDb  on souhaite pouvoir utiliser les syntaxes spécifiques de ces outils lorsque c’est nécessaire.
  13. On ne développe pas des librairies mais des implémentations. Nous avons actuellement Postgresql & MariaDb  on souhaite pouvoir utiliser les syntaxes spécifiques de ces outils lorsque c’est nécessaire.
  14. Un outil Open-Source qui répond à nos contraintes Le TingBundle pour l’intégrer à Symfony Le TingUserBundle pour exploiter FosUserBundle
  15. Pour optimiser son cache de requête  le cache infini est la meilleure solution  Je supprime les données du cache à chaque fois qu’elles sont modifiées à la source.
  16. Pseudo standard  soumis en 2001 au W3C qui ne l’a pas approuvé Très simple dans l’absolu: on intègre un code XML Fonctionnement intégré nativement à Symfony  génération automatique des URL de fragment: il suffit simplement d’activer le support des ESI sur son reverse proxy
  17. Pas utilisable actuellement sur varnish. Intéressant notamment sur akamai car réseau entièrement dédié avec des routes optimisées en permanence Alternatives pour varnish: hit for pass: si une page doit nécessairement être en cache: force une requête en bypassant le cache Ban: on expurge simplement le cache et la prochaine requête aura une version fraiche
  18. Principe de base, on ne devrait jamais avoir un fichier de cache qui se compile en prod. Il faut toujours s’assurer que l’ensemble des fichiers nécessaire soit créé avant. Et si besoin le surveiller  L’implémentation de twig avait un problème: les fichiers compilés lors du cache-clear n’étaient pas forcément exploités et étaient régénérés avec une clé différente (résolution de chemins différente). On a corrigé ça et c’est dispo depuis Twig 1.18.0 On ne peut pas se permettre de laisser le premier internaute se prendre le temps de génération dans la vue  et si c’est google on le paye le prix fort.
  19. Quand on voit ça on se dit que tout va bien  le cache:clear est en réalité effectué avec l’option –no-warmup
  20. Cache-warmup à false par défaut  symfony effectue un cache:clear –no-warmup. Assets-Install: hard  le système n’a pas besoin de lire le lien symbolique pour trouver les assets  gain direct sur les disques
  21. 3 étapes Simples : 1 – Je constate qu’il y a un problème (158ms au total, 77ms d’IO) 2 – Je repère la fonction problématique 3 – Je repère son contexte d’exécution
  22. Après le BDD, les TDD, le BBDD J'appelle cette méthode le BBDD: Broken By Design Development
  23. Avoir un backend qui répond rapidement est une bonne chose, mais ça ne sert à rien si votre front-end tue vos performances. Attention à ne charger que les bons assets, s’assurer de les compiler en un seul appel et d’avoir le maximum d’appels asynchrones. Petit rappel basique  assets sur serveur cookie less, éventuellement un CDN