피크 타임 Pod 245개를 100여개로 — DynamoDB SDK v2 전환으로 Go 서버 CPU 절반 줄이기
두줄요약
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달러 수준으로 절감
