[INFRA-04] B2C 일주기 조회 곡선 (70%)

작업 내용 (설계 의도)

변경 사항

근거 TDD: ../TDD.md “곡선 배율표”·Testing Plan. FR-2. B2C 목표 TPS의 70%를 조회로 발생 — 소진성 자원을 소비하지 않아 곡선 안정성의 기반.

  • qa/load/k6/b2c-diurnal-read.js(신규) — ramping-arrival-rate executor, lib/diurnal.js#b2cReadStages(timeScale)(peak 2100). 조회 엔드포인트 가중 혼합: GET /facilities?gu&type(permitAll), GET /facilities/{fid}/slots, GET /products·/products/{id}·/products/popular, GET /events·/events/{id}. lib/pool.js#syntheticUserId로 X-User-Id. handleSummary(FR-8), thresholdsFor(...,"complexGet").

의존

  • INFRA-01 (lib), INFRA-03 (synthetic 시드)

다이어그램

클래스 의존

flowchart LR
    Diurnal["lib/diurnal.js"] --> ReadScript["b2c-diurnal-read.js"]
    Pool["lib/pool.js"] --> ReadScript
    Gap["lib/gapreport.js"] --> ReadScript
    ReadScript --> Facilities["GET /facilities·/slots"]
    ReadScript --> Products["GET /products·/{id}"]
    ReadScript --> Events["GET /events·/{id}"]

테스트 케이스

  • k6 inspect b2c-diurnal-read.js가 시나리오·stage를 오류 없이 파싱한다(exit 0).
  • 압축(timeScale) 실행 시 조회 엔드포인트 3종이 가중 혼합으로 호출된다.
  • 곡선 피크 구간의 도달 TPS가 목표 2100의 ±10% 이내다(10분 버킷 90%↑).
  • 조회 응답 200이 아닌 5xx가 임계(errorRate) 이하다.
  • 종료 시 results/b2c-read-gap.json에 달성률·병목이 기록된다.