Feature Flag API의 p99 레이턴시 개선기 (+오픈소스 기여)
두줄요약
S3 export 중 mutex를 잡아 Feature Flag API p99가 급등한 원인을 분석했습니다. 비동기 래퍼와 락 범위 축소로 최대 레이턴시를 200ms 내외로 안정화했습니다.
문제 상황
- Feature Flag evaluation API의 p95 약 1ms 대비 p99 3초 이상 급등
- S3 export flush 시 최대 25초까지 튀는 API 레이턴시
원인 분석
- mutex를 유지한 상태의 jitter sleep으로 최대 7초간 모든 AddEvent 호출 대기
- 동기식 S3 업로드가 mutex lock 범위에 포함된 구조적 블로킹
해결 방법
- jitter 임시 비활성화와 export 주기 1분에서 3분으로 조절
- 채널과 background goroutine 기반 AsyncExporter 래퍼로 S3 업로드 비동기화
- go-feature-flag의 이벤트 조회·export·offset 갱신 단계별 락 분리 PR 머지
트레이드오프
- 채널 포화 시 분석용 이벤트 배치 drop과 경고 로그 처리
- S3 export 실패 데이터 유실 허용으로 API 요청 경로 비블로킹 보장
