웹 개발
배포 후 데이터가 보이지 않을 때 페이지네이션 체크하기
페이지네이션 버그는 보통 쿼리 로직이 아니라 파라미터 전달이나 환경 설정에서 비롯된다.
배포 후에 갑자기 데이터가 안 보인다고 난리가 난다. 화면에는 로딩 상태만 반복되거나 빈 리스트가 나타난다. 대부분의 경우 페이지네이션 관련이다.
로컬과 운영의 데이터 상태를 비교한다
가장 먼저 할 일은 "정말 데이터가 없는가" 아니면 "쿼리가 데이터를 못 찾은 건가"를 구분하는 것이다.
# 운영 DB에 접근할 수 있으면 직접 확인
psql -h prod-db.example.com -d production -c "SELECT COUNT(*) FROM items WHERE status = 'active'"
로컬에선 100개가 있는데 운영에선 0개면 데이터 마이그레이션 누락일 수 있다. 반대로 있으면 쿼리 문제다.
페이지네이션 파라미터를 확인한다
요청이 서버에 도착할 때 page, limit, offset 같은 파라미터가 정확히 전달되는지 봐야 한다.
curl 'https://example.com/api/items?page=1&limit=10'
# 응답 헤더와 body에서 실제 파라미터 값이 어떻게 처리됐는지 본다
일반적인 실수:
- page=1이 아니라 page=0부터 시작해야 하는데 page=1로 요청
- limit이 쿼리 문자열에는 없고 헤더에만 있음
- offset 계산이 잘못됨 (offset = page * limit이 아니라 (page - 1) * limit)
첫 페이지 요청부터 단계적으로 테스트한다
한 가지만 바꾸고 매번 확인한다:
- page=1로 요청해서 첫 페이지 데이터가 나오는가
- page=2로 요청해서 다른 데이터가 나오는가
- page=999 같은 존재하지 않는 페이지는 빈 배열을 반환하는가
여러 파라미터를 동시에 바꾸면 원인을 파악하기 어렵다.
빌드 결과에서 페이지네이션 로직을 확인한다
배포 전에 로컬에서 production 빌드로 테스트해야 한다.
npm run build
npm run start # production 모드
dev 환경과 production 환경의 코드 경로가 다를 수 있다. minify되면서 변수명이 바뀌거나 주석이 제거되기도 한다. 환경 변수도 다르게 해석될 수 있다.
운영 이후에는 점진적으로 확인한다
배포 직후 모든 사용자에게 문제가 있으면 빠르게 알아차릴 수 있다. 하지만 특정 조건 (특정 사용자, 특정 시간)에서만 문제가 생기면 어려워진다.
배포 후 첫 몇 시간:
- 다양한 page 파라미터로 테스트
- 로그에서 실제 쿼리를 확인
- 응답 시간이 비정상적으로 길지 않은지 확인
이 과정에서 문제를 찾으면 원인 수정이 훨씬 쉽다.