Une application métier en production depuis 2015
Application de gestion de tickets et de tâches développée sur mesure pour une équipe de la direction technique d'Orange. Démarrée en 2015 comme un outil interne pensé pour quelques mois, elle est toujours en production, maintenue et utilisée au quotidien.
Je la conçois, la développe et la maintiens depuis le premier commit, en freelance et en lien direct avec la cheffe de projet côté Orange.
Contexte
L'équipe suit chaque jour des demandes, des incidents et des tâches récurrentes réparties entre plusieurs départements. Il lui fallait un outil qui épouse ses propres règles de fonctionnement plutôt que d'adapter son organisation à un logiciel générique.
Ce projet est le premier d'une collaboration qui dure depuis plus de dix ans et qui compte aujourd'hui cinq applications web conçues, développées et maintenues pour la direction technique.
Le problème à résoudre
- Suivre chaque ticket de bout en bout — de la création à la clôture, avec commentaires, pièces jointes et historique des actions.
- Organiser le travail par département — affectation des comptes, droits d'accès et vues propres à chaque équipe.
- Donner de la visibilité au management — indicateurs d'activité individuels et collectifs, lisibles sans export manuel.
- Retrouver vite l'information — recherche et filtres sur un historique qui grossit chaque année.
Contraintes
- Durée de vie — un outil prévu pour quelques mois, devenu un outil quotidien : chaque choix doit rester maintenable sur des années.
- Continuité de service — l'application ne peut pas être arrêtée pour une refonte ; les évolutions se font en production, par petites étapes.
- Environnement grand compte — déploiement sur la plateforme OpenShift interne, intégration continue GitLab et secrets gérés dans Vault.
- Obsolescence technique — PHP 5.6, Symfony 2 et AngularJS au départ : des briques qui ont toutes été abandonnées ou profondément remaniées depuis.
Choix techniques et pourquoi
- Symfony et MySQL comme fondations — un socle stable et documenté, partagé avec les autres projets de l'équipe. Cette cohérence permet de mutualiser l'outillage et de garder un niveau de qualité homogène d'une application à l'autre.
- Montées de version incrémentales — Symfony est passé de la version 2 à la 6.4 étape par étape (2, 3, 4, 5, 6), sans réécriture ni interruption de service. La dette technique est traitée au fil de l'eau, pas en urgence.
- API Platform pour exposer les données — une séparation nette entre la logique métier et l'interface, qui rend possible le remplacement progressif du front-end.
- Migration d'AngularJS vers React et TypeScript — AngularJS n'étant plus maintenu, l'interface est migrée vers React, TypeScript et TanStack, écran par écran plutôt qu'en big bang.
- Elasticsearch et Redis — Elasticsearch pour la recherche plein texte et les filtres, Redis pour le cache applicatif : les temps de réponse ne dépendent plus de la taille de l'historique.
- Une image Docker et une librairie PHP communes — même système, même configuration et même chaîne de déploiement pour tous les projets Orange que je maintiens. Une mise à jour de l'image de base profite à toutes les applications.
Ce qui a été livré
- Gestion de tickets et de tâches — création, assignation, suivi et clôture, avec commentaires, pièces jointes et historique complet.
- Tableaux de bord — tickets ouverts, résolus et en retard, répartis par département et par priorité.
- Statistiques individuelles et collectives — métriques par utilisateur et par équipe, avec graphiques d'évolution.
- Administration — comptes utilisateurs, départements et permissions d'accès.
- Recherche avancée — recherche plein texte, filtres combinables et vues enregistrées.
- Exploitation — conteneurisation, pipeline GitLab CI, déploiement sur OpenShift et maintenance continue.
Résultats
L'application est en production depuis 2015 et toujours utilisée au quotidien. Elle a traversé le passage de PHP 5.6 à PHP 8 et de Symfony 2 à Symfony 6.4 sans interruption de service, ainsi que les migrations d'infrastructure vers OpenShift.
La relation s'est élargie au fil des années : d'un outil interne isolé, la mission est passée à cinq applications pour la même direction technique, construites sur les mêmes fondations.
Stack
- Back-end — PHP, Symfony (de la version 2 à la 6.4), API Platform
- Front-end — AngularJS, en cours de migration vers React, TypeScript et TanStack ; Bootstrap
- Données — MySQL, Redis, Elasticsearch
- Infrastructure — Docker, OpenShift, GitLab CI, Vault
Pour aller plus loin
Ce projet illustre mon approche de la maintenance et de l'évolution long terme d'applications web. Le retour d'expérience complet sur cette collaboration est détaillé dans l'article plus de 10 ans de prestation freelance pour Orange, et le socle commun aux applications dans une image Docker de base pour plusieurs applications Symfony.