성장일기

내가 보려고 정리하는 공부기록

인프라

[FCM] FCM(Firebase Cloud Messaging)에 대하여

와나나나 2026. 1. 12. 17:12
728x90

현재 진행하고있는 프로젝트에서 공지사항과 관련된 기능을 맡게 되었다. 한 개의 공지사항을 여러 사용자에게 보내야 하기 때문에 해당 기능을 구현할 수 있는 기술을 찾아보게 되었다. 여러 기술들이 있었지만, 그 중에서도 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