SlideShare une entreprise Scribd logo
Arnaud LAHAXE - 2024
Comment scaler une application PHP vieille de plus de 20 ans ?
Arnaud LAHAXE - 2024
Document restreint C0 I page 3
Comment scaler une application PHP vieille
de plus de 20 ans ?
Qui suis-je ?
Document interne C1 I page 3
Arnaud LAHAXE / @arnaud_lahaxe
Architecte Applicatif chez Boursorama
Document restreint C0 I page 4
Comment scaler une application PHP vieille
de plus de 20 ans ?
Contexte
Document restreint C0 I page 5
Comment scaler une application PHP vieille
de plus de 20 ans ?
Contexte concernant le WEB
> 6 000 000 clients bancaires
> 630 000 000 de hits/
jours sur l'API
> 2 000 000
connexions client/ jour
> 3 800 Apis
> 90 livraisons par mois
> 70 développeurs
> 10 000 000 pages vues/ jour sur
le portail d'information 4 applications mobiles
Document restreint C0 I page 6
Comment scaler une application PHP vieille
de plus de 20 ans ?
Nombre de clients bancaires
0
1 000 000
2 000 000
3 000 000
4 000 000
5 000 000
6 000 000
2013 2017 2019 2020 2021 2022 2023
Document restreint C0 I page 7
Comment scaler une application PHP vieille
de plus de 20 ans ?
Pourquoi pas de frozen zone ?
UN MÉTIER RÉGLEMENTÉ UNE POLITIQUE D’ACQUISITION
MASSIVE DE CLIENTS
UNE OFFRE QUI ÉVOLUE
Document restreint C0 I page 8
Comment scaler une application PHP vieille
de plus de 20 ans ?
Scalabilité &
Architecture
Document restreint C0 I page 9
Comment scaler une application PHP vieille
de plus de 20 ans ?
D’où on part ? (2012)
> Un monolithe basé sur un framework maison
> Tout fait maison
> Une stack technique simple
o Linux, Apache, Mysql, PHP
Document restreint C0 I page 10
Comment scaler une application PHP vieille
de plus de 20 ans ?
D’où on part ?
...
Partenaire 1
Partenaire n
BDDs
Monolithe
App
Document restreint C0 I page 11
Comment scaler une application PHP vieille
de plus de 20 ans ?
Pourquoi une migration ?
> Un code difficile à maintenir
> Couplage fort Front - Back
> Une petite partie API
> Un manque de métriques
> Pas de tests
Document restreint C0 I page 12
Comment scaler une application PHP vieille
de plus de 20 ans ?
Architecture 3 tiers
...
Partenaire 1
Partenaire n
BDDs
API
Site client
Site portail
App
Front API Data / Partenaires
Document restreint C0 I page 13
Comment scaler une application PHP vieille
de plus de 20 ans ?
Front
Les interfaces sont des projets
indépendants qui sont :
§ Stateless
§ Sans accès aux données
§ Sans accès aux partenaires
§ Clients de l’API
Document restreint C0 I page 14
Comment scaler une application PHP vieille
de plus de 20 ans ?
API (legacy)
Le code du monolithe est devenu une API
§ Création des contrôleurs d’API
§ Suppression de toute la partie UI
§ Migration partielle sur des
composants Symfony
Document restreint C0 I page 15
Comment scaler une application PHP vieille
de plus de 20 ans ?
Communication
1 page = n appels http sur l'API
§ Parallélisation des traitements
§ Plus simple pour gérer une
panne
Document restreint C0 I page 16
Comment scaler une application PHP vieille
de plus de 20 ans ?
D’où on part ?
...
Partenaire 1
Partenaire n
BDDs
Monolithe
App
Document restreint C0 I page 17
Comment scaler une application PHP vieille
de plus de 20 ans ?
Vue globale
...
Partenaire 1
Partenaire n
BDDs
API
Site client
App
Site portail
Document restreint C0 I page 18
Comment scaler une application PHP vieille
de plus de 20 ans ?
Migration terminée, on est heureux…
Document restreint C0 I page 19
Comment scaler une application PHP vieille
de plus de 20 ans ?
Oui mais...
> Une page = X appels API
> Certaines APIs sont appelées plusieurs fois pour une session
> Les performances sont moins bonnes qu’avec le monolithe
Document restreint C0 I page 20
Comment scaler une application PHP vieille
de plus de 20 ans ?
...
Document restreint C0 I page 21
Comment scaler une application PHP vieille
de plus de 20 ans ?
Scalabilité &
Performance
Document restreint C0 I page 22
Comment scaler une application PHP vieille
de plus de 20 ans ?
Cache HTTP
Performance Economie Résilience Tolérance
à la panne
Icons de Flaticon.com
Document restreint C0 I page 23
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish
> Piloté par l’API
> Basé sur le standard HTTP (RFC 7234) section 5.2
> Comportement customisable
> Capable de démultiplexer les requêtes
> Licence BSD
Document restreint C0 I page 24
Comment scaler une application PHP vieille
de plus de 20 ans ?
Entrée de cache
Clef Url + méthode + headers (vary)
Valeur Le body de la réponse HTTP
TTL max-age, s-maxage, max-stale, stale-if-error
Tags x-key, x-cache-tag
Document restreint C0 I page 25
Comment scaler une application PHP vieille
de plus de 20 ans ?
Le postulat de base
Dans 99,9% des cas, les données client affichées ne changent pas pendant une session de
navigation sans action du client.
“ “
Document restreint C0 I page 26
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish côté API
Cache miss Temps: 1s
Front API Partenaire 1
Partenaire 2
HTTP REST HTTP REST
SOAP
HTTP REST
Headers:
Cache-
Control
Header:
X-Cache : MISS
Document restreint C0 I page 27
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish côté API
Cache hit
Front
HTTP REST
Header:
X-Cache : HIT
Temps: 15ms
Document restreint C0 I page 28
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish côté API
Cache miss avec grace
Front API
Partenaire 1
Partenaire 2
HTTP REST
HTTP REST SOAP
HTTP REST
Headers:
Cache-
Control
Header:
X-Cache : HIT
Temps: 15ms
Document restreint C0 I page 29
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish côté API
Temps: 1s
Front API Partenaire 1
Partenaire 2
HTTP REST HTTP REST
SOAP
HTTP REST
Code
HTTP 500
Header:
X-Cache : HIT
Cache-Control:
max-age=0 no-cache
Cache hit en cas d’erreur (stale-if-error)
Document restreint C0 I page 30
Comment scaler une application PHP vieille
de plus de 20 ans ?
Le cache Http
...
Partenaire 1
Partenaire n
BDDs
API
Site client
App
Site portail
Document restreint C0 I page 31
Comment scaler une application PHP vieille
de plus de 20 ans ?
Le cache Http
...
Partenaire 1
Partenaire n
BDDs
API
Site client
App
Site portail
-30%
Document restreint C0 I page 32
Comment scaler une application PHP vieille
de plus de 20 ans ?
Le cache Http
...
Partenaire 1
Partenaire n
BDDs
API
Site client
-30%
App
Site portail
Document restreint C0 I page 33
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish côté front - ESI
index.html
Document restreint C0 I page 34
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish côté front - ESI
http://example.com/index.html
http://example.com/header.html
http://example.com/footer.html
index.html
http://example.com/index.html
Document restreint C0 I page 35
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish partout
Cache sur la page
Document restreint C0 I page 36
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish partout
Cache sur les ESI
Document restreint C0 I page 37
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish partout
Cache sur l’API
Document restreint C0 I page 38
Comment scaler une application PHP vieille
de plus de 20 ans ?
Varnish partout
+/- 30 ESI sur une fiche cours
Document restreint C0 I page 39
Comment scaler une application PHP vieille
de plus de 20 ans ?
Le cache Http
...
Partenaire 1
Partenaire n
BDDs
API
Site client
-30%
-92%
App
Site portail
Document restreint C0 I page 40
Comment scaler une application PHP vieille
de plus de 20 ans ?
Finalement on y est arrivé...
Document restreint C0 I page 41
Comment scaler une application PHP vieille
de plus de 20 ans ?
Oui mais...
> Comment s’assurer de ne pas fuiter d’informations ?
Document restreint C0 I page 42
Comment scaler une application PHP vieille
de plus de 20 ans ?
Etape 1 – Les clefs de cache
> Avoir des clefs de cache uniques
> Un hash dans les urls unique par client
https://api.boursobank.com/.../user/ec17dfca92/bank/accounts
https://api.boursobank.com/.../public/translation
Document restreint C0 I page 43
Comment scaler une application PHP vieille
de plus de 20 ans ?
Etape 2 – Les droits d’accès
> Vérifier que la requête contient bien un token d’autorisation cohérent avec l’url
Front
HTTP REST
Header:
X-Cache : HIT
1
2
Temps: 35ms
> Une API d’autorisation :
• Inaccessible de l’extérieur
• Vérifie le token d’autorisation
• Vérifie la cohérence entre le
token et le préfixe d’url
• Vérifie que la session est
toujours active
• Rapide : 20ms
Document restreint C0 I page 44
Comment scaler une application PHP vieille
de plus de 20 ans ?
Etape 2 - Les droits d’accès – OK
Front
HTTP REST
Header:
X-Cache : HIT
1
2
Headers:
Cache-
Control
HTTP REST
HTTP REST
Document restreint C0 I page 45
Comment scaler une application PHP vieille
de plus de 20 ans ?
Etape 2 - Les droits d’accès - KO
Front
HTTP REST
Code 403
1
2
Code 403
HTTP REST
HTTP REST
Code 403
Document restreint C0 I page 46
Comment scaler une application PHP vieille
de plus de 20 ans ?
Cette fois on y est...
Document restreint C0 I page 47
Comment scaler une application PHP vieille
de plus de 20 ans ?
Oui mais...
Les performances passées ne préjugent pas des performances
futures.
“ “
AMF - 2015
Document restreint C0 I page 48
Comment scaler une application PHP vieille
de plus de 20 ans ?
Outillage
> Des alertes dans les stacks de devs
> Des blocages dans la CI
> De l'analyse statique
> Blackfire
Document restreint C0 I page 49
Comment scaler une application PHP vieille
de plus de 20 ans ?
Monitoring
> Dashboards dédiés à la performance
> Alertes automatiques
> Suivre des indicateurs
§ Temps moyen de l’API
§ Ratio cache hit/ miss
§ Nombre de transactions/ login
§ Le load des serveurs/ nombre de hits
§ ...
Document restreint C0 I page 50
Comment scaler une application PHP vieille
de plus de 20 ans ?
Accompagnement
> Communiquer régulièrement
> Faire des feedbacks après une grosse
régression
> Partager la veille techno
Document restreint C0 I page 51
Comment scaler une application PHP vieille
de plus de 20 ans ?
En résumé
1. Une séparation Front – API
2. Une utilisation massive de Varnish
3. Du monitoring précis et suivi
4. De la communication avec l’équipe
Document restreint C0 I page 52
Comment scaler une application PHP vieille
de plus de 20 ans ?
📣 Votre avis ?
Document interne C1 I page 52

