외주를 하며 새로운 과제가 등록이 되면 유저에게 푸쉬 알림(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 저장소도 고려해볼만 하다.