Spring Boot - fcm (1) 뜻, 구성도, 순서

ysh·2023년 10월 2일
0

인턴십

목록 보기
2/25

FCM(firebase cloud messaging)

  • 애플리케이션의 서버와 클라이언트 사이에 메시지를 전송할 수 있게 해주는 무료의 크로스 플랫폼 메시징 솔루션
  • 현재 구현 목표는 프론트에서 알람 정보를 받아 서버에서 알람을 보낼 시 사용자의 컴퓨터, 모바일 기기에 실시간으로 알람(푸쉬 메시지)이 뜨게 만들기 위함.

아키텍쳐 구성도


(출처 : 공식 사이트)

1. Message buliding and targeting

  • FCM 서버 프로토콜을 지원하는 신뢰할 수 있는 서버 환경에서 메시지 요청을 구현 (공식 문서)
  • 즉 우리가 만들고 있는 서버가 신뢰할 수 있는 서버인지 firebaseConfig (후에 다룸)에 apikey나 여러가지 정보를 서버로 보내 firebase에서 '신뢰할 수 있는 서버'임을 증명하고, 해당 기기들의 토큰 (메시지를 받을 사용자의 컴퓨터, 모바일 디바이스 토큰)을 발급한다.

2. FCM backend

  • 메시지 요청을 수락하는 등 여러 기능을 수행하는 FCM 백엔드는 주제를 통해 메시지 팬아웃을 수행하고 메시지 ID와 같은 메시지 메타데이터를 생성 (공식 문서)
  • 토큰과 함께 메시지를 전송하면 FCM backend로 가서 메시지 요청을 수락하거나 메타데이터를 생성한다고 한다. firebase 서버에서 다 해주니 정확히는 모르겠다.

3. Platform-level message transport

  • 기기로 타겟팅된 메시지를 라우팅하고, 메시지 전송을 처리하고, 필요한 경우 플랫폼별 구성을 적용합니다. ex) Android 전송 레이어(ATL), Apple 푸시 알림 서비스(APN), 웹 앱용 웹 푸시 프로토콜 (공식 문서)
  • 토큰을 토대로 각각의 디바이스로 푸시 알람을 전송한다는 듯 하다. firebase 서버에서 다 해주니 정확히는 모르겠다. 현재 웹으로만 해서 그런 지 모르겠으나, 위와 마찬가지로 따로 설정할 건 없었다.

4. SDK on service

  • 알림이 표시되거나 앱의 포그라운드/백그라운드 상태 및 관련 애플리케이션 로직에 따라 메시지가 처리됩니다. (공식 문서)
  • 위의 단계들로 각각의 디바이스 토큰(즉, 사용자의 디바이스)로 알람이 전송되고, 알람이 수신되었을 시 'push'등의 이벤트가 발생하며 데이터가 들어와 해당 알람 데이터를 처리해 줄 수 있다.
    (화면에 띄우기 등)

정리

나름대로 정리를 하자면,

    1. 먼저 firebase 콘솔에서 apikey 등을 발급받는다. (api 사용이니 당연히 해야지)
    1. 위에서 발급받은 설정 정보 (특정 config 코드를 발급해준다)를 firebase로 보내 초기화하여 인증한다.
    1. 사용자가 접속한 디바이스에서 토큰을 발급받는다.
    1. 해당 토큰들을 DB 저장 등을 통해 유지하고, 우리가 알람을 보낼 시 해당 토큰들을 fcm 백엔드로 같이 보내 경로를 설정할 수 있게 해준다. (토큰 보내면 알아서 해줌)
    1. fcm 백엔드와 Platform-level message transport (위의 2, 3단계)가 알아서 사용자의 디바이스로 알람을 보낸다.
    1. 사용자 측에서 알람을 받을 시 발생하는 이벤트로 데이터를 처리하여 알람을 띄우던가 한다.

일단 내 머리 속에선 이 정도로 갈피가 잡혀있다.
나도 처음 사용한 것이었고, 작동이 가능한 정도로만 구현했기 때문에 코드가 복잡하거나 비효율적일 수 있다.

profile
유승한

0개의 댓글

관련 채용 정보