Skip to content

Instantly share code, notes, and snippets.

@Integralist
Last active April 2, 2024 14:01
Show Gist options
  • Save Integralist/730b6f33dc5b0763b152caaff81d397f to your computer and use it in GitHub Desktop.
Save Integralist/730b6f33dc5b0763b152caaff81d397f to your computer and use it in GitHub Desktop.
[Upstream vs Downstream] #upstream #downstream

Upstream

Upstream components are other parts of the system that your component depends on to do its job.

If the design of an upstream component changes, the ability of your component to function may be affected.

If an upstream component has a bug, this bug may be manifested in your component.

Downstream

Downstream components are parts of the system that your component can affect.

Changes in your component can ripple to components that are downstream from your component.

Example

Consider an application that consists of a database tier and an application tier.

The database tier would be considered to be upstream of the application tier.

Rationale

The reason behind why I use the flow 'direction' I do (e.g. downstream services are those my service can affect, and upstream services are those services I rely upon and who can affect me) is related to the flow of water.

If you look at a mountain stream, the water flows from the top of the mountain ...'downstream'. If a large rock falls upon the path halfway up the mountain, then that will of course prevent the water from flowing further (the water flow has been restricted). Any people at the bottom (i.e. downstream) of the mountain will be affected by this rock falling on the stream from above (i.e. upstream) their own position.

@sivasubramaniamv
Copy link

This was really helpful, thanks 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment