피드로 돌아가기
Why Your System Breaks at Scale: Lessons from Processing Millions of Events
Dev.toDev.to
Backend

Thread 증가 한계 극복 및 External Dependency 제거를 통한 고처리량 파이프라인 최적화

Why Your System Breaks at Scale: Lessons from Processing Millions of Events

NARESH2026년 4월 13일8intermediate

Context

수백만 건의 이벤트를 처리하는 스트림 처리 시스템에서 단순 순차 처리 방식으로 인한 Latency 누적 발생. 트래픽 증가 시 Compute Resource 확충이나 Thread 수 증가만으로는 해결되지 않는 Coordination 및 Dependency 병목 현상 직면.

Technical Solution

  • Thread 수를 50에서 300까지 확장하여 처리량을 개선했으나, 500개 이상에서는 Context Switching 및 Synchronization Overhead로 인한 성능 저하 확인
  • Compute-bound가 아닌 Network/DB-bound 특성을 파악하여 단순 인프라 증설 대신 데이터 접근 경로 최적화에 집중
  • Critical Path 내의 반복적인 External Lookup을 제거하고 설정 데이터를 메모리에 로드하여 재사용하는 구조로 변경
  • 매 이벤트마다 발생하던 Datastore 쿼리를 In-memory Store 기반의 Cache 구조로 대체하여 Network-bound 지연 시간 최소화
  • 단순 Batching을 넘어 개별 이벤트의 처리 비용 자체를 낮추는 Unnecessary Work 제거 전략 채택
  • 데이터 스트림의 Parallelism 한계를 고려한 수평 확장 전략 재수립

- Thread 수 증가가 처리량 향상으로 이어지지 않는 Plateau 지점 확인 여부 검토 - Critical Path 내에 매 요청마다 발생하는 External API/DB 호출이 존재하는지 전수 조사 - 단순히 Resource를 추가하기 전, 시스템 병목이 Compute-bound인지 IO-bound인지 정밀 분석 - 반복적인 조회 데이터에 대해 Local Cache 또는 Distributed Cache 도입 가능성 검토

원문 읽기