-
Notifications
You must be signed in to change notification settings - Fork 6
메시지 조회 API 시나리오 정리
Richard JEON edited this page Jul 22, 2022
·
4 revisions
- 줍줍의 메시지 보기 화면은 트위터, 페이스북 등과 같이 무한 스크롤을 구현하고자 했습니다.
- 맨 위에 있는 메시지가 가장 최근에 작성된 메시지입니다.
- 아래로 갈수록 과거 메시지입니다.
Slack으로부터 전달된 메시지 전송, 수정, 삭제 이벤트를 받아
이를 줍줍 데이터베이스에 동기화해둡니다.
동기화된 데이터들을 프론트엔드 요청에 따라 응답해줌으로써
줍줍에 접속한 고객이 동기화된 메시지들을 볼 수 있게 해주어야 합니다.
이 과정에서 여러가지 수요가 발생하게 됩니다.
채널별 보기
, 키워드로 검색하기
, 특정 날짜로 이동
등인데요,
관련한 자세한 시나리오는 아래에서 다룹니다.
메시지 조회 API 의 상세한 설계에 대해 이야기하기 전에, 어떤 사용자 시나리오에 대해 대응했는지 소개합니다.
-
4기-공지사항
채널을 선택했을 때를 의미합니다. - 해당 채널에서 작성되었던 가장 최근 메시지부터 아래로 갈수록 오래된 메시지를 보여줍니다.
- 채널 최초 접속 시 20개의 메시지를 응답 받아서 화면에 렌더링합니다.
- 렌더링 되어있는 가장 오래된 메시지 보다 아래에 있는 메시지를 보려 하는 상황을 의미합니다.
- 현재 채널에 작성된, 현재 렌더링 되어있는 가장 오래된 메시지 보다 더 과거의 메시지를 시간 내림차순으로 20개 달라는 요청을 보냅니다.
- 응답 받은 결과를 추가로 렌더링하여 무한 스크롤을 구현합니다.
-
오늘
,어제
,특정 날짜로 이동
버튼 등을 이용해 메시지 탐색이 가능합니다. - 해당 버튼들을 이용하여 현재 보고 있는 채널의, 그 당시 작성된 메시지로 이동이 가능합니다.
- 현재 날짜에서 이동된 날짜 사이의 모든 데이터를 렌더링하지 않고, 이동한 날짜의 최신 메시지부터 시간 내림차순으로 렌더링 합니다.
- 채널 최초 접속 이후 계속 아래로 스크롤 이동 과 동일합니다.
- 렌더링된 가장 마지막 메시지 보다 더 과거 메시지를 요청해서 렌더링합니다.
- 날짜로 이동할 경우, 해당 날짜의 23:59:59 에 작성된 메시지부터 내림차순으로 보여줍니다.
- 따라서 날짜로 이동 이후 위로 스크롤할 경우, 추가로 메시지를 요청한 뒤 렌더링해야 합니다.
- 메시지의 아이디를 이용해 이 메시지 보다 미래에 작성된 메시지 20개를 시간 내림차순으로 달라는 요청을 보낸 뒤 응답 받아 렌더링합니다.
- 이로써 특정 날짜로 이동 시 현재 위치에서 이동 날짜까지 모든 데이터를 미리 불러와서 렌더링하지 않아도 되게 됩니다.
- 메시지 보기 화면 상단에는 검색창이 있습니다.
- 이를 이용해 현재 보고 있는 채널 내 메시지를 검색하여 조회할 수 있습니다.
- 해당 채널의, 해당 키워드를 포함한 메시지 20개를, 시간순으로 내림차순하여 보여줍니다.
- 채널 최초 접속 이후 계속 아래로 스크롤 이동과 동일합니다.
- 렌더링되어있는 메시지보다 더 아래로 스크롤을 시도할 경우, 키워드 검색 조건과 메시지 아이디를 이용하여, 키워드 검색조건을 만족하면서도 메시지 아이디 보다 더 과거에 작성된 메시지 20개를 요청합니다.