De 2021 à 2023, j'ai travaillé pour la SNCF au sein d'une équipe qui construit des outils numériques pour l'exploitation du réseau ferré. Le contexte : une plateforme de données ferroviaires composée d'une dizaine de microservices, développée par une grande équipe mixte réunissant des salariés, des indépendants et des consultants de plusieurs cabinets. Il s'agit d'une mission au sein d'une équipe client, pas d'un produit Business Agile, et les services décrits ici ont été construits à plusieurs.
Le projet en détail
J'y intervenais comme développeur back-end Python senior, avec une forte composante DevOps. J'ai développé des API REST en Django et Django REST Framework, dont une partie sur des données géographiques du réseau, stockées dans PostGIS et manipulées avec GeoDjango. J'ai aussi écrit des traitements asynchrones avec Celery et Redis, et sécurisé des points d'accès entre services.
Tous les services de l'équipe partaient d'un gabarit de projet commun. Je l'ai fait évoluer : passage à Django 4, hooks de qualité exécutés dès la génération d'un nouveau service, séparation des réglages de déploiement et d'intégration continue. Une amélioration apportée au gabarit profitait ainsi à chaque nouveau service.
L'essentiel de ma contribution tenait à l'industrialisation : pipelines GitLab CI organisés en étapes de tests, images Docker réorganisées, déploiements Kubernetes pilotés par Helm, gestion des secrets et suivi des erreurs avec Sentry. J'ai également installé l'outillage de qualité (pytest et mesure de couverture, Black, isort, Flake8, mypy) pour que chaque service réponde aux mêmes exigences avant d'être livré.
Le travail au quotidien suivait un cadre précis : un ticket par évolution, une branche par ticket, une merge request relue par un autre membre de l'équipe, puis un déploiement automatique sur les environnements de recette avant la production. Les données géographiques demandaient une attention particulière aux performances des requêtes spatiales et au volume des tables, que l'équipe traitait par partitionnement et par tâches asynchrones.
Cette mission m'a appris à avancer vite dans une grande organisation sans renoncer à la rigueur : conventions partagées, revues de code systématiques, livraisons fréquentes et traçables. C'est la même exigence que j'applique aujourd'hui aux projets de Business Agile, à une échelle plus petite et avec un interlocuteur unique.