[ Server ] FCM 이란?

5tr1ker·2023년 10월 13일
0

Server

목록 보기
10/10
post-thumbnail

FCM 이란?

FCM은 Firebase Cloud Messaging 의 약자로 교차 플랫폼 메세징 솔루션입니다.
FCM는 SocketSSE 기술과 비교되는데 FCM를 사용하는 이유는 플랫폼에 종속되지 않고 메세지나 푸시 알림을 구현할 수 있기 때문입니다.

만약 Socket 과 SSE 에 대한 정보를 더 알고 싶다면 해당 포스팅 을 참고해주세요.

기존 iosAndroid , Web 각각 알림을 보내기 위해 각각의 플랫폼에 대한 환경을 구성해주어야 하는데 이를 하나로 통합한 솔루션입니다.

클라우드 메세징을 사용하면 무슨 이점이?

서버에서 푸시 알림을 받으려면 항상 서버와 연결되어 있어야 하는데 이는 네트워크배터리 소모 에 문제가 됩니다.

이러한 문제를 해결하기 위해 클라이언트백엔드 사이에 FCM 서버를 둠으로써 클라이언트는 직접 서버와 연결되어있지 않아도되며, 이는 위의 문제를 해결할 수 있습니다.

이를 그림으로 표현하면 아래의 그림과 같습니다.

적은 네트워크와 효율적인 배터리 사용으로 인해 현재 많은 서비스 회사에서 FCM을 사용하고 있습니다.

FCM은 Google에서 제시하는 사용법을 숙지하고 있으면 손쉽게 구현할 수 있습니다.

FCM의 원리

FCM는 서버에서 데이터를 푸시했을 때 클라이언트 플랫폼에 데이터를 전송해주어야 하는데 이를 서버 푸시라고 합니다.

기존에 클라이언트는 서버에서 데이터를 받으려면 네트워크 연결이 필수인데, 언제 데이터가 전송될지 모르게 때문에 지속적으로 네트워크에 연결되어있어야 합니다.

문제는 한 달에 한번만 오는 데이터를 받기위해 한달 내내 서버와 연결되어 있어야 하는 비효율성 때문에 클라우드 메세징 을 이용하여 서버가 데이터를 클라이언트에 직접 전달하는게 아니라 FCM 서버 를 거쳐서 클라이언트에 전달하는 방식으로 사용합니다.

때문에 클라이언트는 네트워크 연결을 유지하지 않더라도 메세지를 받을 수 있습니다.

GCM 이랑 FCM 의 차이

GCM 은 Google Cloud Messanging 의 약자로 구글에서 제공되며 Server 와 App 간의 푸시 메세지를 보낼 수 있는 서비스입니다.

이후 Firebase 에 인수되면서 FCM 으로 명칭이 바뀌었으며 앱 뿐만 아니라 웹 , ios 등 모든 플랫폼에서 사용 가능한 FCM SDK 서비스를 제공하고있습니다.

따라서 현재GCM SDKFCM SDK 두 버전이 있는데 FCM SDK 를 사용할 것을 권장하고 있습니다.

FCM 작동 방식

1단계 토큰 발급 요청

클라이언트는 Sender ID 를 생성하여 FCM 서버 에게 등록을 요청합니다.

2단계 토큰 발급

FCM은 클라이언트에서 받은 Sender ID를 이용하여 Registration Token을 생성하여 반환합니다.

3단계 웹 서버 등록

클라이언트는 전달받은 Registration Token 을 백엔드에게 전달하고 , 전달받은 백엔드 서버는 이 토큰을 저장합니다.

4단계 메세지 전송 요청

백서버는 Registration TokenAPI Key , 메세지를 이용해 FCM 서버 에게 메세지를 전송합니다.

5단계 메세지 전송

FCM 서버는 백엔드 서버에서 받은 데이터를 특정 기기에 메세지를 전송합니다.

같이 보면 좋은 글

공식 홈페이지로 구현 코드 및 부족한 설명은 해당 링크를 참고해주세요.
https://firebase.google.com/docs/cloud-messaging/send-message?hl=ko

참고

참고 블로그 1 : 참고 블로그
참고 블로그 2 : https://codinghero.tistory.com/50
참고 블로그 3 : 참고 블로그

profile
https://github.com/5tr1ker

0개의 댓글