Sfortunatamente ci sono differenze di opinione sul significato di upstream / downstream. Quando parlo di architettura di sistema, la definisco come segue:
Dato un sistema di preoccupazione, i sistemi che avviano lo scambio di messaggi / dati con il sistema di preoccupazione sono sistemi a monte e i sistemi da cui dipende il sistema di preoccupazione (cioè quelli da cui il mio sistema avvia lo scambio di dati) sono sistemi a valle.
Questo link di IBM che descrive le interazioni con uno dei loro prodotti conferma questa visione:
integrazione con i sistemi a monte e a valle https://www.ibm.com/support/knowledgecenter/en/SSWSR9_11.3.0/com.ibm.pim.dev.doc /integration/pim_con_dev_creatingjobsforintegrationcontainer.html
Un sistema upstream è qualsiasi sistema che invia dati al sistema Collaboration Server. Un sistema a valle è un sistema che riceve dati dal sistema Collaboration Server.
Data la terminologia "a monte" e "a valle", può essere utile fare un'analogia con un fiume. Se si rilascia un messaggio (dati) nel fiume, esso scorre da monte (iniziatore) a valle (ricevitore).
Aneddoticamente, ho scoperto che architetti e sviluppatori di middleware usano questa definizione e gli sviluppatori web l'opposto (forse a causa del "caricamento").
Con le linee temporali degli eventi, un evento è a monte quando si verifica prima di un punto sulla linea temporale (ovvero attiva un altro evento) e a valle quando si verifica successivamente (ovvero ha ricevuto l'evento). Ciò che è a monte e ciò che è a valle in una sequenza di eventi, quindi, dipende da dove ti trovi nella sequenza temporale. Un evento può essere sia a valle che a monte, a seconda che il punto di partenza sia precedente o successivo.
Come osserva @Jack RFC7230 tools.ietf.org/html/rfc7230#section-2.3 ha questo:
I termini "upstream" e "downstream" sono usati per descrivere i
requisiti direzionali in relazione al flusso di messaggi: tutti i
messaggi scorrono da upstream a downstream
Sarei interessato a vedere sui voti quale sia l'uso più comune!