스캐터 개더(Scatter Gather) 패턴

1. 개요

스캐터 개더(Scatter Gather) 패턴은 복잡한 요청을 처리하기 위해 여러 독립적인 서비스나 컴포넌트에 병렬로 작업을 분산하고(Scatter), 각 서비스로부터 받은 응답을 취합하여(Gather) 최종 결과를 생성하는 메시징 아키텍처 패턴이다. 이 패턴은 주로 분산 시스템 환경에서 응답 시간(Latency)을 줄이고 처리량(Throughput)을 높이는 데 사용된다.

2. 동작 원리 (Scatter-Gather Flow)

스캐터 개더 패턴은 일반적으로 다음 네 가지 단계로 구성다.

  1. 클라이언트 요청 (Client Request): 사용자가 시스템에 단일 요청
  2. 분산 (Scatter): Dispatcher 컴포넌트가 단일 요청을 여러 개의 작은 하위 요청(Sub-requests)으로 분할
  3. 처리 (Processing): 각 수신자 서비스는 할당받은 하위 요청을 독립적으로 처리하고 결과를 응답
  4. 취합 (Gather): Dispatcher 컴포넌트가 모든 수신자 서비스로부터 모든 응답을 받거나, 미리 정의된 시간 제한(Timeout) 내에 받은 응답들을 모아 단일의 최종 응답으로 통합하여 회신

3. 주요 활용 사례

  • 가격 비교: 고객이 특정 제품의 가격을 질의할 때, 요청을 여러 이커머스 공급업체(수신자)에 동시에 분산하고, 모든 응답을 취합하여 가장 저렴한 가격을 포함하는 통합된 결과를 반환
  • 재고 확인: 여러 지점의 재고를 동시에 확인하거나, 여행 예약 시스템에서 여러 항공사의 항공편 정보를 동시에 검색할 때 사용
  • 분산 검색: 대규모 분산 데이터베이스나 검색 엔진에서 질의를 여러 샤드(Shard)에 분산하여 처리 속도를 높이는 데 활용

4. 장점과 고려 사항

구분 장점 (Pros) 고려 사항 (Cons)
성능 여러 작업을 병렬로 처리하여 전체 응답 시간(Latency)을 획기적으로 단축 병렬 처리가 가능한 환경(충분한 CPU/스레드)이 필요하며, 병렬화에 따른 오버헤드 발생 가능
처리량 시스템의 처리 능력(Capacity)이 증가하여 처리량(Throughput) 향상 가장 느린 응답을 기다려야 하는 경우 (모든 응답이 필요한 경우), 해당 응답이 전체 지연 시간(Latency) 결정
복잡성 복잡한 로직을 독립적인 서비스로 분리하여 모듈성 향상 응답을 취합하고 통합하는 로직 자체가 복잡할 수 있으며, 응답 누락이나 오류 처리가 복잡

5. 결론

스캐터 개더 패턴은 대규모 분산 환경에서 빠른 응답이 필수적인 시스템에 이상적인 패턴이다. 이 패턴의 성공은 하위 요청을 처리하는 서비스의 독립성과, 취합 단계에서 효율적인 결과 통합 로직을 구현하는 능력에 달려 있다.

+ Recent posts