트래픽 급증 후 지표 기반으로 재설계 결정한 경험
사이드 프로젝트에서 예상치 못한 트래픽이 몰렸을 때 재설계 여부를 어떤 지표로 판단할지 실제로 고민했던 경험이 있다. 처음에는 응답 속도가 느려졌다는 체감만으로 리팩터링을 시도했는데, 오히려 더 느려졌다. 문제의 원인을 제대로 몰랐기 때문이었다. 이후 APM 도구로 요청별 응답시간, 에러율, DB 커넥션 수를 먼저 수집했다. 지표를 보니 문제는 로직이 아니라 DB 쿼리 N+1이었다. ORM 쿼리를 join fetch로 교체한 뒤 p95가 800ms에서 150ms로 줄었다. 이 경험으로 '재설계가 필요한가'를 판단하는 기준이 생겼다. 체감이 아니라 지표가 특정 구간을 지목하고 있을 때, 그 구간이 현재 구조로는 개선 한계가 명확할 때 재설계를 검토한다. 단순 최적화로 해결될 수 있는데 구조를 갈아엎는 건 비용이 너무 크다.
먼저 측정, 그 다음 결정이 순서라고 생각한다.