현재 진행하고있는 프로젝트에서 공지사항과 관련된 기능을 맡게 되었다. 한 개의 공지사항을 여러 사용자에게 보내야 하기 때문에 해당 기능을 구현할 수 있는 기술을 찾아보게 되었다. 여러 기술들이 있었지만, 그 중에서도 FCM을 도입하게 되었다.
FCM 이란,
FCM은 Firebase Cloud Messaging의 약자로 Google에서 제공하는 푸시 알림 서비스이다. FCM은 iOS, Android, Web 등 여러 플랫폼을 지원하고 있고, 특히 안드로이드에서는 푸시 알림을 위해 FCM이 필수 요소이기 때문에 많이 사용되고 있다.
FCM 외에도 여러 기술이 존재한다.
APNs - iOS 전용, FCM을 사용하면 FCM이 자동으로 APNs로 보내서 처리할 수 있도록 해줌!
WebSocket - 실시간 양방향 통신 필요시 사용, 서버 유지비용 필요
Web push → 웹 브라우저 전용
⭐ FCM → 구글에서 지원, 특정 플랫폼에 종속 x
우리 프로젝트는 iOS, Android를 지원해야 하기 때문에, FCM을 사용하기로 결정했다.
FCM 의 동작 방식
기본적으로 FCM은 중앙에서 메시지를 전달받으면, 등록된 기기에 푸시알림을 전송하는 형태로 동작한다. 동작 흐름은 다음과 같다.
1. 앱 설치 시 FCM은 디바이스에 고유 token을 발급하고, 이를 FCM DB에 저장
2. 서버는 이 토큰을 이용하여 FCM 서버에 메시지 전송 요청 보냄
3. FCM서버가 푸시 채널을 통해 해당 디바이스에 메시지 전달
FCM은 푸시알림을 받는 사용자의 수에 따라 두 가지 방식을 사용한다.
Token 방식
알림을 전달받는 대상이 한 명일 때 사용
서버가 FCM에 토큰값을 전달하여 FCM은 해당 토큰을 갖는 사용자에게 메시지를 전달하는 방식
public void sendMessageByToken(Request request) {
try {
firebaseMessaging.send(~..)
.setToken(request.token())
.build());
} catch (~) {~}
}
Topic 방식
알림을 전달받는 대상이 여러 명일 때 사용
서버가 FCM에 토픽 이름을 전달하고, FCM은 해당 토픽을 구독하는 사용자들에게 메시지를 전달하는 방식
public void sendMessageByTopic(Request request) {
try {
firebaseMessaging.send(~..)
.setTopic(request.topic())
.build());
} catch (~) {~}
}
+ 실제 구현을 할 때에는 firebase 초기화 설정을 해주어야 한다!
'인프라' 카테고리의 다른 글
| RDS MySQL 버전 변경하기 - Blue/Green Deployments (0) | 2025.12.29 |
|---|