피드로 돌아가기
Dev.toBackend
원문 읽기
Latency와 Throughput의 Trade-off 설계를 통한 시스템 처리 용량 최적화
Latency vs Throughput
AI 요약
Context
개별 요청의 응답 속도 향상을 위해 Batching 제거 및 즉각적 Flush를 적용한 결과, 시스템 전체의 처리량(Throughput)이 급감하는 병목 현상 발생. Latency 최적화가 반드시 전체 시스템 효율성으로 이어지지 않는 아키텍처적 상충 관계 존재.
Technical Solution
- 개별 쓰기 작업의 즉각 처리 방식에서 일정 수량의 레코드를 수집 후 일괄 처리하는 Batch Write 구조로 변경
- Kafka의 linger.ms 설정을 통해 메시지 전송 대기 시간을 의도적으로 부여하여 네트워크 Call 횟수를 최적화
- Netflix의 Video Buffering 전략과 같이 초기 Startup Latency를 허용함으로써 전체 사용자 수용 용량을 확대하는 설계 채택
- 서비스 성격에 따라 실시간성이 중요한 채팅/결제는 Latency 중심, 대량 데이터 처리가 핵심인 로그/분석 파이프라인은 Throughput 중심으로 최적화 축 설정
실천 포인트
1. 서비스의 '나쁜 사용자 경험' 정의를 통해 Latency와 Throughput 중 우선순위 결정
2. 처리량 증대가 필요한 경우 Batching 및 Buffering 도입을 통한 I/O 횟수 감소 검토
3. Kafka 등 메시지 큐 도입 시 linger.ms와 같은 설정값을 통해 비즈니스 요구사항에 맞는 최적의 Trade-off 지점 튜닝