test(S15P11A705-239): 부하 프로파일 실행과 병목 관측을 추가한다 - #160
Merged
Conversation
Collection을 먼저 지우고 Record를 force로 지우면 두 삭제 엔드포인트를 다 치면서 상태 코드가 깨끗하다. 반대 순서는 force 연쇄가 Collection을 먼저 지워 뒤이은 Collection 삭제가 매번 404 — write 오류율이 1/7(14.29%)로 부풀었다. 순서 교정 후 0%.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
1단계 종단 검증 하네스(#142) 위에 부하 프로파일을 얹어 프로파일 4종 × 읽기·쓰기 + 혼합 2판(총 10회)을 실측했다. 첫 병목은 HikariCP 풀(10 — 150VU에서 대기 154), 둘째는 피드(20VU에서 p50 746ms). 10조합 전부 부하 전후 불변식 위반 수가 기준선(4,696)에서 불변 — 150VU 쓰기에서도 core 정합이 깨지지 않았다. 산출물은 관측 보고서(BI-37)이며 합격선 없음, 개선거리는 티켓 후보로만 남겼다.
Jira (필수)
변경 사항
loadtest/k6/lib/profiles.js— 프로파일 4종 stages(smoke 즉시 점프 — 0→1 램프는 요청 0건이 되는 함정 실측)loadtest/k6/load-read.js— 읽기 4부류 VU 고정, 지도 VU 절반은 heavy 회원(관측 1 판정용)loadtest/k6/load-write.js— 처리량(회원/VU) + 경합(VU 10 고정, BD-11 판정용). 삭제는 Collection 먼저 — 역순은 force 연쇄 탓에 가짜 404가 오류율을 1/7 부풀린다loadtest/k6/load-mixed.js— 가중 혼합 여정(출시 전 추정 가중치 명시), average·stress 전용loadtest/tools/{setup,teardown}-load-members.sql— 회원 풀 일괄 생성(소셜 계정 포함)·집합 삭제(골든 가드)loadtest/tools/poll-metrics.sh— actuator prometheus 5초 폴링(hikari·스레드·힙;tomcat_threads_*미노출은 티켓 후보)loadtest/tools/run-load.sh— 조합 단위 오케스트레이션 + 불변식 전후 게이트 + trap 정리.--summary-trend-stats로 p99 확보(기본 export엔 없음)loadtest/tools/collate-load.py— 10회 산출물 → 보고서 표docs/backend/implements/BI-37— 결과 표·병목 판정·1단계 관측 2건 해소·개선 티켓 후보 5건·한계docs/backend/worklog/2026-08-02-S15P11A705-239-load-profiles.md·loadtest/README.md부하 절테스트 / 검증
./gradlew clean check --no-daemon— BUILD SUCCESSFUL (리베이스 후 재실행. Java 소스 무변경)DB 변경 시 PostgreSQL 통합 테스트(해당 없음)migration 변경 시 빈 DB migration 테스트(해당 없음)RED/GREEN 증거 (조각별 상세는 BI-37):
bash loadtest/tools/run-load.sh all— 10/10 완주, 총 요청 1,031,993건, 실패 32건(0.003%, read-stress 1초 창의 타임아웃), 전 조합 불변식 4,696 전후 불변, 회원 풀 전량 정리(3007 복원)run.sh)와 무간섭 — 1단계 파일 무수정. 리베이스 후 clean check 통과리뷰 포인트
run-load.sh의 판정 계약 — k6 오류·불변식 변동은 실패, 불변식 위반 "수" 자체는 리포트만(시드 기준선 4,696). BI-33과 같은 구분미결 / 후속
🤖 Generated with Claude Code