Shubham Tiwari
Shubham Tiwari

Reputation: 1181

What is Upstream and Downstream services in a microservices based architecture?

I have heard of the terms "Upstream Services" and "Downstream Services" in general terms but I came across some articles on microservices architecture where they have used these terms. I wasn't able to understand what an upstream and downstream service in a microservices based architecture would be? Can somebody give me a brief explanation?

I already know that upstream services are those that do not depend on any other services and downstream services depend on the upstream services. For example, the front-end would be a downstream service to the backend as it depends on it.

I am developing the microservices in .Net Core.

Upvotes: 70

Views: 70848

Answers (5)

tom redfern
tom redfern

Reputation: 31780

Definition 1: The direction of action

Upstream: receiving requests from / sending responses to

  • A service upstream is calling me.

Downstream: making requests to / receiving responses from

  • I am calling a service downstream.

Definition 2: The direction of dependency

Upstream: making requests to / receiving responses from

  • I am calling a service upstream.

Downstream: receiving requests from / sending responses to

  • A service downstream is calling me.

So,

There are resources on the internet which support both of these definitions. Maybe we will resolve this question one day, but for now the answer is: it's either.

Upvotes: 96

Tom Taylor
Tom Taylor

Reputation: 3560

Upstream and Downstream in a Production Process enter image description here

Upstream and Downstream Software Dependencies enter image description here

Source

A picture is worth a thousand words !!

Upvotes: 19

Daniel B
Daniel B

Reputation: 4545

It's the stream of service, so the provider is upstream and the consumer is downstream.

http://reflectoring.io/upstream-downstream

Upvotes: 2

Ashish Pani
Ashish Pani

Reputation: 1071

The downstream services are the ones that consume the upstream service. In particular, they depend on the upstream service. More generally, upstream services don't need to know or care about the existence of downstream services. Downstream services care about the existence of upstream services, even if they only optionally consume them.

http://reflectoring.io/upstream-downstream

Upvotes: 26

Shijing Lv
Shijing Lv

Reputation: 6726

I see it is a metaphor of water flow: the origin of a river is upstream, the outlet is downstream.

But in practice it is gibberish. Nowadays services exchange data through different means. A service can call another service to fetch data, it can also call the other service to push data. A service can receive data from another service by calls out first or it can receive data passively, like receiving push notification.

At work, you can use it judiciously: if someone who's more senior than your calls a service upstream service, go with it; if you are the most senior one on the team, name whatever you like.

Upvotes: 20

Related Questions