
외주를 하며 새로운 과제가 등록이 되면 유저에게 푸쉬 알림(Push Notification)을 전해야 하였다. 이를 위해 FCM(Firebase Cloud Messaging)을 사용하여 해당 기능을 구현하였다. 그렇다면 FCM이란 무엇이며, 어떠한 로직으로 동작하는지를 먼저 정리하고, 다음 포스트에서 어떻게 구현했는지 정리하려고 한다.
FCM (Firebase Cloud Messaging)
파이어베이스 클라우드 메시징은 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션이다.
Push Notification
푸시 알림은 서버에서 유저의 디바이스로 정보를 보내는 기술을 뜻한다.
클라이언트 앱(Client App)
→ 안드로이드 단말에서 FCM을 사용하는 앱으로, 푸쉬 알림을 받는 역할
Notification Server
→ 모바일 기기에 push 알림을 전송하는 서버로, 여기서는 FCM이 Notification Server에 해당된다.
Provider
→ Client App을 위한 서버
→ 필요 시 Notification Server에 요청을 전송하여 Client App에 알림을 보낸다.
→ 여기서는 Spring Boot가 이 역할을 수행한다.
Sender ID
→ Client App에서 Registration Token을 발급 받기 위해 FCM에 전달하는 값으로 사용된다.
Registration Token
→ FCM에서 발급 받은 토큰으로, 앱 서버(Provider)에 전달하여 클라이언트 앱에서 메시지 알림을 전송할 때 사용한다.
→ 앱 서버(Provider)에 Registration Token을 저장하며, 저장된 토큰들 중 비활성화된 토큰은 삭제하는 방식으로 관리하는 것이 권장된다.

FCM Token
푸쉬 알림을 보낼 디바이스를 식별하기 위해 존재한다.
토큰을 DB에 저장하기도 하지만, 성능이 중요한 요소라면 in-memory 저장소도 고려해볼만 하다.