IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Spring/Rest : Choix Architecture logiciel


Sujet :

Spring Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable support
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable support
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Spring/Rest : Choix Architecture logiciel
    Bonjour,

    Résumé: Ma question est de savoir si mon idée de tendre vers Spring et Rest pour l'évolution de mon application est pertinante.

    Situation actuelle:
    Actuellement mon application (utilisant uniquement Javafx & Maven) fonctionne en mode standalone : pas de serveurs, l'application est déployée directement sur le poste utilisateur.
    Basiquement, cette application interroge un serveur sur le web tier toute les minutes et si le fichier qui m'intéresse a été mis à jour, l'application affiche ces données à l'utilisateur.

    Problèmes:
    - J'ai de plus en plus d'utilisateurs et j'ai peur que le serveur web tier ne 'sature' à un moment (ou qu'il voit trop de requête dans la même minute et ne bloque l'IP derrière laquelle se situent tout mes clients)
    - Je souhaite optimiser l'architecture: centraliser l'identification des updates, les clients discutants avec ce "noeud central" (mon propre serveur) pour savoir si les informations ont été mises à jour. Avoir un serveur central permettra aussi des développements futurs.

    Mon idée:
    Utiliser une application java Spring sur mon serveur (Spring facilitant la mise en place de l'API Rest), qui se chargerait d'interroger toute les minutes le site web et de répondre, via Rest donc, aux demandes d'update des clients.

    Problèmes identifiés (pour l'instant):
    Je ne sais pas si sur mon "noeud central" (serveur), une seule application suffira (en charge de l'interrogation du site web tiers et de répondre aux requêtes Rest des frontend utilisateurs) ou s'il vaut mieux 2 applications distinctes (une appli java pour rechercher les mises à jour et une autre pour répondre aux requêtes Rest).

    Au dela du processus demandant si oui ou non il y a une update, est-il pertinant d'utiliser Rest pour transmettre les updates (un fichier CSV allant de 1 à 30 ko en fin de journée), ou ne vaut-il mieux pas laisser le client accéders en Http au fichier (ce dernier ayant été récupéré lors de la détection de la mise a jour par le processus en charge de la surveillance) ?

    Question subsidiaire : quelle est la meilleure solution pour que ma vérification d'update soit faite toute les minutes (dois-je lancer un thread de vérification toute les minutes après que le précédant ai rendu la main ou y a t-il une meilleure solution sous Spring ?)

    PS: vous l'aurez surrement compris, je suis un débutant (autodidacte en java, ça sera ma 1ère fois avec Spring, même si j'ai déjà lus quelques tuto)

    Merci d'avance pour vos conseils

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Utiliser une application java Spring sur mon serveur (Spring facilitant la mise en place de l'API Rest), qui se chargerait d'interroger toute les minutes le site web et de répondre, via Rest donc, aux demandes d'update des clients.
    Ca me semble effectivement être une bonne idée. Vous déplacez la charge vers votre serveur mais la charge reste la. Si vous avez de plus en plus de client qui font une demande régulière sur votre serveur il faudrait peut-être voir le nombre de "hit" (il y à une modification) et de "miss" (il n'y à pas de modification, le demande est faite pour rien). Si vous avez un gros ratio de "miss" il faudrait peut-être voir à implémenter un protocole qui permettrait a votre backend (noeud central) de notifier les clients quand il y à eu un changement.


    Je ne sais pas si sur mon "noeud central" (serveur), une seule application suffira (en charge de l'interrogation du site web tiers et de répondre aux requêtes Rest des frontend utilisateurs) ou s'il vaut mieux 2 applications distinctes
    Si vous partez dans cette direction, vous devrez gèrer deux systèmes, ça n'est pas beaucoup mais ça reste peut-être trop pour ce que vous voulez faire. Faites un bonne architecture interne, avec un découpage maximal entre les deux composants pour pouvoir facilement les séparer et les déployer séparément plus tard si le besoin est la. Mais, dans un premier temps, je resterais avec un seul serveur/service/noeud.

    Au dela du processus demandant si oui ou non il y a une update, est-il pertinant d'utiliser Rest pour transmettre les updates (un fichier CSV allant de 1 à 30 ko en fin de journée), ou ne vaut-il mieux pas laisser le client accéders en Http au fichier (ce dernier ayant été récupéré lors de la détection de la mise a jour par le processus en charge de la surveillance) ?
    C'est à vous seul de répondre à cette question car nous ne maitrisons pas les besoins. Mais si ça s'avère utile, oui c'est pertinant. Vous pourriez avoir deux point d'entrées dans votre API, un pour vérifier les updates et un autre pour obtenir le CSV dans l'état actuel.

    Question subsidiaire : quelle est la meilleure solution pour que ma vérification d'update soit faite toute les minutes (dois-je lancer un thread de vérification toute les minutes après que le précédant ai rendu la main ou y a t-il une meilleure solution sous Spring ?)
    Spring à tout ce qu'il faut pour planifier, exécuter et observer un batch à intervalles régulières. Malheureusement je ne suis plus assez à jour su ce framework pour vous donner les détails.

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable support
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable support
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre réponse gervais.

    Citation Envoyé par gervais.b Voir le message
    Ca me semble effectivement être une bonne idée. Vous déplacez la charge vers votre serveur mais la charge reste la. Si vous avez de plus en plus de client qui font une demande régulière sur votre serveur il faudrait peut-être voir le nombre de "hit" (il y à une modification) et de "miss" (il n'y à pas de modification, le demande est faite pour rien). Si vous avez un gros ratio de "miss" il faudrait peut-être voir à implémenter un protocole qui permettrait a votre backend (noeud central) de notifier les clients quand il y à eu un changement.
    J'y ai songé, mais comme je passe au travers de firewall (pour les clients) et ne connaissant que les message de type broadcast/multicast, ce n'est pas à l'ordre du jour. Si vraiment le nombre de miss devient un problème, c est que mon appli se sera envolé et je passerai le flambeau à une vrai équipe de dev (et étant sous spring, un passage en spring cloud pourrait alors être envisagé).

    Citation Envoyé par gervais.b Voir le message
    Si vous partez dans cette direction, vous devrez gèrer deux systèmes, ça n'est pas beaucoup mais ça reste peut-être trop pour ce que vous voulez faire. Faites un bonne architecture interne, avec un découpage maximal entre les deux composants pour pouvoir facilement les séparer et les déployer séparément plus tard si le besoin est la. Mais, dans un premier temps, je resterais avec un seul serveur/service/noeud.
    Bien noté. Je pars donc sur une implémentation côté serveur avec un seul service. Je vais séparer les taches dans des packages (une partie est déjà dans un package du front end existant). Si le besoin s'en fait sentir, je basculerai la récupération du CSV toute les minutes dans un 2nd service.

    Citation Envoyé par gervais.b Voir le message
    C'est à vous seul de répondre à cette question car nous ne maitrisons pas les besoins. Mais si ça s'avère utile, oui c'est pertinant. Vous pourriez avoir deux point d'entrées dans votre API, un pour vérifier les updates et un autre pour obtenir le CSV dans l'état actuel.
    Je pense que je vais essayer cela (envoyer le contenu du CSV en Rest), l'implémentation d'autre endpoint Rest étant déjà au programme.


    Citation Envoyé par gervais.b Voir le message
    Spring à tout ce qu'il faut pour planifier, exécuter et observer un batch à intervalles régulières. Malheureusement je ne suis plus assez à jour su ce framework pour vous donner les détails.
    Je vais chercher.

    Encore merci pour votre aide

  4. #4
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Heureux d'avoir pu vous aider.

    N'oubliez pas de marquer votre question comme résolue si vous considérez que c'est le cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix d'architecture logicielle pour une migration en JEE
    Par kelkan dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 08/01/2016, 15h19
  2. Architecture logicielle: le bon choix d'une architecture
    Par sallsynta dans le forum Applications
    Réponses: 0
    Dernier message: 09/11/2013, 17h12
  3. Réponses: 0
    Dernier message: 01/08/2008, 10h57
  4. Qu'est ce qu'une architecture logicielle?
    Par car dans le forum Architecture
    Réponses: 1
    Dernier message: 11/11/2004, 17h23
  5. [Choix] Architecture réseau
    Par myfives dans le forum Développement
    Réponses: 7
    Dernier message: 09/06/2004, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo