푸시 알림(push notification) 스키마 설계

나른한 개발자·2022년 12월 22일
1

어느 정도 기능 구현이 되고나서 push notification에 대한 스키마 설계를 시작하게 되었다.

notification 스키마에는 최소 다음과 같은 내용이 포함되어야한다.

  1. 제목, 본문
  2. 생성 날짜
  3. 알림이 일어난 이벤트의 종류
  4. 유저 아이디
  5. 링크
  6. 푸시 알림 레벨

💡 Notification Level
알림의 목적과 중요도에 따라 나뉘는 알림 레벨

  • Level 1. 가장 높은 단계의 알림으로 아래의 사진처럼 실시간으로 푸시알림이 뜨는 것
  • Level 2. 실시간 푸시 알림은 가지 않지만 앱의 뱃지에 표시되는 알림
  • Level 3. 가장 낮은 레벨의 알림으로 실시간 알림, 뱃지 표시 모두 없이 알림 센터에서만 확인할 수 있는 알림

읽음 여부를 나타내는 컬럼으로 처음엔 is_open 과 같은 필드를 추가하려고 했는데, 그렇게 되면 Notification 도큐먼트에 대한 의존성이 높아져 읽음 여부를 판단하기 위해 해당 도큐먼트를 계속 조회/수정해야한다.

따라서 읽음 여부는 알림 생성 날짜로 판단하기로 했다. 유저 정보에 last_notification_read_datetime과 같은 필드를 추가하여 유저가 마지막으로 알림을 확인한 날짜가 언제인지를 관리하는 것이다. 이로써 알림 센터에는 last_notification_read_datetime이 알림 생성 날짜보다 이전이라면 안읽음, 이후라면 읽음으로 처리할 수 있다.

해당 알림이 누구에 의해 어떤 대상에게 보내졌는지에 대한 정보는 별도의 컬렉션으로 관리하여 notification에는 최대한 원소성을 해치지 않도록 하였다. (알림에 필요한 정보라기보다는 로그 개념에 더 가깝다고 판단했다.)

이제 위의 내용을 바탕으로 알림을 위한 별도 서버 운영 또는 카프카로 알림 인프라를 셋팅할 예정인데 이 부분 다음 포스팅에서 다뤄보도록 하겠다!

profile
Start fast to fail fast

0개의 댓글