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