Study_Note

fan-in & fan-out 본문

temp

fan-in & fan-out

12월7일생 2024. 8. 26. 14:33
728x90

반응형

"Fan-in"과 "Fan-out"은 시스템 설계와 네트워크, 소프트웨어 아키텍처에서 중요한 개념으로, 데이터 흐름과 의존성을 설명하는 데 사용됩니다. 예시를 통해 설명해드리겠습니다.


Fan-in

Fan-in은 여러 개의 입력이 하나의 프로세스로 통합되는 상황을 의미합니다. 주로 여러 개의 소스 또는 하위 시스템에서 들어온 데이터를 한 군데로 모아 처리하는 구조를 설명할 때 사용됩니다.

예시 1: 함수 호출

  • 상황 : 한 함수가 여러 다른 함수들에 의해 호출되는 경우
  • 설명: 예를 들어, 함수 `processData`가 프로그램의 여러 부분에서 호출된다면, 이 함수는 많은 입력(다양한 호출부)을 받게 되므로 **Fan-in**이 높다고 할 수 있습니다.
def processData(data):
    # 데이터 처리 코드
    pass

def moduleA():
    processData(data_from_A)

def moduleB():
    processData(data_from_B)

def moduleC():
    processData(data_from_C)

 

여기서 `processData` 함수는 `moduleA`, `moduleB`, `moduleC`로부터 호출되므로 Fan-in 구조를 가진다고 할 수 있습니다.

예시 2: 중앙 집중형 서버

  • 상황 : 여러 클라이언트가 중앙 서버로 연결되어 데이터를 전송
  • 설명 : 여러 클라이언트가 중앙 서버에 데이터를 보내는 웹 애플리케이션에서, 서버는 여러 개의 클라이언트 요청을 받습니다. 이 경우 중앙 서버는 Fan-in을 가진다고 볼 수 있습니다.

Fan-out

Fan-out은 하나의 프로세스가 여러 개의 출력 또는 다른 프로세스로 데이터를 보내는 구조를 의미합니다. 주로 하나의 소스에서 여러 목적지로 데이터가 전달될 때 사용됩니다.

예시 1: 함수 호출

  • 상황 :  하나의 함수가 여러 다른 함수들을 호출하는 경우
  • 설명 : 예를 들어, 함수 `handleRequest`가 다양한 하위 모듈로 작업을 분배하기 위해 여러 함수를 호출한다면, 이는Fan-out이 높다고 할 수 있습니다. 
def handleRequest():
    authenticate()
    authorize()
    logRequest()
    processRequest()

 

이 함수는 `authenticate`, `authorize`, `logRequest`, `processRequest` 등의 여러 함수로 분산되기 때문에 Fan-out 구조를 갖습니다.

예시 2: 메시지 브로커

  • 상황 : 하나의 프로듀서가 여러 개의 소비자에게 메시지를 보내는 상황
  • 설명 : 예를 들어, 하나의 메시지 브로커가 여러 구독자에게 메시지를 배포하는 경우를 생각해 볼 수 있습니다. 여기서 메시지 브로커는 하나의 소스에서 여러 소비자에게 메시지를 전달하므로 Fan-out 구조를 가집니다.

요약

  • Fan-in : 여러 입력이 하나의 프로세스로 통합되는 구조. 예: 여러 함수가 한 함수를 호출하거나 여러 클라이언트가 한 서버에 요청.
  • Fan-out : 하나의 프로세스가 여러 다른 프로세스로 분기되는 구조. 예: 하나의 함수가 여러 함수를 호출하거나 하나의 메시지 브로커가 여러 구독자에게 메시지를 전달.

 

'temp' 카테고리의 다른 글

RIAC(reliability information analysis center)  (0) 2024.08.26
LCOM(lack of cohesion of methods)  (0) 2024.08.26
resolution  (0) 2024.08.21
ISO/IEC 25010  (0) 2024.08.02
slicing technique, data flow analysis technique, change impact analysis  (0) 2024.08.01