Api::V1::FacilitiesController#spacetimes (avg 11652ms, max 11652ms)
Summary: Api::V1::FacilitiesController#spacetimes N+1 latency (avg 11.6s)
결과#
SpacetimeRepository#spacetimes 의 eager_load 에 :facility 를 추가해 SpacetimeSerializer 가 spacetime.facility 를 참조할 때 발생하던 N+1 을 제거. 대형 facility(records 498건) 기준 11.6s tail latency 를 유발하던 근본 원인을 한 줄 수정으로 해소.
Pull Requests#
| Repo | PR | Branch |
|---|---|---|
| tesla | https://dev.azure.com/cupix/tesla/_git/tesla/pullrequest/88786 | feature/TSLA-13556 |
변경 내용#
- tesla:
app/repositories/spacetime_repository.rb:11—eager_load(:record, :level)→eager_load(:record, :level, :facility).
Scope 및 Follow-up#
- 이번 PR 은 RCA "즉시 조치 (Critical)" 두 항목 중 첫 번째(N+1 preload) 만 반영.
- 미포함:
spacetime_repository.rb:71의per_page != 30legacy pagination guard 제거. RCA 가 "프런트엔드 담당자와 협의" 를 명시 → 후속 티켓/PR 로 조율. - 미포함:
SpacetimeSerializer의 per-recordFacilitySerializer.new(...).serializable_hash인스턴스화 최적화 (RCA "단기 개선"). - 미포함: Bullet gem/N+1 detector 도입, 프런트엔드 폴링 pub/sub 이관 (RCA "장기 개선").
Monitoring#
배포 후 24시간 아래 Datadog 쿼리로 latency 하락 확인:
max/p95/avg:trace.rack.request.duration{service:cupixworks-api,resource_name:api::v1::facilitiescontroller_spacetimes}sum:trace.rack.request.hits{service:cupixworks-api,resource_name:api::v1::facilitiescontroller_spacetimes}.as_rate()
Cleanup#
bash
cd /home/ec2-user/repos/tesla
git worktree remove /home/ec2-user/error-sweeper/.worktrees/2e5b8b59-c109-459e-a8a4-a718317f5195/tesla