실시간 통신 기술 선택의 요점
- 알림 시스템을 설계할 때 중요한 건 "모든 상황에서 빠르고 안정적으로 알림을 전달하는 것"
- 특히 앱이 켜져 있을 때와 꺼져 있을 때는 동작 방식이 달라, 단일 방식으로는 한계 명확
- 우리 서비스는 모바일 백그라운드 상황까지 안정적으로 커버하는 것이 핵심
실시간 통신 기술 4가지 비교
- SSE
- 웹 기반의 단방향 알림에 가장 적합하다.
- 구현이 간단하고, 리소스 소모가 적으며 HTTP 기반이라 안정성이 높다.
- FCM
- FCM은 앱이 종료되었거나 백그라운드 상태에서도 전송 가능하다.
- 대부분의 경우 안정적인 도달을 보장하지만, 기기 설정이나 절전 모드에 따라 차이가 날 수 있다.
- 대규모 사용자에게 신뢰성 있게 메시지를 전달해야 할 때 가장 유리하다.
- WebSocket
- 양방향 통신이 필요한 기능(예: 채팅, 실시간 상호작용)에 적합하다.
- WebSocket은 많은 연결을 유지할 때 서버 리소스 부담이 증가하고, 스케일링이 복잡해질 수 있음
- Polling
- 간단한 기능이나 초기 개발 단계에서 빠르게 구현할 수 있다.
- 짧은 간격의 주기적 Polling은 서버 리소스 소모가 크며 실시간성도 떨어진다.
가장 적합한 기술 조합 (SSE + FCM)
1. 앱이 켜져 있을 땐 SSE로 즉시 전달
- 클라이언트가 서버에 연결만 되어 있다면, 알림이 발생하자마자 즉시 전송이 가능
- Web이나 iOS 앱이 포그라운드 상태일 때 실시간성 확보 가능
- Push 대신 UI 요소로 알림을 노출하는 데 적합
2. 앱이 꺼져 있을 땐 FCM으로 보완
- 앱이 백그라운드이거나 종료되어 있는 상태에서는 SSE 연결이 끊기기 때문에 실시간 전달이 불가
- 이때는 FCM을 통해 사용자에게 알림을 전달
- 백그라운드나 오프라인 상태에서도 유실 전송 보장