페이징 처리에 대해서 알고 있는가? 아마 웹 서비스를 개발하는 분들이라면 대부분은 알 것이라고 생각한다. 또한 페이징 처리를 왜 해야되는지도 대부분 알 것이라고 생각한다.하지만 실제로 페이징 처리를 안했을 때의 결과를 직접 경험해본 사람은 많이 없을것같다.
그래서 내가 직접 페이징 처리를 안했을 때 겪은 사례를 공유하려고 한다.
물론 나도 페이징 처리를 왜 해야되는지는 알고 있었다. 페이징 처리를 안한이유는 간단한다.
간단하게 RDB를 이용한 랭킹 시스템을 테스트해보다가 페이징 처리를 깜박했다.
페이징 처리를 깜박한 상태로 랭킹의 유저수를 증가 시키면서 부하를 걸어보았다.
Jmeter 를 사용해 200명의 user 로 5초동안 3번 반복해서 요청을 보내보도록 테스트 했다.
처음에는 잘 나왔겠지하고 데이터 2만개를 조회하는 결과를 확인 해보았더니
절반이 넘는 요청들이 실행되지도 않고 실패했다. 알고보니 코드에서 페이징 처리하는 코드를 빼먹은 것이었다.
속도도 평균 28500ms 로 굉장히 느렸다.
실제로도 약 2만 건의 데이터가 전송이 되었다.
다른 부분에서 문제가 터졌을 수도 있어서 동일 조건에서 페이징처리를 하여 30개의 데이터만 반환하도록 수정하고 테스트를 해보았다.
결과는 전부 성공이었다.
속도도 페이징 처리를 안했을때 보다는 훨씬 빨랐다. 때문에 페이징 처리가 속도 저하와 실패의 원인이라고 확신했다.
결론은 간단하다. 페이징 처리를 해야한다!
한건 씩 처리하는 것은 페이징 처리를 하지 않아도 컴퓨터가 적당히 버텨서 결과를 반환해준다. 하지만 위의 경우처럼 연속적으로 요청 할 때는 다르다. 실제로 우리가 서비스를 하게 되면 많은 유저들이 서버에 데이터를 조회하는 요청을 보낼 것이다. 이때 위처럼 페이징 처리를 하지 않으면 장애로 이어질 수 있다.
위 경험을 토대로 느낀 페이징 처리를 안 했을 때의 문제점은 다음과 같다.