cleanUrl: "/engineering/pushserver"
개요
Google FCM 을 사용하여 안드로이드, 애플 앱으로 푸시 메세지를 발송하는 서버를 구현함
Flow

앱 푸시 서버 흐름도
Features
- 애플, 안드로이드 푸시 메세지를 발송
- 메세지 유형이 존재하고, 유형에 따라 시간 단위로 묶어서 보내는 기능
- 예) 1분안에 동일 유형의 메세지가 동일 수신자에 발송되는 경우, 1개의 메세지로 축약해서 전송
- 1분 동안 1건의 특정 유형의 메세지가 발송되어야 하는 경우, 원래 메세지로 발송
- 1분 동안 2건 이상의 동일 유형의 메세지가 발송되어야 하는 경우, 미리 정해진 템플릿에 맞춰 1개의 메세지로 보냄
- 팔로워들에게 메세지를 발송해야하는 경우, 백엔드나 앱에서는 송신자와 메세지 1건을 팔로우 큐에 쌓음
- 1건의 팔로우 큐 메세지당, 팔로워 리스트를 조회해서, 메세지를 생성하여, 발송 큐에 저장함
- 사용자별 특정 시간, 특정 메세지 유형에 따라 수신 여부 룰이 있어, 해당 룰을 사용하여 메세지를 보내거나 보내지 말아야 함
- 백엔드나 앱에서는 해당 룰에 상관없이 큐에 쌓음
- 수신 거부 메세지 유형에 대해서는 버림
- 메세지 발송 큐 처리
- 메세지 건당 발송하지 않고, 50개씩 묶어서 배치 발송 처리
- 사용사의 수신 확인 및 메세지 유형 확인하여 묶음 처리 또는 발송
Follow message
- 앱이나 백엔드 서버에서 1:N 팔로우 메세지 1건을 Follow Queue 에 저장
- 푸시서버의 Follow Thread 에서 Poll
- 1:N 의 1인 이벤트 발생 사용자의 아이디를 Following 하는 Follower 사용자 아이디(들)을 조회
- 1:N의 N 메세지를 생성하여, 우체통에 저장
- N 메세지를, Push Message Queue 에 저장

Following 1:N Message Process
Merge message