목록 보기
Feature Flag API의 p99 레이턴시 개선기 (+오픈소스 기여)
백엔드

Feature Flag API의 p99 레이턴시 개선기 (+오픈소스 기여)

버즈빌
버즈빌
2026년 5월 2일

두줄요약

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 요청 경로 비블로킹 보장

다음 읽기

#Go 주제를 이어서 읽기

DynamoDB Limit 설정으로 RCU 97% 절감한 이야기

DynamoDB Query의 무제한 스캔과 Strong Consistent Read로 급증한 RCU 원인을 분석했습니다. SearchLimit과 Eventually Consistent Read 적용으로 RCU를 최대 97% 절감했습니다.

버즈빌
버즈빌
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...