인프런 커뮤니티 질문&답변
페이지네이션 관련 질문입니다.
작성
·
310
답변 1
0
가능한선에서 최대한 캐싱을 하는게 좋아요.
말씀하신대로 서버 부하를 줄여주는 효과도 있고 UX차원에서도 좋죠. 캐싱이 되어 있다면 같은 페이지를 재방문 했을 때 로딩이 훨씬 빠를테니깐요.
하지만 중요한건 "가능한선에서 최대한"입니다. 즉 상황에 따라 대처하는 방법이 조금씩 다를 수 있어요.
예를 들어 제가 수정하지 않는한 변동이 없는 리스트(내가 쓴 블로그, 내 친구들 등등)라면 페이지네이션만 적용해주고 그냥 캐싱을 해주면 되겠죠. 근데 만약 리스트가 제3자에 의해서 생성, 삭제 될 수 있는거라면 일관성을 보장할 수 있는 방법을 찾아야하는데요. 여기서 또 중요한게 "평균적으로 얼마나 자주 바뀌느냐" 그리고 일관성이 얼마나 중요하냐가 있어요. 페이지 재방문 했을 때 새로 불러오게 할 수도 있고요. 배치를 돌려서 주기적으로 업데이트를 해줄 수도 있어요. 둘다 구현하기는 쉬운 방법인데 그래도 완벽하지는 않죠.
제일 이상적이지만 쉽지 않은 방법으로는 웹소켓을 이용한 실시간 데이터 동기화입니다. http request는 클라이언트가 서버에 요청할 때만 데이터를 받게 되는데요. 웹소켓을 이용하면 백엔드에서 데이터 변경이 발생할 때마다 이벤트를 생성(예. "블로그 7번 삭제 됬어!", "블로그 6번에 댓글 추가됬어!")할 수 있죠. 그러면 프론트에서는 필요한 이벤트들을 구독하고 있다가 실시간으로 화면에 업데이트 해주고요. 다만 이건 백엔드가 훨씬 복잡해집니다. 백엔드가 statefull해짐에 따라 부하관리(수평확장)가 좀 더 어려워지기도 하고 제대로 하기 위해서는 Event Driven Architecture라는것도 적용을 하는게 좋고요.





