ios
필요로 되는 구성은 구성은 아래와 같다.
- provider : 알림요청을 만들어서 애플 푸시 알림 서비스(APNS)로 보낸다. 구성은 단말 토큰 + 페이로드 로 구성되어 있다.
- APNS : 애플이 제공하는 원격 서비스이다.
- Device
Android
FCM(Firebase Cloud Messaging)을 활용한다.
SMS
트윌리오 넥스모 같은 제 3 사업자의 서비스를 이용한다.
상용 이메일 서비스를 이용한다. 대표적으로 메일 침프 ㅔㄴ드그리드 등이 있다.
위 서비스들을 묶어서 제 3 사업자 제공 서비스로 칭한다.
특정 서비스들 --- 알림 서버 ----- 제 3자 제공 서비스 ----- 엣지 디바이스(알림)
서비스 : 알림 시스템 서버를 통해 알림을 보낼 서비스들을 의미한다.
알림서버 : 아래와 같은 기능을 제공해야한다.
- 인증과 인가
- 알림 검증
- 데이터 베이스 또는 캐시 : 알림에 포함시킬 데이터를 가져오는 기능
- 알림 전송
캐시 : 사용자의 정보, 단말 정보, 템플릿 등을 캐시한다
데이터베이스 : 사용자, 알림, 설정 등 다양한 정보를 저장한다.
메시지 큐 : 시스템 간의 의존성을 제거하기 위해 사용한다. 다량의 알림이 전송되어야 하는 경우를 대비한 버퍼 역할을 하기도 한다.
작업 서버 : 메시지 큐에서 전송할 알림을 꺼내서 제 3자 서비스로 전달한다.
제 3자 서비스 : 앞에서 설명
엣지 디바이스
- 데이터 손실 방지
- 알림 중복 전송 방지
알림 템플릿
중복된 메시지를 위해서 알림 메시지를 템플릿으로 고려하여 데이터베이스 및 캐시에 저장하여 사용한다.
알림 설정
사용자는 너무 많은 알림을 받곤 한다. 따라서 스스로 조정할 수 있도록 선택권을 유지해줄 필요가 있다.
전송률 제한
사용자에게 메시지 빈도를 제한하는 방법이 있다.
재시도 방법
재시도 메시지 큐를 만들어서 개발자에게 문제가 발생시 통보할 수 있도록 한다. (로그 등등)
큐 모니터링
메트릭을 활용해서 메시지 큐에 쌓인 알림의 개수들을 활용한다. 이 수가 너무 크면 작업 서버들이 이벤트를 빠르게 처리하고 있지 못하는 뜻이므로(sub) 해당 경우에는 작업 서버를 증설하는 것이 맞다. 이를 고려하여 메시지 큐의 토픽이나 파티션등을 고려하면 더 좋을 것 같다.
이벤트 추적
알림 확인율, 클릭율, 실제 앱 사용으로 이어지는 비율 등을 반영하여 데이터 분석 서비스를 활용하는 것이 좋다.