Tutoriels

Laravel peut-il supporter l'hyper-croissance ? Une analyse pratique

Laravel peut-il supporter l'hyper-croissance ? Une analyse pratique

Flowsery Team
Flowsery Team
4 min de lecture

TL;DR — Réponse rapide

4 min de lecture

Laravel passe a l'echelle pour pratiquement tous les scenarios business realistes. Le goulot d'etranglement est toujours la base de donnees, la couche de cache ou les services externes -- jamais le framework HTTP lui-meme.

La question "Est-ce que Laravel passe a l'echelle ?" revient regulierement dans les communautes de developpeurs, et les reponses suivent un schema previsible. Un groupe insiste sur le fait que oui, bien sur -- le framework web ne sera pas le goulot d'etranglement avant longtemps. L'autre groupe insiste sur le fait que les frameworks PHP ne peuvent pas performer a l'hyper-echelle. Cet article repond definitivement a la question.

Vous vous inquietez probablement du mauvais probleme

Avant de plonger dans les details techniques, considerez que la plupart des developpeurs s'inquietent d'un scenario de montee en charge qu'ils ne rencontreront jamais. Vous ne construisez presque certainement pas le prochain Google, Facebook ou YouTube. Ce n'est pas du pessimisme -- c'est une realite statistique qui devrait eclairer les decisions techniques.

L'echelle de Wikipedia

Wikipedia, l'un des plus grands sites web au monde, tourne sur PHP. Selon TechCrunch, Wikipedia traitait environ 225 millions de pages vues par jour en 2020 :

  • 225 millions / 86 400 = environ 2 604 pages vues par seconde
  • 225 millions x 30 = environ 6,75 milliards de pages vues par mois

L'echelle de Facebook

Dans un article de blog de 2010, Facebook rapportait traiter 100 milliards de "hits" par jour pour 500 millions d'utilisateurs :

  • 100 milliards / 86 400 = environ 1,15 million de requetes par seconde
  • 100 milliards x 30 = 3 000 milliards de requetes par mois

Laravel pourrait-il etre mis a l'echelle pour gerer 3 000 milliards de requetes par mois ? En theorie, oui. Feriez-vous appel a d'autres frameworks pour certains composants ? Probablement. Architecturerez-vous un jour une application a cette echelle ? Statistiquement, non.

De maniere realiste, les applications se situent entre 1 million et 100 milliards de requetes par mois. Pour toute cette plage, Laravel fonctionne parfaitement.

Pourquoi les benchmarks sont trompeurs

Les benchmarks sont constamment brandis dans les discussions sur la montee en charge. Un framework obscur dont personne n'a entendu parler se retrouve en haut d'une liste, avec une documentation terrible, pas de communaute et pas d'ecosysteme -- mais parce qu'il gere beaucoup de requetes par seconde sur un seul serveur, il est declare superieur.

Les TechEmpower Framework Benchmarks placent Laravel autour de la position 388 avec 4 833 requetes par seconde, compare au framework en tete qui atteint 666 737 requetes par seconde. Mais ces benchmarks executent Laravel en mode PHP-FPM sans connexions persistantes, pooling de connexions ou Laravel Octane. Chaque requete initialise le framework entier, se connecte a la base de donnees, execute une requete et se deconnecte. Ce n'est pas ainsi que les applications en production fonctionnent.

Ces benchmarks sont largement insignifiants pour les conversations reelles sur la montee en charge. Pour 99,99994 % des entreprises, Laravel offre d'excellentes performances tout en fournissant une documentation exceptionnelle, une communaute incroyable et un ecosysteme mature.

L'experience terrain avec des applications Laravel a fort trafic confirme que les problemes sont invariablement lies a la base de donnees, pas au framework. Des entreprises telles que Twitch, Disney, New York Times, WWE et Warner Bros utilisent Laravel pour divers projets.

Ce qui devient reellement le goulot d'etranglement

Base de donnees, cache et sessions

La base de donnees est le veritable goulot d'etranglement a l'echelle avec les configurations traditionnelles MySQL ou PostgreSQL. Des solutions comme DynamoDB ou SingleStore sont concues pour une echelle massive avec une configuration minimale. L'optimisation des performances de base de donnees est une discipline a part entiere.

Une evolution typique de base de donnees pour une application qui monte en charge pourrait passer par :

  1. Simple SQLite (ne faites pas cela)
  2. PostgreSQL ou MySQL manage sur un PaaS
  3. Instances RDS managees
  4. Bases de donnees analytiques dediees comme SingleStore

Pour le cache, Redis fonctionne bien initialement mais peut avoir besoin d'etre remplace par DynamoDB ou des tables en memoire a mesure que l'echelle augmente et que l'optimisation des couts d'infrastructure devient importante.

Systeme de files d'attente

Le systeme de files d'attente de Laravel supporte plusieurs pilotes dont Amazon SQS, Redis et les files d'attente en base de donnees. SQS offre un debit illimite, une securite robuste et un stockage des taches multi-zones de disponibilite. Garder le systeme de files d'attente separe de la base de donnees principale ameliore la tolerance aux pannes.

Services externes

Surveillez les limites de debit de chaque service externe : API d'email, fournisseurs SMS et tout le reste. Utilisez un CDN pour les ressources statiques plutot que de les servir depuis le serveur applicatif. Des services comme bunny.net, CloudFront et Cloudflare gerent cela efficacement.

Flowsery
Flowsery
Flowsery

Tableau de bord en temps réel

Suivi des objectifs

Suivi sans cookies

Conseils pratiques pour le code a l'echelle

  1. Gardez des requetes coherentes. Comme le conseillent les ingenieurs de Facebook : "C'est acceptable qu'une requete soit lente tant qu'elle est toujours lente." Des performances de requete previsibles sont plus gerables que des pics imprevisibles.
  2. Sachez quand deleguer. Utilisez des services manages pour des taches specialisees comme le traitement video. Ne construisez des solutions personnalisees que lorsque le revenu justifie l'investissement en ingenierie.
  3. Mettez agressivement en cache les requetes couteuses. Si une requete complexe sert plusieurs utilisateurs ou se charge de maniere repetee, mettez le resultat en cache. Une recherche cle-valeur est de plusieurs ordres de grandeur moins couteuse que re-executer la requete. Mettre en cache les reponses ne serait-ce que 10 secondes sur des endpoints a fort trafic peut reduire la charge de la base de donnees de maniere spectaculaire.
  4. Surveillez les limites des services cloud. AWS impose des limites par defaut sur des services comme le debit du Parameter Store. Surveillez ces limites et demandez des augmentations de maniere proactive avant de les atteindre en charge.

Architecture de deploiement pour la montee en charge

Un deploiement Laravel evolutif pourrait inclure :

  • CDN comme point d'entree principal pour tout le trafic
  • Pare-feu applicatif web (WAF) pour la limitation de debit et la protection
  • Repartiteur de charge applicatif pour distribuer le trafic entre les instances
  • Calcul serverless (Lambda) ou clusters de conteneurs autoscalables pour la couche applicative
  • Base de donnees dediee optimisee pour la charge de travail (analytique, transactionnelle ou les deux)

Laravel Octane ameliore significativement les performances en maintenant les connexions a la base de donnees ouvertes en memoire entre les requetes, eliminant le cycle couteux d'ouverture/fermeture de connexion a chaque requete entrante.

Stack recommandee pour les nouveaux projets

Pour un nouveau projet devant potentiellement gerer des milliards de requetes par mois :

  1. Laravel Vapor (deploie SQS, CloudFront, ALB, S3)
  2. AWS WAF
  3. SingleStore (remplacant les instances separees RDS, Redis et DynamoDB)
  4. Repartiteur de charge applicatif

Pour l'expansion internationale, AWS Global Accelerator permet des deploiements multi-regions derriere un point d'entree unique, avec une replication de base de donnees inter-regions disponible via des fournisseurs comme SingleStore.

Conclusion

Laravel est un excellent choix pour la grande majorite des applications web. Le framework lui-meme ne sera pas le goulot d'etranglement. Les bases de donnees, les couches de cache, les systemes de files d'attente et les limites des services externes deviendront des contraintes bien avant la couche HTTP.

La reponse a "Est-ce que Laravel passe a l'echelle ?" est sans equivoque oui -- pour pratiquement tous les scenarios business realistes.

Cet article vous a-t-il été utile ?

Dites-nous ce que vous en pensez !

Avant de partir...

Flowsery

Flowsery

Des analyses orientées revenus pour votre site web

Suivez chaque visiteur, source et conversion en temps réel. Simple, puissant et entièrement conforme au RGPD.

Flowsery

Tableau de bord en temps réel

Suivi des objectifs

Suivi sans cookies

Articles connexes