Search

목록 조회에 대한 고찰

태그
팀 프로젝트
생각 정리
작성 상태
작성 완료
작성일
2023/03/06
참고 링크
참고 링크 2

목록 조회

목록 조회의 뜻

이 글에서 목록 조회란 아래 사진처럼 어떤 일정한 형태의 데이터로 이루어진 목록을 서버로부터 불러오는 것을 말한다.
목록 조회

항목조회

이 글에서 항목 조회란 목록을 구성하는 최소단위의 데이터를 서버에서 불러오는 것을 말한다. 예컨데, 아래 사진은 위 목록 조회 사진에서 각 항목을 클릭했을때 보여지는 화면이다. 이때 항목조회가 이루어진다.
항목 조회

목록 조회와 항목조회를 하는 방법

목록조회 결과 화면에서 항목조회 화면으로 넘어가는 것을 구현하는 방법은 크게 2가지를 생각할 수 있다.

목록조회시 한번에 항목들의 세부정보를 서버에서 불러오는 방법

이 방법은 네트워크로 요청이 단 한번만 보내진다는 장점이 있다. 대신, 목록을 조회한 이후 시간이 지날수록 각 항목의 상세 데이터가 실제 서버 내의 데이터와 일치하지 않을 가능성이 높아진다.

목록 조회시에는 최소한의 정보만 조회해오고, 각 항목 조회시 세부정보를 서버에서 불러오는 방법

이 방법은 네트워크 요청이 목록 조회시 한번, 상세 데이터 조회시 한번 이루어진다. 따라서, 각 항목을 모두 조회한다면 네트워크 요청 횟수는 n+1 번이 된다. 대신, 목록 데이터를 조회한 이후 시간이 지나도 상세 데이터는 언제나 서버내 데이터와 일치한다.

두 방식은 데이터의 신선도와 네트워크 부하를 맞바꾼 방식일까?

얼핏 보면 두 방식은 데이터의 신선도와 네트워크 부하를 맞바꾼 그런 관계인듯 싶다. 하지만, 여기에 함정이 있다.

목록 조회에는 반드시 항목의 상세 내용이 포함된다.

목록 조회
위 목록 조회 화면에는 각 항목의 카테고리, 인증 이미지, 검증 진행 상황, D-Day 가 포함 되어있다. 사용자는 이 기초 정보를 보고 인증을 한개 선택한 다음, 항목 조회 화면에서 성공 혹은 실패 버튼을 누르게 된다.
항목 조회
만일, 아주 짧은 시간차이로 다른 이용자가 이 인증을 이미 검증해서 더이상 검증할 수 없으면 이미 검증이 완료된 인증입니다 라는 메세지를 받게 된다.
사용자가 이 메세지를 볼 가능성은, 위에서 언급한 두가지 방법 어떤 것을 사용해도 동일하다. 왜냐하면 두 방식 모두 사용자가 목록 조회화면에서 보는 내용은 같기 때문이다.
따라서, 두 방식의 차이는 사용자가 검증을 하고나서 허탕을 친 사실을 아는지, 아니면 검증을 하기 전에 항목 조회 시점에 아는지 차이이다.

각 상황에서 네트워크 요청의 발생 횟수

검증이 실패하는 상황에서 네트워크 요청이 언제 발생하는지 각 항목별로 정리해 보면
1.
목록조회와 항목 조회가 통합된 경우
a.
최초 목록 조회시
b.
각 항목의 검증 시도시
c.
목록 재조회시
2.
목록 조회와 항목 조회가 분리된 경우
a.
최초 목록 조회시
b.
각 항목의 조회시
c.
목록 재 조회시
두 방식에서의 네트워크 요청 횟수는 같다.
검증이 성공하는 상황에서 네트워크 요청이 언제 발생하는지 각 항목별로 정리해 보면
1.
목록조회와 항목 조회가 통합된 경우
a.
최초 목록 조회시
b.
각 항목의 검증 시도시
2.
목록 조회와 항목 조회가 분리된 경우
a.
최초 목록 조회시
b.
각 항목의 조회시
c.
각 항목의 검증 시도시
목록 조회와 항목 조회가 통합된 경우가 네트워크 요청 횟수가 더 많다. 검증이 성공하는 상황이 많을 수록 요청 횟수 차이는 더 벌어진다.
서비스에서 검증이 실패하는 상황은 서비스 이용자가 많을수록 빈번하게 발생할 수 있다. 이는 프로그래밍 외적인 서비스 정책으로 해결해야 하는 문제이다.
서비스 이용자 수가 많으면 인증의 최종 검증을 위해 필요한 검증 횟수 역시 늘어나야 한다. 인증의 최종 검증을 위해 필요한 검증 횟수는 소모되는 자원이기 때문이다.

각 상황에서 UX 의 차이

UX가 얼마나 깔끔한가? 라는 관점에서도 비교해볼 필요가 있다. 검증이 성공하는 경우에는 두 방식의 UX 관점에서 차이가 없다. 다만 검증이 실패하는 경우에는 차이가 있다.
1.
목록 조회와 항목 조회가 분리된 경우 : 사용자가 “항목”을 클릭했을 때 알 수 있다.
2.
목록 조회와 항목 조회가 통합된 경우 : 사용자가 “항목” 클릭 후 인증 내용을 검토한 후 “검증” 했을 때 알 수 있다.
목록 조회와 항목 조회가 분리된 경우가 UX 가 좋다.

결론

장단점이 있으니 알아서 선택해야 한다. 이번 프로젝트에서는 목록조회와 항목조회를 통합하고, 대신 주기적으로 목록조회를 해서 데이터를 갱신해주도록 하기로 했다.
이 시스템의 특성(검증이라는 개념)에 의해 목록조회와 항목 조회의 분리 여부에 따른 차이가 발생한다. UX 관점에서는 목록 조회와 항목 조회가 분리되는 경우가 좋지만, 네트워크 부하라는 관점에서는 목록 조회와 항목 조회가 통합되는 것이 유리하다.

더 깊이 고찰할때 고려해야 할 사항

1.
각 항목의 내용이 큰 경우.
만약 각 항목의 내용이 큰 경우 json 파싱 등의 작업에서 발생하는 부하가 증가하고 이는 목록 조회에서 더 가파르게 증가하기 때문에, 목록조회와 항목 조회가 통합된 경우 목록 조회 요청의 응답시간이 과하게 오래 걸릴 수 있다는 점도 고려해야 한다. 이 경우 목록 조회와 항목 조회를 분리하는 것에서 오는 UX 관점에서의 차이가 더 클 수 있다.
2.
각 네트워크 요청의 부하가 동일하지 않다. 따라서 횟수만으로 비교하는 것은 한계가 있다.