Contenu connexe

Similaire à [2024] Comment scaler une application PHP vieille de plus de 20 ans ?

WebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsWebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsVincent Perrin
 
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Fasterize
 
Le livre blanc pour tout savoir de la webperf
Le livre blanc pour tout savoir de la webperfLe livre blanc pour tout savoir de la webperf
Le livre blanc pour tout savoir de la webperf
Object Vingt Trois
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutantKorteby Farouk
 
LAWS - Crée un site dynamique en serverless c'est possible
LAWS - Crée un site dynamique en serverless c'est possibleLAWS - Crée un site dynamique en serverless c'est possible
LAWS - Crée un site dynamique en serverless c'est possible
Robin Mizreh
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
Francois ANDRE
 
Webinar Semrush Neper - quel ROI pour les pages amp
Webinar Semrush Neper - quel ROI pour les pages  ampWebinar Semrush Neper - quel ROI pour les pages  amp
Webinar Semrush Neper - quel ROI pour les pages amp
Philippe YONNET
 
Quel ROI attendre d'un projet de création de pages AMP ?
Quel ROI attendre d'un projet de création de pages AMP ?Quel ROI attendre d'un projet de création de pages AMP ?
Quel ROI attendre d'un projet de création de pages AMP ?
Semrush France
 
Mini projet webservice soap
Mini projet   webservice soapMini projet   webservice soap
Mini projet webservice soap
Youcef Aliarous
 
