Skip to content

알림 아키텍처 정리

나경호(Na Gyeongho) edited this page May 27, 2025 · 1 revision

FCM 알림

FCM ( Firebase - Cloud - Messaging )

[ 공식문서 LINK ]](https://firebase.google.com/docs/cloud-messaging?hl=ko)

FCM에서 말하는 서버의 모범 사례

image

FCM의 TOKEN

정의

  • 앱이 FCM 서버와 통신하기 위해 사용하는 고유 식별자.
  • Firebase에서 프로젝트별 디바이스를 구분하기 위한 기기별 고유 ID로 볼 수 있음.

특징

  • 디바이스마다 고유한 토큰이 발급됨.
  • 앱 설치·삭제, 사용자 재인증 시 토큰이 변경(Refresh)될 수 있음.
  • 서버는 이 토큰을 사용해 특정 디바이스에 푸시 메시지를 전송함.

활용 시 주의사항

  • 토큰이 만료되거나 변경될 수 있으므로 주기적인 갱신 로직이 필요함.
  • 여러 디바이스를 사용하는 유저라면 디바이스별 토큰을 각각 관리해야 함.
    • user - fcmToken (oneToMany)

FCM의 TOPIC

정의

  • **채널(Topic)**을 통해 여러 수신자 그룹에 메시지를 일괄 전송할 수 있는 구조.
  • 유저가 특정 토픽을 **구독(subscribe)**하면, 해당 토픽으로 발송되는 메시지를 수신함.

특징

  • subscribe, unsubscribe 메서드를 통해 구독·구독 취소 요청을 FCM에 전송함.
  • 토픽을 이용하면, 해당 토픽을 구독한 모든 유저에게 동일 메시지를 보내기 쉬움

토픽 사용 시 유의사항:

  • 이름은 알파벳·숫자로만 구성 가능(최대 256자).
  • 특수 문자, 공백, 한글 등은 사용할 수 없음.
  • 이미 존재하는 이름의 토픽과 중복 생성은 불가.

알림 요구 사항

  1. 관심사 알림 - 유저 간에 명함을 공유한 후, 관심사가 비슷한 유저가 있으면 푸시 알람을 보내고, (엔텔리 배너 클릭 후) 서비스 내에서 해당 유저들을 리스트업해서 보여줍니다.
  2. 타유저 정보 변경 알림 - 명함을 공유한 유저의 상태(명함 정보)가 변경되면 알림을 보내줍니다.

관심사 알림

  • FCM Topic 기능 활용

예상 시나리오:

  • 유저 A가 명함을 등록한다.
    • 서버: 등록된 명함을 토대로 관심사를 Topic으로 구독
  • 유저 A가 유저 B, C와 명함을 공유한다.
    • 서버: B,C의 관심사와 비교 후 일정 시간 이후 유저 A에게 푸시 알림

타유저 정보 변경 알림

  • 작성중..

Reference


FCM 푸시알림 구현 시, 유의사항

  • 유저 푸시알림 동의 여부를 백엔드 DB 에서 정합성을 유지해야함
    • FE 와 여러 케이스에서 논의 필요
      • 유저 삭제, 앱 삭제, 미동의 처리 등등.. 업데이트 케이스가 정말 많음
    • (이 부분에서 항상 이슈가 많았어서…)
  • 알림 관련 비용 처리 확인 필요
  • 최대 몇명에게 까지 요청 한 번으로 알림을 송신할 수 있는지?
    • 모두 개별적으로 처리하면 서버에 부하이슈 발생 가능
    • 일반적으로 외부 API call 의 경우 서버에서 처리가 느림
  • 푸시알림 발송 성공 여부 파악 필요
  • 이벤트 리스너 활용하여 비동기로 구현
Clone this wiki locally