Fondation des Parkings - Projet Module Tarifaire

En fin d’année 2020, nous avons remporté l’appel d'offres lancé par la Fondation des Parkings pour un nouveau projet numérique qui s’inscrit dans sa stratégie globale de transformation numérique de la fondation.

MobileThinking a donc été mandaté pour accompagner et développer le projet “Module tarifaire”, qui permet de paramétrer les tarifs des parkings et de calculer les coûts de stationnement dans les différentes infrastructures dont la Fondation des Parkings détient la gestion ainsi que sur la voie publique.

Le Module tarifaire permet de centraliser et d’uniformiser le calcul des coûts qui possédait jusque-là différentes implémentations dans différents systèmes, mais aussi d'étendre ses possibilités en termes de configuration, et donc d’offre pour ses clients.

Par exemple, lorsque vous payez votre stationnement avec l'une des applications mobiles des partenaires (voir une sélection sur https://www.gepark.ch/), leur serveur contacte le moteur de calcul commun que nous avons développé pour la Fondation des Parkings. Auparavant, chaque partenaire disposait de son propre moteur de calcul et devait mettre à jour ses configurations tarifaires de manière indépendante créant ainsi des communications supplémentaires et des risques d'erreurs importants.
Dashboard configurateur fondation des parkings

Le Module Tarifaire

L'objectif du module est d'utiliser différents calculs et contextes (ex. la possibilité de bénéficier d'une réduction ou d'une heure de stationnement gratuite) pour déterminer les tarifs de stationnement. Son but est de répondre à différentes demandes provenant de diverses sources, telles que des applications de paiement ou une simulation à partir d'un site Web (ex. pour simuler les coûts de tout stationnement avec des parcomètres ou des collecteurs de péages in tout parking que la Fondation des Parkings gère). Ce calcul peut être complexe suivant le ou les contexte(s) et doit répondre à différentes règles configurées dans le système.

Par exemple, certains parkings offrent une ou plusieurs heures gratuites par jour à chaque propriétaire de voiture. Avec le nouveau calculateur, il est garanti que le temps gratuit n'est accordé qu'une fois par 24h et qu'il n'y a aucune possibilité de contourner le système et d'utiliser plus de temps gratuit que prévu.

À l’aide d’un outil de simulation que nous avons développé dans le configurateur, il est possible de tester et de simuler les différentes règles et fonctions de calcul tarifaire.
Simulateur tarif fondation des parkings
Un grand point de complexité réside dans le fait que l’ensemble des configurations tarifaires de parkings sont versionnées. L’objectif est de pouvoir recalculer un tarif dans le passé malgré une modification du tarif cible.

Client

Fondation des parkings

Statut

En production

Role

Conception et développement du module tarifaire

Technologies

Laravel - Lumen - VueJS - Docker - Kubernetes - POSTGRE

Années

2021 - 2022

Notre contribution

D’un point de vue architecture

  • Nous avons décidé de découper le projet en 3 services : le service de calcul de tarifs, le configurateur de tarifs (backoffice de gestion), et le module du contexte.
  • Le service de calcul de tarifs est chargé de fournir une API que les partenaires sélectionnés peuvent contacter pour calculer les coûts d'un stationnement en fonction d'une heure de début et de fin de stationnement (et d'autres paramètres possibles). Ce service est extrêmement critique, il doit être disponible en permanence, et l'architecture permet de créer plusieurs instances pour assurer la redondance et la scalabilité.
  • Le configurateur (backoffice de gestion) comprend plusieurs services : la configuration de tarifs, la gestion des utilisateurs et droit d’accès, ainsi que la configuration des contextes, etc.
  • Le module du contexte permet la synchronisation de différentes sources de données (ex. recevoir des données d'autres systèmes que la Fondation des Parkings intègre dans son infrastructure informatique). Le calculateur peut alors utiliser ces données pour déterminer le contexte des utilisateurs du parking et leur fournir la tarification la plus appropriée (par exemple pour les abonnements).

D’un point de vue technologie et langage de programmation

  • Le langage de programmation de l'ensemble du système est le PHP à la version 8.0+. Tous les modules utilisent le framework Laravel (https://laravel.com/). Le configurateur (backoffice de gestion) utilise le framework Vue.js (https://vuejs.org/) pour son frontend. Le module contextuel utilise les queues Kafka (https://kafka.apache.org/) et Redis (https://redis.io/) pour gérer la synchronisation des données via des événements et des jobs Laravel Horizon (https://laravel.com/docs/9.x/horizon). La spécification OpenAPI (Swagger - https://swagger.io/specification/) pour la description de l’ensemble des API mises à disposition. Nous travaillons uniquement avec des technologies open source répandues et maintenues depuis de nombreuses années permettant de ne pas être dépendant de solutions ou librairies propriétaires. Ces technologies vont permettre une pérennité du système sur le long terme.
  • Chaque module possède sa propre série de tests unitaires et fonctionnels. Nous exécutons ces tests pendant le développement et la phase de déploiement via le système GitLab CI/CD. Le système dispose de trois environnements, test, staging et production, tous basés sur leur propre namespace Kubernetes. Cette séparation permet à la Fondation des Parkings d'avoir un contrôle total sur les mises à jour du système. Ils peuvent tester le système et définir quand mettre en production une nouvelle fonctionnalité ou une modification.

D’un point de vue gestion de projet

  • Dans le cadre de ce projet “Module tarifaire”, nous avons commencé par réaliser avec l’équipe de la Fondation des Parkings, les 1ère phases sous la forme d'atelier de conception.
  • Ces ateliers nous ont permis d'analyser et de concevoir l’architecture permettant de gérer les différentes règles et cas d'usages pour le calcul des tarifs.
  • Sur la base de ces ateliers, nous avons développé en approche itérative le Module tarifaire, et avons gardé un contact hebdomadaire avec l’équipe afin de leur présenter l’avancement du projet et préciser les prochaines fonctionnalités à développer.
  • De cette façon, nous sommes restés alignés tout au long du projet pour livrer une solution de qualité malgré la grande complexité des besoins métiers de ce projet.
Confiduration de tarif - fondation des parkings

Et la suite ?

La Fondation des Parkings est en pleine transformation digitale et nous sommes ravis de continuer de les accompagner dans cette entreprise.
Vous avez une idée pour un projet numérique ? Nous sommes là pour vous aider.