다운 스트림 및 업스트림 서비스는 어떤 방법입니까?


45

서로를 호출하는 여러 서비스 (예 : 프론트 엔드-> 백엔드-> 스토리지)로 구성된 시스템의 경우 "다운 ​​스트림"또는 "업스트림"서비스와 같은 용어를 사용하는 사람들이 종종 들었습니다. 이것이 어떤 방향인지는 확실하지 않습니다. 데이터는 양방향으로 흐릅니다. 요청은 더 많은 사용자 대면에서 더 많은 백엔드 서비스로 흐르지 만 응답은 반대 방향으로 흐르므로 어느 쪽이든 논쟁의 여지가 있습니다.


3
흥미롭게도 HTTP 사양 RFC 7230은 2.3 절의 "업스트림"및 "다운 스트림"이라는 용어 정의를 포함합니다. tools.ietf.org/html/rfc7230#section-2.3
Jack

답변:


56

다운 스트림 서비스는 업스트림 서비스를 사용하는 서비스입니다. 특히 업스트림 서비스에 의존 합니다. 따라서 프런트 엔드는 백엔드에 의존하기 때문에 백엔드의 다운 스트림입니다. 백엔드는 프런트 엔드없이 의미있게 존재할 수 있지만 프런트 엔드는 백엔드 없이는 의미가 없습니다.

이전 단락에서 만든 것처럼 종속성을 강하게 할 필요는 없습니다. 보다 일반적으로, 업스트림 서비스는 다운 스트림 서비스의 존재를 알거나 신경 쓸 필요가 없습니다. 다운 스트림 서비스는 선택적으로 서비스를 소비하더라도 업스트림 서비스의 존재를 관리합니다.


"서비스 다운 스트림" 대신 "다운 스트림 서비스" 라고 생각합니다 .
Nawaz

8

불행하게도 업스트림 / 다운 스트림의 의미에 대한 의견 차이가 있습니다. 시스템 아키텍처에 대해 이야기 할 때 다음과 같이 정의합니다.

관심 시스템이 주어지면, 관심 시스템으로 메시지 / 데이터 교환을 시작하는 시스템은 업스트림 시스템이고, 관심 시스템이 의존하는 시스템 (즉, 내 시스템이 데이터 교환을 시작하는 시스템)은 다운 스트림 시스템입니다.

IBM은 자사 제품 중 하나와 상호 작용을 설명에서이 링크는이 견해를 뒷받침 : 업스트림 및 다운 스트림 시스템과 통합 https://www.ibm.com/support/knowledgecenter/en/SSWSR9_11.3.0/com.ibm.pim.dev.doc /integration/pim_con_dev_creatingjobsforintegrationcontainer.html

업스트림 시스템은 Collaboration Server 시스템으로 데이터를 보내는 시스템입니다. 다운 스트림 시스템은 Collaboration Server 시스템에서 데이터를 수신하는 시스템입니다.

'상류'와 '하류'라는 용어가 주어지면 강과 유추하는 데 도움이 될 수 있습니다. 강에 메시지 (데이터)를 놓으면 상류 (개시 자)에서 하류 (수신자)로 흐릅니다.

일화 적으로, 건축가와 미들웨어 개발자는이 정의와 웹 개발자를 반대 방향으로 사용한다는 것을 알았습니다 ( '업로드'때문일 수 있음).

이벤트 타임 라인을 사용하면 타임 라인의 한 지점 이전에 이벤트가 발생하면 (예 : 다른 이벤트가 트리거 됨) 이벤트가 이후에 발생하면 (예 : 이벤트가 수신 됨) 다운 스트림이됩니다. 따라서 일련의 이벤트에서 업스트림 및 다운 스트림은 타임 라인의 위치에 따라 다릅니다. 시작 지점이 시작하기 전인지 또는 이후인지에 따라 이벤트는 다운 스트림 및 업스트림 일 수 있습니다.

@Jack이 언급 한 것처럼 RFC7230 tools.ietf.org/html/rfc7230#section-2.3 에는 다음이 있습니다.

"업스트림"및 "다운 스트림"이라는 용어
는 메시지 흐름과 관련하여 방향 요구 사항 을 설명하는 데 사용됩니다 . 모든
메시지는 업스트림에서 다운 스트림으로 흐릅니다.

가장 일반적인 사용법은 투표에 관심이 있습니다.


1
당신이 그 문제에 대해 혼란스러워하기 때문에 이것은 혼란 스럽습니다. 불일치가 없으며 관점의 차이 만 있습니다.
Martin Maat

@MartinMaat 첫 문장에 동의하지 않고 두 번째 문장에 동의합니다.
roj

3

이것을 생각하는 가장 좋은 방법은 강을 생각하는 것입니다.

강의 하류 부분은 상류에서 나오지 않는 한 물을 얻을 수 없습니다. 즉 하류는 물의 상류에 의존합니다.

누군가 강의 하류 부분을 파괴하더라도, 이것은 상류에 영향을 미치지 않습니다. 누군가 강의 상류를 파괴하면 하류에 영향을 미치게됩니다.

따라서 다운 스트림 서비스는 업스트림 서비스에 의존합니다. 업스트림 서비스가 제거되면 다운 스트림 서비스가 제대로 작동하지 않습니다.


그리고 약간의 명확성을 위해; 표준 CRUD 클라이언트-서버 관계에서 양쪽 끝은 서로 업스트림 및 다운 스트림입니다. 서버가 다운 된 경우 클라이언트는 데이터 나 업데이트를받을 수 없으며, 클라이언트가없는 경우 서버에 실행할 지침이 없습니다.
델리 오스

1
@Delioth가 동의하지 않습니다. 백엔드는 많은 클라이언트를 가질 수 있지만 그 중 하나에 의존하지 않습니다. 클라이언트를 제거한 경우에도 백엔드가 작동합니다. 클라이언트는 사용할 수있는 많은 백엔드를 가질 수 있습니다. 클라이언트가 모르는 상태에서 백엔드 하나를 제거하면 클라이언트가 제대로 작동하지 않습니다. 클라이언트가 다운 스트림입니다. 백엔드가 업스트림입니다.
Gaz_Edge

1

이것은 기술적 문제보다 언어 및 지리적 문제 일 수 있습니다.

  • 정보 요청이 업스트림으로 진행됩니다. 다운 스트림 시스템에서 나옵니다.

  • 정보 요청 (요청 된 정보)에 대한 응답은 다운 스트림이되고 업스트림 시스템에 의해 전송됩니다.

기존 IBM보기와 오늘날 웹 커뮤니티의 용어 사용 간에는 차이가 없습니다.

  • 서비스 제공자 (서버)는 서비스 소비자와 비교하여 업스트림 에 위치하고 소비자 에게 다운 스트림 정보를 보냅니다 .

  • 서비스 소비자 (클라이언트)는 서비스 공급자와 비교하여 다운 스트림 에 위치하고 요청을 공급자 에게 업스트림으로 보냅니다 .

물리적 시스템의 이론적 인 역할은 즉시 변경 될 수 있으며 해당 시스템 간의 스트림 방향도 변경 될 수 있습니다. 피어 투 피어 네트워크에서는 이것이 사실 일 수 있습니다.

업로드 및 다운로드라는 용어는 고객 중심 용어입니다. 클라이언트의 관점에서 요청이 업로드되고 응답이 다운로드되며 이는 스트림 은유와 일치합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.