⭐ Plogramming/JAVA

Upstream과 Downstream

김진한
  • Upstream
    • 주어진 시스템에서 데이터나 자원의 원본 또는 이전 단계(상류)
    • 특정 프로세스나 작업에 필요한 입력이 되는 원본
    • 데이터 처리 파이프라인에서 데이터를 생성하거나 공급하는 시스템 또는 컴포넌트

 

  • Downstream
    • 주어진 시스템에서 데이터나 자원의 목적지 또는 후속 단계(하류)
    • 특정 프로세스나 작업 결과물을 전달하거나 처리하는 대상
    • 데이터 처리 파이프라인에서 데이터를 소비하거나 처리하는 시스템 또는 컴포넌트

 

  • 규칙
    • 의존성 : 각 항목은 상류에 있는 모든 항목에 의존
    • 가치 : downstream으로 이동할 수록 각 단계는 더 많은 가치를 추구
    • 결론: x가 다른 항목에 가치를 추가하거나 의존하는 경우, x는 downstream

  • SW
    • 의존성: 컴포넌트 C는 B에, B는 A에 의존 -> A는 B보다 상류, B는 C보다 상류에 위치
    • 가치: C는 B,A의 모든 기능을 가져오고, 자체 가치도 존재하기 때문에 가장 많은 가치를 보유한 dwonstream 컴포넌트


  • 오픈 소스 프로젝트
    • A는 원본(upstream), B는 A의 fork(downstream)
    • 의존성: 프로젝트 A는 B없이도 동작할 수 있으므로 upstream, B는 A없이는 존재할 수 없어 downstream
    • 가치: B가 새로운 기능 또는 버그 수정을 추가했으므로 원본 A에 가치를 추가했음 -> 패치할때마다 upstream으로 패치를 전송한 것으로 볼 수 있

  • 마이크로 서비스
    • 의존성: 서비스 B는 A에 의존 -> B가 upstream 서비스
    • 가치: 서비스 A는 B의 가치에 기여 -> A가 downstream 서비스
    • 스트림: 시스템에서 사용자를 향하는 서비스로부터의 데이터 스트림 -> 사용자와 멀어질수록 downstream 서비스라 할 수 있음

출처: https://reflectoring.io/upstream-downstream/

 

What is Upstream and Downstream in Software Development?

Wondering about what upstream and downstream means in the context of software development? This articles discusses several usages of these words and defines two simple rules to identify what is upstream and what is downstream in every context.

reflectoring.io

 

'⭐ Plogramming > JAVA' 카테고리의 다른 글

Stream(collect, filter, map)  (0) 2023.07.12
쿼츠 스케줄러  (0) 2023.05.08
[Java] JVM / JRE / JDK  (0) 2022.07.15
[JAVA] Lombok(롬복)  (0) 2022.06.19