왜
prod DB 를 자체 관리 EC2 MySQL 로 이관(#899)하고 앱이 t4g.small 에서 도는 현 구성에서, 앱 계층이 어느 부하까지 버티는지 실측한 적이 없다. 그런데 dev 에 그냥 부하를 쏠 수는 없다:
- dev MySQL 은 앱 박스 동거 컨테이너라 부하 데이터가 dev 데이터를 오염시킨다.
- 등록 경로는 파싱 큐를 통해 prod 와 공유하는 extractor 박스를 자동 호출한다 (
ItemParsingScheduler 1초 주기, 끄는 스위치 없음).
- nginx IP 레이트리밋(전역 초당 20/IP, 등록 POST 분당 30/IP)이 부하 자체를 차단한다.
무엇을
격리된 부하테스트 환경을 임시 구성해 앱 한계(TPS 상한, 병목 지점)를 실측하고, 종료 후 완전 원복한다.
- terraform 에 부하테스트 전용 리소스 추가: 전용 DB 박스(넉넉한 스펙, 백업·prevent_destroy 없음), 부하기 박스(k6 + extractor stub, EIP 고정), SG 배선.
-target apply/destroy 로 생애주기 관리.
- nginx dev conf 에 부하기 EIP 레이트리밋 제외(geo + map). 부하테스트 브랜치에만 두고 dev 머지 없이 workflow_dispatch 배포로 윈도우 동안만 적용, dev 브랜치 재배포로 원복.
- dev JVM 을 prod 와 동일(768m/Xmx512)하게 브랜치 한정 상향, HikariCP 풀은 SSM 파라미터(relaxed binding)로 상향. prod 이전 가능한 결과를 얻기 위함.
- extractor stub: 계약 기준 2xx 고정 응답 +
/actuator/health 200(배포 가드 통과) + 지연 시뮬레이션. GH dev environment 의 EXTRACTOR_PROD_ADDRESS override 로 dev 배포만 stub 을 보게 한다.
- 합성 시드 데이터(PENDING 0, 전부 READY), k6 시나리오(게스트 토큰 사전 발급, 조회 mix + 등록·쓰기), 윈도우·원복 런북.
- 산출물: 한계 TPS, 병목 지점, prod 적용 권고 리포트.
왜
prod DB 를 자체 관리 EC2 MySQL 로 이관(#899)하고 앱이 t4g.small 에서 도는 현 구성에서, 앱 계층이 어느 부하까지 버티는지 실측한 적이 없다. 그런데 dev 에 그냥 부하를 쏠 수는 없다:
ItemParsingScheduler1초 주기, 끄는 스위치 없음).무엇을
격리된 부하테스트 환경을 임시 구성해 앱 한계(TPS 상한, 병목 지점)를 실측하고, 종료 후 완전 원복한다.
-targetapply/destroy 로 생애주기 관리./actuator/health200(배포 가드 통과) + 지연 시뮬레이션. GH dev environment 의EXTRACTOR_PROD_ADDRESSoverride 로 dev 배포만 stub 을 보게 한다.