피드로 돌아가기
Pushsphere: LINE 메신저의 빠르고 신뢰할 수 있는 대량 푸시 알림 비법
LINE Engineering
Backend

Pushsphere: LINE 메신저의 빠르고 신뢰할 수 있는 대량 푸시 알림 비법

LINE이 Pushsphere 게이트웨이로 APNs·FCM의 부분 장애 시 자동 엔드포인트 전환, 할당량 인식 재시도, 서킷 브레이커 기반 모니터링을 구현해 메시지 도달률 향상

2025년 11월 13일12advanced

Context

LINE 메신저의 푸시 알림은 메시지 전달, 음성/화상 통화 등 핵심 기능의 일부로 신뢰성이 생명과 죽음을 가르는 수준입니다. APNs와 FCM 클러스터의 일부 인스턴스에서 타임아웃, 연결 끊김, 할당량 초과가 자주 발생하며, 단순 무작정 재시도는 할당량을 소진해 정상 요청마저 실패시키는 악순환을 초래합니다.

Technical Solution

  • 재시도 인식 로드 밸런서: 라운드 로빈 알고리즘에 재시도 컨텍스트를 연결해 이전에 실패한 엔드포인트를 제외하고 다른 엔드포인트로 요청 전송
  • 할당량 인식 자동 재시도 로직: Firebase 할당량을 분배해 각 서버가 재시도 전에 남은 할당량을 검증하고, 부하가 높을 때는 재시도 대신 새로운 요청 우선 처리
  • 엔드포인트별 서킷 브레이커: 각 엔드포인트마다 독립적인 서킷 브레이커를 할당해 문제 있는 IP를 풀에서 즉시 제거하고 새 엔드포인트로 교체
  • DNS 기반 엔드포인트 갱신: APNs의 DNS 특성(매번 다른 IP 반환)을 고려해 주기적으로 DNS 쿼리를 실행하고 후보 풀 갱신
  • Armeria 기반 비동기 처리: Armeria 프레임워크의 클라이언트측 로드 밸런싱과 자동 재시도를 커스터마이징해 Netty를 통한 비동기 전송 구현
  • 다중 데이터 센터 배포: 존 인식 라우팅(zone-aware routing)을 직접 구현해 LINE 메시징 서버와 Pushsphere 간 자율적 트래픽 조정
  • 통합 인터페이스: 하나의 API로 iOS(mTLS 인증) 및 Android(OAuth 2.0 인증)에 동일한 푸시 메시지 전송 지원

Impact

LINE 메신저에서 Firebase 특정 리전 서버 장애 시 이전에는 모든 요청이 3번씩 재시도하면서 할당량을 초과해 '429 too many request' 응답을 받았으나, 할당량 인식 재시도 로직 도입으로 이 문제 해결.

Key Takeaway

분산 푸시 알림 시스템에서 외부 API의 할당량 제한을 재시도 로직과 결합해 관리하고, 각 엔드포인트마다 독립적인 서킷 브레이커를 배치하면 일부 인프라 장애에 탄력적으로 대응하면서 높은 도달률을 유지할 수 있습니다.


APNs, FCM 등 외부 푸시 서비스를 통합하는 게이트웨이를 구축할 때, 실패한 엔드포인트를 재시도에서 제외하는 '재시도 컨텍스트 연결' 패턴을 도입하면 1/N 확률의 불필요한 재시도를 방지할 수 있고, 할당량 관리 로직을 재시도 인자로 추가하면 부하 상황에서 할당량 초과를 방지하면서 도달률을 지킬 수 있습니다.

원문 읽기
Pushsphere: LINE 메신저의 빠르고 신뢰할 수 있는 대량 푸시 알림 비법 | Devpick