Skip to content

메시지 조회 API 시나리오 정리

Richard JEON edited this page Jul 22, 2022 · 4 revisions

메시지 조회 API 개발 동기

줍줍 메시지 보기 화면
  • 줍줍의 메시지 보기 화면은 트위터, 페이스북 등과 같이 무한 스크롤을 구현하고자 했습니다.
  • 맨 위에 있는 메시지가 가장 최근에 작성된 메시지입니다.
  • 아래로 갈수록 과거 메시지입니다.

Slack으로부터 전달된 메시지 전송, 수정, 삭제 이벤트를 받아 이를 줍줍 데이터베이스에 동기화해둡니다. 동기화된 데이터들을 프론트엔드 요청에 따라 응답해줌으로써 줍줍에 접속한 고객이 동기화된 메시지들을 볼 수 있게 해주어야 합니다. 이 과정에서 여러가지 수요가 발생하게 됩니다. 채널별 보기, 키워드로 검색하기, 특정 날짜로 이동 등인데요, 관련한 자세한 시나리오는 아래에서 다룹니다.



사용자 시나리오



메시지 조회 API 의 상세한 설계에 대해 이야기하기 전에, 어떤 사용자 시나리오에 대해 대응했는지 소개합니다.


1. 채널 최초 접속

  • 4기-공지사항 채널을 선택했을 때를 의미합니다.
  • 해당 채널에서 작성되었던 가장 최근 메시지부터 아래로 갈수록 오래된 메시지를 보여줍니다.
  • 채널 최초 접속 시 20개의 메시지를 응답 받아서 화면에 렌더링합니다.

2. 채널 최초 접속 이후 아래로 스크롤 이동

  • 렌더링 되어있는 가장 오래된 메시지 보다 아래에 있는 메시지를 보려 하는 상황을 의미합니다.
  • 현재 채널에 작성된, 현재 렌더링 되어있는 가장 오래된 메시지 보다 더 과거의 메시지를 시간 내림차순으로 20개 달라는 요청을 보냅니다.
  • 응답 받은 결과를 추가로 렌더링하여 무한 스크롤을 구현합니다.

3. 특정 날짜로 이동

  • 오늘, 어제, 특정 날짜로 이동 버튼 등을 이용해 메시지 탐색이 가능합니다.
  • 해당 버튼들을 이용하여 현재 보고 있는 채널의, 그 당시 작성된 메시지로 이동이 가능합니다.
  • 현재 날짜에서 이동된 날짜 사이의 모든 데이터를 렌더링하지 않고, 이동한 날짜의 최신 메시지부터 시간 내림차순으로 렌더링 합니다.

4. 특정 날짜로 이동 후 아래로 스크롤 (더 과거 메시지 보기)

  • 채널 최초 접속 이후 계속 아래로 스크롤 이동 과 동일합니다.
  • 렌더링된 가장 마지막 메시지 보다 더 과거 메시지를 요청해서 렌더링합니다.

5. 특정 날짜로 이동 후 위로 스크롤 (더 미래 메시지 보기)

  • 날짜로 이동할 경우, 해당 날짜의 23:59:59 에 작성된 메시지부터 내림차순으로 보여줍니다.
  • 따라서 날짜로 이동 이후 위로 스크롤할 경우, 추가로 메시지를 요청한 뒤 렌더링해야 합니다.
  • 메시지의 아이디를 이용해 이 메시지 보다 미래에 작성된 메시지 20개를 시간 내림차순으로 달라는 요청을 보낸 뒤 응답 받아 렌더링합니다.
  • 이로써 특정 날짜로 이동 시 현재 위치에서 이동 날짜까지 모든 데이터를 미리 불러와서 렌더링하지 않아도 되게 됩니다.

6. 검색어로 조회


  • 메시지 보기 화면 상단에는 검색창이 있습니다.
  • 이를 이용해 현재 보고 있는 채널 내 메시지를 검색하여 조회할 수 있습니다.
  • 해당 채널의, 해당 키워드를 포함한 메시지 20개를, 시간순으로 내림차순하여 보여줍니다.

7. 검색어로 조회 후 아래로 스크롤

  • 채널 최초 접속 이후 계속 아래로 스크롤 이동과 동일합니다.
  • 렌더링되어있는 메시지보다 더 아래로 스크롤을 시도할 경우, 키워드 검색 조건과 메시지 아이디를 이용하여, 키워드 검색조건을 만족하면서도 메시지 아이디 보다 더 과거에 작성된 메시지 20개를 요청합니다.

Clone this wiki locally