업스트림(Upstream)과 다운스트림(Downstream)

1. 기본 정의 : 흐르는 강물(Stream)

이 용어는 데이터와 요청의 흐름을 강물에 비유한 것

  • 업스트림 (Upstream, 상류): 데이터(물)의 원천이 되는 곳
  • 다운스트림 (Downstream, 하류): 데이터(물)를 받아서 소비하는 곳

흐름의 법칙

  • 데이터(응답): 상류 → 하류 (위에서 아래로 흐름)
  • 요청(Request): 하류 → 상류 (거슬러 올라감)

2. 핵심 개념 : “위치는 상대적이다”

업스트림과 다운스트림은 절대적인 역할이 고정된 것이 아님

“누구를 기준(주체)으로 보느냐"에 따라 달라지는 상대적인 개념

전체 흐름이 다음과 같을 때를 가정

클라이언트 → ALB(로드밸런서) → 서버(Core-System) → Cafe24(외부 API)

각 주체(나)의 시점별 차이

1) ALB(로드밸런서)의 입장

  • 나의 시선: “나는 서버한테 요청을 보내고 답을 받으니까, 내 윗물(Upstream)은 서버야”
  • 특징: ALB는 서버 뒤에 Cafe24가 있는지 없는지 알 필요가 없으며, 오직 바로 위의 서버만 봄

2) 서버(Core-System)의 입장

  • 나의 시선: “나는 Cafe24한테 요청을 보내고 답을 받으니까, 내 윗물(Upstream)은 Cafe24야”
  • 특징: 내 뒤에 ALB가 있는지, 클라이언트가 바로 붙었는지는 중요하지 않음. 나는 데이터를 주는 Cafe24만 봄

3. 상황별 관계 요약표

내가 어떤 위치에서 개발하거나 설정을 만지느냐에 따라 업스트림과 다운스트림은 계속 변함

흐름(상황)기준 (나)나의 업스트림 (데이터 원천)나의 다운스트림 (데이터 소비)
기본 웹 구조ALB (로드밸런서)백엔드 서버 (WAS)클라이언트 (브라우저)
외부 연동백엔드 서버Cafe24 API 서버ALB (혹은 클라이언트)
DB 조회백엔드 서버데이터베이스 (DB)ALB (혹은 클라이언트)

4. 결론 및 용어 사용 팁

  1. 기술적 정의: “나와 직접 연결되어 데이터를 건네주는 바로 윗 단계의 대상“이 나의 업스트림 (최초의 원천이 어디인지는 중요하지 않음)
  2. 리퀘스트의 방향:
    • 서버 → Cafe24 요청: 업스트림 리퀘스트(Upstream Request)
    • Cafe24 → 서버 데이터 응답: 업스트림 응답(Upstream Response)
  3. 에러 해석:
    • Upstream Timeout 에러가 발생했다면?
    • 의미: “내가 요청을 보낸 바로 윗 놈(Upstream)이 응답을 안 준다.”
    • 조치: ALB 로그에 이 에러가 있다면, ALB의 윗물인 백엔드 서버를 점검