✴︎ Design
develop
DEploy
—04.26
Développeur Symfony, par choix
Je m’appelle Jean-Sébastien Christophe. Je suis développeur web full-stack
chez Agence DIX, spécialisé sur Symfony et l’écosystème PHP moderne. Ce
blog est à la fois un carnet technique et un espace personnel — ce qui
explique que vous y croiserez aussi bien des articles sur FrankenPHP que
des critiques de films.
D’un métier à l’autre
Avant le code, il y a eu la restauration. Plusieurs années dans un métier
intense, rythmé, humain. La pandémie de 2020 a forcé une pause, et avec
elle une question simple : qu’est-ce que je veux vraiment construire ?
La réponse est venue par la formation. Un DWWM au CCI de Colmar en 2021,
puis un premier poste chez Aubert France sur des problématiques
e-commerce. Aujourd’hui, chez Agence DIX, je travaille sur des projets
plus ambitieux — et je n’ai rien perdu de ce que la restauration m’a
appris : la rigueur, le sens du collectif, et le goût du travail bien fait.
Ma stack au quotidien
Je travaille principalement avec Symfony 7 (et bientôt 8), PHP 8+,
FrankenPHP en worker mode, PostgreSQL, RabbitMQ (quorum queues
pour les flux critiques) et Symfony Messenger pour l’asynchrone. Côté
infrastructure : Docker, GitHub Actions, GHCR et Jelastic Cloud pour les déploiements. Pour l’observabilité, j’utilise
OpenTelemetry, Prometheus et Grafana.
Pour la qualité du code : PHPUnit et PHPStan au niveau le plus
strict que le projet supporte. Pas par dogme — parce que sur des projets
qui synchronisent du paiement ou des stocks en temps réel, l’analyse
statique sauve des nuits.
J’ai aussi de l’expérience sur Redis, MongoDB, Mercure SSE et
les architectures event-driven. Côté front, je reste dans la philosophie
Symfony : Stimulus, AssetMapper, Twig — pas de SPA gratuite
quand un rendu serveur fait le travail.
Ce sur quoi je travaille
Royal Palace (Agence DIX). Un site e-commerce sur mesure développé en
Symfony de A à Z, synchronisé en temps réel avec une plateforme métier
custom. C’est le type de projet où chaque décision d’architecture compte :
Symfony Messenger pour les flux asynchrones, RabbitMQ en quorum queues
pour la résilience, FrankenPHP en worker mode pour les performances. Un
terrain de jeu sérieux.
kejja.app. Mon projet personnel de
recommandation de films et séries, accessible publiquement. Un bac à
sable où j’explore ce qui me plaît sans contraintes clients : essais
d’architecture, expérimentations IA, choix techniques que je ne pourrais
pas toujours défendre en mission.
ux-calendar-bundle.
Un bundle Symfony UX open source que je maintiens sur Packagist.
Développement en cours de reprise. Parce qu’écrire du code que d’autres
peuvent utiliser reste l’un des meilleurs moyens de progresser — et de se
forcer à documenter proprement.
Le reste. Des POC documentés sur ce blog : une classe virtuelle en
temps réel (LiveKit + FrankenPHP + Whisper),
des expérimentations avec Rubix ML,
du streaming HLS, Mercure en production, des essais de Symfony 8 en mode
serverless. Des sujets que j’explore parce qu’ils m’intriguent, et que je
partage pour garder trace de ce que j’apprends.
Là où je vais
Mon profil est aujourd’hui à l’intersection du développement Symfony et
de l’Ops — c’est moi qui écris les Dockerfiles, qui configure les
pipelines GitHub Actions, qui gère les déploiements Jelastic. C’est une
zone que je veux assumer et approfondir.
Concrètement, je prépare une trajectoire de certifications dans cet ordre :
HashiCorp Terraform Associate, puis CKAD (Kubernetes Application
Developer), puis le parcours AWS (Cloud Practitioner →
Solutions Architect Associate). Pas pour collectionner les badges — pour
pouvoir intervenir avec la même rigueur sur l’infrastructure que sur le
code applicatif.
L’objectif n’est pas de devenir DevOps pur. C’est d’être un développeur
backend Symfony capable de discuter sérieusement d’infrastructure, de
résilience et de coût — et de prendre les décisions correspondantes en
amont, pas après le déploiement.
Pourquoi ce blog
Écrire m’oblige à comprendre. Quand je publie un article sur le worker
mode de FrankenPHP ou
l’intégration de Rubix ML
dans un projet Symfony,
c’est d’abord pour moi — pour consolider ce que je viens d’apprendre. Si
ça aide quelqu’un d’autre au passage, c’est une bonne journée.
Vous trouverez aussi du contenu plus personnel sur ce site : films,
séries, quelques billets sur la tech grand public. Je n’ai pas voulu
couper cette partie — elle fait partie de qui je suis, et elle a ses
lecteurs.
Pour échanger, c’est par
LinkedIn.