14 points par GN⁺ 2025-09-02 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Récemment, une approche hybride consistant à intégrer Go et Rust comme langages d’extension au sein d’une architecture monolithique PHP suscite un intérêt croissant
  • Auparavant, la combinaison de microservices Go et d’un monolithe PHP 8.3 permettait d’atteindre un bon équilibre entre productivité et hautes performances
  • Selon la loi de Pareto (80 % du trafic concentré sur 20 % des API), l’optimisation des endpoints critiques était indispensable ; autrefois, on y répondait par le caching et la séparation en services Go, mais la complexité augmentait
  • Avec les progrès récents de l’écosystème PHP, des techniques comme FFI, les extensions Rust et les extensions Go (FrankenPHP) permettent désormais d’améliorer fortement les performances à l’intérieur même du monolithe
  • Les extensions Rust offrent à la fois sécurité mémoire et rapidité, et FrankenPHP, avec son worker mode et ses extensions basées sur Go, a montré des performances plus de 4 fois supérieures
  • Sans subir le coût ni le risque d’une réécriture complète en Go/Rust, l’approche PHP hybride permet de conserver à la fois productivité et vitesse

Contexte et architecture existante

  • À l’origine, on s’appuyait sur une application monolithique DDD (mother) autour de laquelle étaient développés séparément des microservices basés sur Go (children) afin d’optimiser certaines fonctions
  • Les microservices Go prenaient en charge le traitement de trafic à haute performance, tandis que le monolithe PHP 8.3 apportait, dans le cadre d’une petite équipe backend, une mise en production fiable et un développement rapide de fonctionnalités
  • Cette structure offrait un point d’équilibre permettant de garantir vitesse, stabilité et productivité

Goulots d’étranglement de performance et réponses classiques

  • On observe souvent le principe de Pareto : 80 % du trafic se concentre sur 20 % des endpoints API
  • Pour ces 20 % les plus sensibles aux performances, différentes approches étaient utilisées : code optimisé, ajout d’une couche de cache, externalisation en microservices Go, etc.
  • Mais ces solutions atteignent leurs limites en matière de complexité et de charge opérationnelle

Les options hybrides du PHP moderne

  • Aujourd’hui, les technologies permettant d’améliorer directement les performances au sein d’un monolithe PHP se multiplient
  • 1. FFI (Foreign Function Interface)

    • La fonctionnalité FFI de PHP permet d’appeler directement du code C depuis PHP
    • Il devient ainsi possible d’implémenter, dans un projet PHP, de la logique de niveau système ou critique en matière de performances
    • En revanche, son usage est recommandé uniquement dans les cas adaptés, en tenant compte du coût des changements de contexte
  • 2. Extensions basées sur Rust

    • Il est possible de développer des extensions PHP en Rust (ou en Zig)
    • En déportant les zones à forte charge vers des extensions Rust offrant sécurité mémoire et performances compilées, on peut obtenir à la fois fiabilité et haute vitesse
  • 3. Extensions basées sur Go : FrankenPHP

    • Après un passage récent à FrankenPHP, l’exécution en worker mode a montré des performances plus de 4 fois supérieures à l’existant
    • Une version récente permet aussi d’écrire des extensions PHP en Go
    • Il devient ainsi possible d’exploiter directement, dans le monolithe PHP, les performances API de Go, et de combiner productivité et vitesse sans scinder les langages

Pourquoi ne pas tout migrer vers Go ou Rust ?

  • Le coût d’une réécriture complète et les risques associés sont élevés
    • Remplacer entièrement une application déjà vaste et stable par du Go ou du Rust implique un niveau important de risque et de consommation de ressources
  • PHP conserve toujours de vrais atouts
    • Pour la plupart des besoins métier, la rapidité de développement, l’écosystème accessible et les performances largement suffisantes de PHP restent très compétitifs
    • En adoptant une architecture hybride avec Go ou Rust uniquement sur les zones qui atteignent de véritables limites de performance, on peut éviter la nécessité d’une migration complète

Conclusion : la valeur du PHP hybride

  • L’écosystème PHP moderne offre à la fois une forte productivité de développement et des options d’intégration avec des extensions hautes performances (C, Rust, Go)
  • Cette structure hybride permet de garantir à la fois vitesse et productivité
  • Elle propose un nouveau paradigme d’architecture où l’on conserve un développement centré sur PHP, tout en permettant des extensions sélectives par langage selon les besoins

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.