Microservice PHP Symfony avec gRPC : un guide pratique

DEV - 24/12
Un guide étape par étape pour créer des microservices hexagonaux hautes performances en PHP avec Symfony et...

Un guide étape par étape pour créer des microservices hexagonaux hautes performances en PHP avec Symfony et gRPC.

Pourquoi utiliser gRPC ?

gRPC est un cadre de communication moderne et performant conçu pour permettre aux microservices de communiquer entre eux plus efficacement que les méthodes traditionnelles. Contrairement aux API REST standard, qui envoient des données sous la forme de texte volumineux et lisible par l'homme (JSON), gRPC convertit les données dans un format binaire compact à l'aide de tampons de protocole. Cela se traduit par des messages beaucoup plus petits et un traitement nettement plus rapide, ce qui est vital pour les systèmes à fort trafic.

gRPC fonctionne sur HTTP/2, ce qui permet le multiplexage  — envoi simultané de plusieurs requêtes sur une seule connexion — et prend en charge le streaming bidirectionnel en temps réel. Cela signifie que vos services peuvent maintenir un flux d’informations constant et bidirectionnel, plutôt que de simplement « demander et attendre ».

Vous pouvez trouver plus d'informations sur le site officiel : gRPC

Exigences précédentes

  • Docker avec Docker Compose ou toute autre alternative compatible avec les conteneurs
  • Compositeur

Installer Symfony + Docker + Roadrunner

Voyons comment installer une version de base de Symfony exécutant PHP CLI et Roadrunner via Docker.

Créer un projet Symfony

Dans ce tutoriel, créez un projet Symfony à partir de zéro, n'hésitez pas à utiliser un projet Symfony existant.

compositeur créer-projet symfony/squelette symfony-grpc
Entrer en mode plein écran Quitter le mode plein écran

Installer le bundle roadrunner

Pour faciliter l'intégration de Roadrunner avec Symfony, nous utiliserons le fournisseur baldinof/roadrunner-bundle. Vous pouvez trouver plus d’informations sur la page GitHub du projet.

le compositeur nécessite baldinof/roadrunner-bundle
Entrer en mode plein écran Quitter le mode plein écran

REMARQUE : Habituellement, si vous avez utilisé la recette, le roadrunner-bundle crée un exemple rr.yaml et rr.dev.yaml sur votre projet racine. Si ce n'est pas le cas, vous pouvez copier manuellement à partir du fournisseur :

cp supplier/baldinof/roadrunner-bundle/.rr.dev.yaml . cp supplier/baldinof/roadrunner-bundle/.rr.yaml .
Entrer en mode plein écran Quitter le mode plein écran

Créez une image Docker simple avec PHP et Roadrunner

Nous avons créé une image Docker de base contenant PHP CLI et le binaire RoadRunner. Inclure le binaire RoadRunner dans notre image PHP signifie que nous ne sommes plus dépendants de services externes tels qu'Apache ou Nginx.

#resources/docker/php-roadrunner/Dockerfile FROM ghcr.io/roadrunner-server/roadrunner:2025.1.6 AS roadrunner FROM php:8.4-cli-alpine COPIE --from=roadrunner /usr/bin/rr /usr/local/bin/rr EXPOSE 8080 9000 WORKDIR /var/www/app
Entrer en mode plein écran Quitter le mode plein écran

Créer une composition Docker

Pour faciliter l'exécution du projet, créons un simple fichier Docker Compose.

Services #docker-compose.yml : ...
[Courte citation de 8% de l'article original]
Loading...