Aller au contenu principal

Backend

La base de ce projet est la détection et le tracking de personnes, mais cela ne sert à rien si les informations obtenues ne sont pas centralisées pour être traitées et visionnées. Il est donc nécessaire de prévoir un moyen de communiquer les informations, que ce soit pour superviser les caméras ou pour qu'elles communiquent entre elles si besoin.

Il est donc nécessaire d'avoir une API capable de regrouper et traiter les données des caméras, liée à une base de données pour avoir une persistence des données. L'API doit aussi être capable d'échanger des données avec un frontend qui permettrait d'administrer et de monitorer les évènements en temps réel.

Cependant, cela fait beaucoup de rôles à réaliser pour une seule API, d'autant plus qu'avec un nombre conséquent de caméras qui enverraient leurs données en même temps, l'API risquerait d'être surchargée.

Il a donc été décidé d'avoir deux API différentes :

  • Une API "backend" chargée de réceptionner, traiter, et mettre en base de données les données envoyées pas les caméras
  • Une API "frontend" qui fait l'intermédiaire entre la base de données et le frontend, afin d'obtenir les données des caméras et d'administrer l'ensemble des évènements

De plus, il est nécessaire d'avoir 2 services supplémentaires :

  • Une base de données, ici PostgreSQL, pour stocker toutes les données des évènements
  • Un serveur de stockage d'objets, ici MinIO, pour pouvoir conserver les nuages de points et prévisualisations des caméras

schema_infrastructure

Voici plus en détails les échanges de données effectués :

schema_flux_de_donnees