web-dev-qa-db-fra.com

De quelle manière sont les services en aval et en amont?

Pour un système qui se compose de plusieurs services qui s'appellent (par exemple Front End -> Backend -> Storage), j'ai souvent entendu des gens utiliser une terminologie comme les services "en aval" ou "en amont". Je ne sais pas dans quelle direction cela signifie. Les données circulent dans les deux sens. Les demandes découlent d'un service plus orienté utilisateur vers un service principal, mais les réponses vont dans le sens opposé, il me semble donc que l'une ou l'autre façon peut être argumentée

55
user69715

Les services en aval sont ceux qui consomment le service en amont. En particulier, ils dépendent du service en amont. Ainsi, le front-end est en aval du back-end car cela dépend du back-end. Le back-end peut exister de manière significative sans le front-end, mais le front-end n'a pas de sens sans le back-end.

La dépendance ne doit pas être aussi forte que je l'avais dit dans le paragraphe précédent. Plus généralement, les services en amont n'ont pas besoin de connaître ou de se soucier de l'existence de services en aval. Les services en aval se soucient de l'existence de services en amont, même s'ils ne les consomment qu'en option.

67

Malheureusement, il existe des divergences d'opinion sur la signification de l'amont/de l'aval. Lorsque je parle d'architecture système, je la définis comme suit:

Étant donné un système préoccupant, les systèmes qui déclenchent l'échange de messages/données vers le système concerné sont des systèmes en amont, et les systèmes dont dépend le système concerné (c'est-à-dire ceux auxquels mon système initie l'échange de données) sont des systèmes en aval.

Ce lien d'ibm décrivant les interactions avec l'un de leurs produits corrobore cette vue: Intégration avec les systèmes en amont et en avalhttps://www.ibm.com/support/knowledgecenter/en/SSWSR9_11. 3.0/com.ibm.pim.dev.doc/integration/pim_con_dev_creatingjobsforintegrationcontainer.html

Un système en amont est tout système qui envoie des données au système Collaboration Server. Un système en aval est un système qui reçoit des données du système Collaboration Server.

Étant donné la terminologie "en amont" et "en aval", il peut être utile de faire une analogie avec une rivière. Si vous déposez un message (données) dans la rivière, il passe de l'amont (initiateur) à l'aval (récepteur).

Pour l'anecdote, j'ai trouvé que les architectes et les développeurs de middleware utilisent cette définition et les développeurs Web le contraire (peut-être en raison du téléchargement).

Avec les chronologies d'événement, un événement est en amont lorsqu'il se produit avant un point de la chronologie (c'est-à-dire qu'il déclenche un autre événement) et en aval lorsqu'il se produit après (c'est-à-dire qu'il a reçu l'événement). Ce qui est en amont et ce qui est en aval dans une séquence d'événements dépend donc de l'endroit où vous vous trouvez dans la chronologie. Un événement peut être à la fois en aval et en amont, selon que votre point de départ est avant ou après.

Comme @Jack le note RFC7230 tools.ietf.org/html/rfc7230#section-2. a ceci:

Les termes "en amont" et "en aval" sont utilisés pour décrire
exigences directionnelles par rapport au flux de messages: toutes
les messages circulent de l'amont vers l'aval

Je serais intéressé de voir sur les votes, dont l'utilisation la plus courante est!

10
roj

La meilleure façon d'y penser est de penser à une rivière.

La partie en aval de la rivière ne peut pas obtenir d'eau à moins qu'elle ne vienne de l'amont, c'est-à-dire que l'aval dépend de l'amont pour son eau.

Si quelqu'un détruisait la partie aval de la rivière, cela n'aurait aucun impact en amont. Si quelqu'un détruisait la partie amont de la rivière, cela aurait un impact en aval, c'est-à-dire qu'il n'obtiendrait pas d'eau.

Les services en aval dépendent donc des services en amont. Si les services en amont sont supprimés, les services en aval ne fonctionneront pas correctement.

8
Gaz_Edge

Cela peut être plus un problème linguistique et géographique qu'un problème technique.

  • La demande d'information va en amont. Il provient d'un système en aval.

  • La réponse à la demande d'informations (les informations demandées) passe en aval et est envoyée par un système en amont.

Il n'y a aucune différence entre la vue classique d'IBM et l'utilisation actuelle des termes par la communauté Web.

  • Un fournisseur de services (serveur) sera localisé en amont par rapport à un consommateur de services et envoie des informations en aval au consommateur.

  • Un consommateur de service (client) sera localisé en aval par rapport au fournisseur de service et envoie demande en amont au fournisseur.

Théoriquement, les rôles des systèmes physiques pourraient changer instantanément, tout comme la direction du flux entre ces systèmes. Dans un réseau poste à poste, cela peut être le cas.

Les termes téléchargement et téléchargement sont des termes centrés sur le client. Du point de vue du client, une demande est téléchargée et une réponse est téléchargée, ce qui est cohérent avec la métaphore du flux.

2
Martin Maat