Partage
  • Partager sur Facebook
  • Partager sur Twitter

decouper un monolithe en microservices

Quand s'arreter ?

    7 novembre 2018 à 16:12:37

    Bonjour à tous,

    je réfléchi a comment découper une application JavaEE en plusieurs micro-services pour pouvoir plus tard la déployer sur le cloud et profiter des avantages de ce type d'architecture. Pour l'instant tout est dans le même fichier War même si l'appli est divisé en plusieurs modules avec Maven.

    Il s'agit d'une application web de gestion de marque page vers des tutoriaux uniquement (tout thèmes)

    dont les principales fonctionnalités sont :

    - Espace utilisateurs et création de groupe.

    - Gérer ses fiches dans des dossiers (comme dans un explorateur classique).

    - Effectuer des recherches parmi les dossiers des utilisateurs.

    - Créer des liens vers des fichier ou dossiers d'autres utilisateur dans son arborescence (favoris).

    - Gérer l’accès à ses fichiers et autoriser d'autres utilisateurs à lire, écrire, administrer.

    J'ai plusieurs classes pour commencer dont je ne sais pas si elle devrait se retrouver dans le même micro-service et donc la même base de donnée ou si je devrais les séparer, sachant que ces classes ont des liens de relations entres elle définies par annotations avec JPA eclispelink (equivalent hibernate) dans mon application.

    ces classes sont les suivantes :

    File : un fichier qui peut être un dossier ou une fiche.

    Tag : un tag de classification de fichier.

    File est Tag sont relié par une relation ManyToMany.

    User : les utilisateurs de l’application.

    FileNote : les commentaires + notes sur une fiche ou un dossier, une relation ManyToMany (n à n) entre User et File avec un attribut 'commentaire' et un deuxième attribut 'note' (de 1 à 5). Cette classe représente en faite la table intermédiaire de la relation, en JPA on ne peut faire autrement.

    AccessRight : les droits d'accès aux fichier utilisateurs, ici aussi une relation ManyToMany (n à n) entre User et File avec un attribut 'level' qui est le niveau d’accès en question (écriture, lecture, administration)

    Pour ce qui est des utilisateurs et de la classe User avec tout les opérations CRUD associées j'imagine qu'il faut un micro-service à part entière.

    Idem pour la classe File mais quand est il pour FileNote et AccessRight ? ça me semble assez logique de les mettre dans le même micro-service et BDD que File étant donné leur lien aigu. Par contre je ne pourrait pas définir les relations objets avec JPA comme je le faisait avant et devrait me contenter d'une identifiant utilisateur sous forme d'entier par exemple.

    Pour la classe Tag ça me parait trop petit et trop lié au fichier pour être séparé.

    Voilà vos conseils et éclaircissement seront les bienvenus pour me guider dans cette aventure périlleuse à laquelle je me prépare.

           

    -
    Edité par monsio 7 novembre 2018 à 16:22:16

    • Partager sur Facebook
    • Partager sur Twitter

    decouper un monolithe en microservices

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown