피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Least Connections 도입으로 P99 레이턴시 2.4s에서 210ms로 단축
Load Balancing: The Matrix
AI 요약
Context
정적인 Round Robin 방식의 Load Balancer 사용으로 인한 서버 간 트래픽 불균형 발생. 특정 노드에 부하가 집중되는 병목 현상과 GC 발생 시 처리 지연으로 인한 502 에러 및 타임아웃 증가.
Technical Solution
- Static Schedule을 탈피한 Dynamic State 기반의 Least Connections 알고리즘 채택
- Atomic Counter를 활용한 실시간 Active Connection 수 추적 및 최저 부하 노드 선택 구조 설계
- 별도 Goroutine 기반의 주기적 Health Check 레이어 구축을 통한 비정상 노드 제외 로직 구현
- Lock-free Atomic 연산 적용으로 선택 과정의 오버헤드를 최소화하고 처리량 유지
- 요청 종료 시 defer를 통한 Counter Decrement 보장으로 상태 일관성 유지
- 모든 노드 불능 시의 Graceful Fallback 메커니즘을 통한 가용성 확보
실천 포인트
1. Connection Counter 증감 시 에러 경로에서도 Decrement가 보장되는지 검토
2. 전체 선택 루프에 Mutex를 사용하는 대신 Atomic 연산을 통한 경합 최소화 적용
3. Health Check 부재 시 Dead Node로 트래픽이 집중되는 Black Hole 현상 방지 대책 마련