Bonjour,

j'aurais une petite question par rapport à l'architechture d'un micro-service que je dois développer.

Ce service consiste à recevoir l'original d'une image uploadé par l'utilisateur, image qui sera ensuite redimensionnée sous plusieurs formats :

  • original et thumbnail pour commencer
  • possibilité de créer d'autres tailles plus tard si besoin par script à partir des originaux (script executé par le serveur si besoin, les utilisateurs ne toucheront à rien)

puis uploadée dans un bucket AWS S3 (qui contiendra tous les fichiers -> non dépendant de l'utilisateur). Un seul exemplaire d'une image devra se trouver dans le bucket pour ne pas gacher de la mémoire.

(Fonctionne grossièrement comme dropbox, Facebook, ... au niveau de leur gestion des fichiers).

Pas de problèmes niveau developement (langage non défini pour le moment, probablement NodeJS ou Go), ma question porte donc sur l'architecture à utiliser.

Ma première reflexion m'a orienté vers ces differentes étapes:

  • L'utilisateur upload le fichier original vers le micro-service
  • Le fichier original est haché
  • Le nom du fichier change et prend le résultat du hash (ex: img0001.jpg -> hash.jpg)
  • Vérification dans la bdd que ce hash n'existe pas
  • Si le fichier existe: ajout d'un utilisateur owner
  • Si le fichier n'existe pas: enregistrement de son nom (le hash) dans la bdd, de ses métadatas, et lien vers l'utilisateur owner
  • Traitement de l'image (hash.jpg, hash-thumb.jpg)
  • Upload dans le bucket

Le fichier ne pourra pas être supprimé du bucket tant qu'au moins un owner pointe sur lui.

Ce micro service se doit de rester général et seulement orienté gestion d'images, et pourra être par la suite utiliser dans différents projets.

Je suis en plein apprentissage des micro-services, donc si quelqu'un de plus expérimenté passe par là, est-ce que je suis sur la bonne voie pour définir l'architecture utilisée ?

Merci d'avance !

2 réponses


Grafikart
Réponse acceptée

Cela me semble bon au niveau de la logique.

briceeeee
Auteur
Réponse acceptée

Merci de ta réponse, ça me conforte pour partir du bon pied :)