피드로 돌아가기
Dev.toFrontend
원문 읽기
Firebase SDK 의존성 제거를 위한 SSE 기반 실시간 알림 시스템 구축
How I built real-time Flutter notifications without Firebase
AI 요약
Context
단순 인앱 배너 구현을 위해 무거운 Firebase SDK 전체를 도입하는 오버헤드 발생. FCM의 백그라운드 서비스와 각종 의존성이 단순 알림 기능 대비 과도한 리소스 소비를 유발하는 구조적 한계 존재.
Technical Solution
- 단방향 데이터 전송에 최적화된 SSE(Server-Sent Events) 채택을 통한 WebSocket 대비 핸드셰이크 오버헤드 제거
- HTTP 표준 스펙의 자동 재연결 기능을 활용한 연결 안정성 확보
- ?since= 쿼리 파라미터를 통한 미수신 알림 Replay 메커니즘 설계로 오프라인 상태의 데이터 정합성 유지
- Go/Gin 기반의 SSE Broadcast Layer 구축을 통한 다수 클라이언트에 대한 효율적인 Fan-out 처리
- 단일 Persistent Connection 내 다중 메시지 타입을 수용하여 Remote Config 확장성 확보
- 기존 another_flushbar 패키지를 SDK 하단에 배치한 UI 렌더링 레이어 분리 설계
실천 포인트
1. 양방향 통신이 불필요한 단순 푸시 알림의 경우 WebSocket보다 SSE 검토
2. 무거운 외부 SDK 도입 전 필요한 핵심 기능만 추출한 경량화 라이브러리 설계 가능성 확인
3. 클라이언트 재연결 시 누락 데이터 복구를 위한 시퀀스 또는 타임스탬프 기반 Replay API 설계