Retour aux projets
Axignis

Axignis

Formation VueJs Tailwind RabbitMQ Minio Symfony Docker

Contexte

Dans le cadre du module "Projet Annuel" de ma formation en Master 2, l'école a trouvé un client nommé Loïc Rome, fondateur de la société Axignis spécialisée dans les études techniques dans le domaine du bâtiment et notamment de la sécurité incendie, conseil, assistance. Il avait un besoin très simple mais pourtant très complexe : numériser son métier. 

C'est un travail qui sera réalisé en groupe, nous étions 4 étudiants dans mon groupe. J'ai occupé le "rôle" d'architecte, UX/UI Designer et développeur BackEnd. 

 

Cela passe notamment par une numérisation des ressources nécessaires à son métier : 

  • Client
  • Bâtiment
  • Site
  • Parties
  • Equipements
  • Domaine d'équipement
  • Documents
  • Intervention
  • Rapport d'intervention
  • ...

Puis par deux besoin cruciaux : la création et saisis d'intervention qui font lieu d'un rapport par la suite et la gestion des documents avec leur versionnement. 

 

Bien que le projet est lieu dans un cadre scolaire, il n'en reste pas moins conséquent et demande beaucoup de travail d'analyse et de compréhension du métier et de ses besoins afin de fournir une solution viable et efficace permettant au client de gagner en productivité. 

 

Infrastructure

 

La première étape de notre travail était d'établir une infrastructure robuste qui puisse être scalable à long terme. Nous avons donc décidé de mettre en place un système en micro service en suivant les principes du Domain Driven Design afin de séparer les micro service selon la logique métier :

  • Building
  • CRM
  • Equipment
  • Users
  • Registry

Ces services sont accompagné par un Bundle développé spécialement pour le projet (incluant un système de pagination et de mapper entité -> dto ) afin de fournir une structure commune à nos micro services. Un micro service servant de point d'entré est aussi crée (Gateway) et gérant le contrôle des connexions entrantes et interne à notre infrastructure. 

 

Pour compléter notre infrastructure, certains outils sont déployés afin de répondre à certains besoin:

  • Minio : Object Storage pour les documents téléversés sur l'application
  • RabbitMQ : un message broker pour la synchronisation des données au travers des micro services
  • Mailpit : un service SMTP pour l'envoi de mail (utilisé en développement)
  • MariaDB : évidement un gestionnaire de base données commun pour tous les services

L'usage de micro services, à terme, permettra au client de mettre à jour un ou plusieurs micro services sans impacter le fonctionnement des autres services. Un second avantage anticipé pour la production, est la granularité avec laquelle l'application pourra être scalable car il est prévu qu'elle soit déployée dans un cluster Kubernetes. 

 

Le développement des services lui se fera avec Symfony, VueJs Tailwind et Docker pour être en raccord avec la demande du développeur qui assurera la reprise du projet à long terme (spoiler : c'est le fils même du client qui était dans mon groupe 😇 )

 

Gallerie du projet

Liens associés

Retour aux projets