Seo camp day lorraine 2018 - Nancy gregory ambroise
Seo camp day lorraine 2018  - Nancy gregory ambroiseSeo camp day lorraine 2018  - Nancy gregory ambroise
Seo camp day lorraine 2018 - Nancy gregory ambroise
Grégory Ambroise
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
Oxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
Ludovic Piot
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
Habib Ayad
 
Digital race evolution programmation web 1.0
Digital race   evolution programmation web 1.0Digital race   evolution programmation web 1.0
Digital race evolution programmation web 1.0
Sequoia-ID
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
Brigitte Marandon
 
Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...
Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...
Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...
OCTO Technology
 
Comment optimiser les performances web des applications en saas
Comment optimiser les performances web des applications en saasComment optimiser les performances web des applications en saas
Comment optimiser les performances web des applications en saas
CDNetworks
 
Web semantique et e-commerce : la vague va déferler !
Web semantique et e-commerce : la vague va déferler !Web semantique et e-commerce : la vague va déferler !
Web semantique et e-commerce : la vague va déferler !
Antidot
 
developpement_projet_web_part_1
developpement_projet_web_part_1developpement_projet_web_part_1
developpement_projet_web_part_1
Rokhaya Barry
 

Similaire à [2024] Comment scaler une application PHP vieille de plus de 20 ans ? (20)

WebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet ApplicationsWebSphere Portal & Rich Internet Applications
WebSphere Portal & Rich Internet Applications
 
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
Comment Rue Du Commerce est devenu le site e-commerce le plus rapide de France ?
 
Le livre blanc pour tout savoir de la webperf
Le livre blanc pour tout savoir de la webperfLe livre blanc pour tout savoir de la webperf
Le livre blanc pour tout savoir de la webperf
 
Création des sites web pour débutant
Création des sites web pour débutantCréation des sites web pour débutant
Création des sites web pour débutant
 
LAWS - Crée un site dynamique en serverless c'est possible
LAWS - Crée un site dynamique en serverless c'est possibleLAWS - Crée un site dynamique en serverless c'est possible
LAWS - Crée un site dynamique en serverless c'est possible
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
 
Webinar Semrush Neper - quel ROI pour les pages amp
Webinar Semrush Neper - quel ROI pour les pages  ampWebinar Semrush Neper - quel ROI pour les pages  amp
Webinar Semrush Neper - quel ROI pour les pages amp
 
Quel ROI attendre d'un projet de création de pages AMP ?
Quel ROI attendre d'un projet de création de pages AMP ?Quel ROI attendre d'un projet de création de pages AMP ?
Quel ROI attendre d'un projet de création de pages AMP ?
 
Mini projet webservice soap
Mini projet   webservice soapMini projet   webservice soap
Mini projet webservice soap
 
Seo camp day lorraine 2018 - Nancy gregory ambroise
Seo camp day lorraine 2018  - Nancy gregory ambroiseSeo camp day lorraine 2018  - Nancy gregory ambroise
Seo camp day lorraine 2018 - Nancy gregory ambroise
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Exposé 1
Exposé   1Exposé   1
Exposé 1
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
Digital race evolution programmation web 1.0
Digital race   evolution programmation web 1.0Digital race   evolution programmation web 1.0
Digital race evolution programmation web 1.0
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
 
Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...
Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...
Petit-Déjeuner : L'API ne fait pas le moine : Confessions d'experts sur les m...
 
