목록 보기
피크 타임 Pod 245개를 100여개로 — DynamoDB SDK v2 전환으로 Go 서버 CPU 절반 줄이기
백엔드

피크 타임 Pod 245개를 100여개로 — DynamoDB SDK v2 전환으로 Go 서버 CPU 절반 줄이기

버즈빌
버즈빌
2026년 7월 4일

두줄요약

Pyroscope로 DynamoDB 응답 역직렬화의 CPU 병목을 확인하고 AWS SDK v2 기반 래퍼로 전환했습니다.\n요청당 CPU를 59% 줄여 피크 타임 HPA 파드를 245개에서 109개로 낮췄습니다.

문제 상황

  • 저녁 피크 시간대 Go 애플리케이션의 HPA 파드 수 200개 이상 지속
  • 시간당 7천만 건 요청 처리 중 CPU 사용량과 인프라 비용 증가

원인 분석

  • Pyroscope flame graph에서 guregu/dynamo 하위 DynamoDB 조회 경로의 CPU 점유 확인
  • AWS SDK v1의 reflection 기반 JSON unmarshal과 struct tag 탐색이 전체 CPU의 큰 비중 차지
  • DynamoDB latency·throttling 부재로 네트워크 I/O보다 응답 역직렬화 비용으로 판단

해결 방법

  • guregu/dynamo v1을 v2로 전환해 내부 AWS SDK를 v1에서 v2로 교체
  • 생성된 DynamoDB serializer/deserializer와 타입 정보 캐시로 reflection 비용 축소
  • 카나리 배포 후 에러율과 동작 이상을 확인하며 점진적 확대

성능/운영 포인트

  • 요청당 CPU 2.149ms에서 0.876ms로 59.2% 감소
  • HPA desired p95 245개에서 109개, CPU p95 1,418 cores에서 788 cores로 감소
  • EKS 일 비용 약 400달러에서 250달러 수준으로 절감

다음 읽기

#DynamoDB 주제를 이어서 읽기

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

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

버즈빌
버즈빌
백엔드

댓글 0개

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

댓글을 불러오는 중...