View
1.362
Download
5
Category
Preview:
Citation preview
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
1263
Mais pas le plus rapide
Symfony est le plus mature
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
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
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
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 pull2 – Build phing• composer install• compilation sass• …
Rsync en parallèleApache 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 correction1
2 3
Broken By Design Development
BBDD
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"
Création des scénariosscenarios: 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
Recommended