Comment optimiser les performances web des applications en saas
Comment optimiser les performances web des applications en saasComment optimiser les performances web des applications en saas
Comment optimiser les performances web des applications en saas
 
Web semantique et e-commerce : la vague va déferler !
Web semantique et e-commerce : la vague va déferler !Web semantique et e-commerce : la vague va déferler !
Web semantique et e-commerce : la vague va déferler !
 
developpement_projet_web_part_1
developpement_projet_web_part_1developpement_projet_web_part_1
developpement_projet_web_part_1
 

[2024] Comment scaler une application PHP vieille de plus de 20 ans ?

  • 2. Comment scaler une application PHP vieille de plus de 20 ans ? Arnaud LAHAXE - 2024
  • 3. Document restreint C0 I page 3 Comment scaler une application PHP vieille de plus de 20 ans ? Qui suis-je ? Document interne C1 I page 3 Arnaud LAHAXE / @arnaud_lahaxe Architecte Applicatif chez Boursorama
  • 4. Document restreint C0 I page 4 Comment scaler une application PHP vieille de plus de 20 ans ? Contexte
  • 5. Document restreint C0 I page 5 Comment scaler une application PHP vieille de plus de 20 ans ? Contexte concernant le WEB > 6 000 000 clients bancaires > 630 000 000 de hits/ jours sur l'API > 2 000 000 connexions client/ jour > 3 800 Apis > 90 livraisons par mois > 70 développeurs > 10 000 000 pages vues/ jour sur le portail d'information 4 applications mobiles
  • 6. Document restreint C0 I page 6 Comment scaler une application PHP vieille de plus de 20 ans ? Nombre de clients bancaires 0 1 000 000 2 000 000 3 000 000 4 000 000 5 000 000 6 000 000 2013 2017 2019 2020 2021 2022 2023
  • 7. Document restreint C0 I page 7 Comment scaler une application PHP vieille de plus de 20 ans ? Pourquoi pas de frozen zone ? UN MÉTIER RÉGLEMENTÉ UNE POLITIQUE D’ACQUISITION MASSIVE DE CLIENTS UNE OFFRE QUI ÉVOLUE
  • 8. Document restreint C0 I page 8 Comment scaler une application PHP vieille de plus de 20 ans ? Scalabilité & Architecture
  • 9. Document restreint C0 I page 9 Comment scaler une application PHP vieille de plus de 20 ans ? D’où on part ? (2012) > Un monolithe basé sur un framework maison > Tout fait maison > Une stack technique simple o Linux, Apache, Mysql, PHP
  • 10. Document restreint C0 I page 10 Comment scaler une application PHP vieille de plus de 20 ans ? D’où on part ? ... Partenaire 1 Partenaire n BDDs Monolithe App
  • 11. Document restreint C0 I page 11 Comment scaler une application PHP vieille de plus de 20 ans ? Pourquoi une migration ? > Un code difficile à maintenir > Couplage fort Front - Back > Une petite partie API > Un manque de métriques > Pas de tests
  • 12. Document restreint C0 I page 12 Comment scaler une application PHP vieille de plus de 20 ans ? Architecture 3 tiers ... Partenaire 1 Partenaire n BDDs API Site client Site portail App Front API Data / Partenaires
  • 13. Document restreint C0 I page 13 Comment scaler une application PHP vieille de plus de 20 ans ? Front Les interfaces sont des projets indépendants qui sont : § Stateless § Sans accès aux données § Sans accès aux partenaires § Clients de l’API
  • 14. Document restreint C0 I page 14 Comment scaler une application PHP vieille de plus de 20 ans ? API (legacy) Le code du monolithe est devenu une API § Création des contrôleurs d’API § Suppression de toute la partie UI § Migration partielle sur des composants Symfony
  • 15. Document restreint C0 I page 15 Comment scaler une application PHP vieille de plus de 20 ans ? Communication 1 page = n appels http sur l'API § Parallélisation des traitements § Plus simple pour gérer une panne
  • 16. Document restreint C0 I page 16 Comment scaler une application PHP vieille de plus de 20 ans ? D’où on part ? ... Partenaire 1 Partenaire n BDDs Monolithe App
  • 17. Document restreint C0 I page 17 Comment scaler une application PHP vieille de plus de 20 ans ? Vue globale ... Partenaire 1 Partenaire n BDDs API Site client App Site portail
  • 18. Document restreint C0 I page 18 Comment scaler une application PHP vieille de plus de 20 ans ? Migration terminée, on est heureux…
  • 19. Document restreint C0 I page 19 Comment scaler une application PHP vieille de plus de 20 ans ? Oui mais... > Une page = X appels API > Certaines APIs sont appelées plusieurs fois pour une session > Les performances sont moins bonnes qu’avec le monolithe
  • 20. Document restreint C0 I page 20 Comment scaler une application PHP vieille de plus de 20 ans ? ...
  • 21. Document restreint C0 I page 21 Comment scaler une application PHP vieille de plus de 20 ans ? Scalabilité & Performance
  • 22. Document restreint C0 I page 22 Comment scaler une application PHP vieille de plus de 20 ans ? Cache HTTP Performance Economie Résilience Tolérance à la panne Icons de Flaticon.com
  • 23. Document restreint C0 I page 23 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish > Piloté par l’API > Basé sur le standard HTTP (RFC 7234) section 5.2 > Comportement customisable > Capable de démultiplexer les requêtes > Licence BSD
  • 24. Document restreint C0 I page 24 Comment scaler une application PHP vieille de plus de 20 ans ? Entrée de cache Clef Url + méthode + headers (vary) Valeur Le body de la réponse HTTP TTL max-age, s-maxage, max-stale, stale-if-error Tags x-key, x-cache-tag
  • 25. Document restreint C0 I page 25 Comment scaler une application PHP vieille de plus de 20 ans ? Le postulat de base Dans 99,9% des cas, les données client affichées ne changent pas pendant une session de navigation sans action du client. “ “
  • 26. Document restreint C0 I page 26 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish côté API Cache miss Temps: 1s Front API Partenaire 1 Partenaire 2 HTTP REST HTTP REST SOAP HTTP REST Headers: Cache- Control Header: X-Cache : MISS
  • 27. Document restreint C0 I page 27 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish côté API Cache hit Front HTTP REST Header: X-Cache : HIT Temps: 15ms
  • 28. Document restreint C0 I page 28 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish côté API Cache miss avec grace Front API Partenaire 1 Partenaire 2 HTTP REST HTTP REST SOAP HTTP REST Headers: Cache- Control Header: X-Cache : HIT Temps: 15ms
  • 29. Document restreint C0 I page 29 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish côté API Temps: 1s Front API Partenaire 1 Partenaire 2 HTTP REST HTTP REST SOAP HTTP REST Code HTTP 500 Header: X-Cache : HIT Cache-Control: max-age=0 no-cache Cache hit en cas d’erreur (stale-if-error)
  • 30. Document restreint C0 I page 30 Comment scaler une application PHP vieille de plus de 20 ans ? Le cache Http ... Partenaire 1 Partenaire n BDDs API Site client App Site portail
  • 31. Document restreint C0 I page 31 Comment scaler une application PHP vieille de plus de 20 ans ? Le cache Http ... Partenaire 1 Partenaire n BDDs API Site client App Site portail -30%
  • 32. Document restreint C0 I page 32 Comment scaler une application PHP vieille de plus de 20 ans ? Le cache Http ... Partenaire 1 Partenaire n BDDs API Site client -30% App Site portail
  • 33. Document restreint C0 I page 33 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish côté front - ESI index.html
  • 34. Document restreint C0 I page 34 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish côté front - ESI http://example.com/index.html http://example.com/header.html http://example.com/footer.html index.html http://example.com/index.html
  • 35. Document restreint C0 I page 35 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish partout Cache sur la page
  • 36. Document restreint C0 I page 36 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish partout Cache sur les ESI
  • 37. Document restreint C0 I page 37 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish partout Cache sur l’API
  • 38. Document restreint C0 I page 38 Comment scaler une application PHP vieille de plus de 20 ans ? Varnish partout +/- 30 ESI sur une fiche cours
  • 39. Document restreint C0 I page 39 Comment scaler une application PHP vieille de plus de 20 ans ? Le cache Http ... Partenaire 1 Partenaire n BDDs API Site client -30% -92% App Site portail
  • 40. Document restreint C0 I page 40 Comment scaler une application PHP vieille de plus de 20 ans ? Finalement on y est arrivé...
  • 41. Document restreint C0 I page 41 Comment scaler une application PHP vieille de plus de 20 ans ? Oui mais... > Comment s’assurer de ne pas fuiter d’informations ?
  • 42. Document restreint C0 I page 42 Comment scaler une application PHP vieille de plus de 20 ans ? Etape 1 – Les clefs de cache > Avoir des clefs de cache uniques > Un hash dans les urls unique par client https://api.boursobank.com/.../user/ec17dfca92/bank/accounts https://api.boursobank.com/.../public/translation
  • 43. Document restreint C0 I page 43 Comment scaler une application PHP vieille de plus de 20 ans ? Etape 2 – Les droits d’accès > Vérifier que la requête contient bien un token d’autorisation cohérent avec l’url Front HTTP REST Header: X-Cache : HIT 1 2 Temps: 35ms > Une API d’autorisation : • Inaccessible de l’extérieur • Vérifie le token d’autorisation • Vérifie la cohérence entre le token et le préfixe d’url • Vérifie que la session est toujours active • Rapide : 20ms
  • 44. Document restreint C0 I page 44 Comment scaler une application PHP vieille de plus de 20 ans ? Etape 2 - Les droits d’accès – OK Front HTTP REST Header: X-Cache : HIT 1 2 Headers: Cache- Control HTTP REST HTTP REST
  • 45. Document restreint C0 I page 45 Comment scaler une application PHP vieille de plus de 20 ans ? Etape 2 - Les droits d’accès - KO Front HTTP REST Code 403 1 2 Code 403 HTTP REST HTTP REST Code 403
  • 46. Document restreint C0 I page 46 Comment scaler une application PHP vieille de plus de 20 ans ? Cette fois on y est...
  • 47. Document restreint C0 I page 47 Comment scaler une application PHP vieille de plus de 20 ans ? Oui mais... Les performances passées ne préjugent pas des performances futures. “ “ AMF - 2015
  • 48. Document restreint C0 I page 48 Comment scaler une application PHP vieille de plus de 20 ans ? Outillage > Des alertes dans les stacks de devs > Des blocages dans la CI > De l'analyse statique > Blackfire
  • 49. Document restreint C0 I page 49 Comment scaler une application PHP vieille de plus de 20 ans ? Monitoring > Dashboards dédiés à la performance > Alertes automatiques > Suivre des indicateurs § Temps moyen de l’API § Ratio cache hit/ miss § Nombre de transactions/ login § Le load des serveurs/ nombre de hits § ...
  • 50. Document restreint C0 I page 50 Comment scaler une application PHP vieille de plus de 20 ans ? Accompagnement > Communiquer régulièrement > Faire des feedbacks après une grosse régression > Partager la veille techno
  • 51. Document restreint C0 I page 51 Comment scaler une application PHP vieille de plus de 20 ans ? En résumé 1. Une séparation Front – API 2. Une utilisation massive de Varnish 3. Du monitoring précis et suivi 4. De la communication avec l’équipe
  • 52. Document restreint C0 I page 52 Comment scaler une application PHP vieille de plus de 20 ans ? 📣 Votre avis ? Document interne C1 I page 52