1. Notification System
- 알림 시스템은 사용자에게 중요할 만한 정보를 비동기적으로 전달하는 시스템입니다.
- 알림 시스템은 단순히 모바일 푸시 알림에 한정되지 않습니다.
- 모바일 푸시 알림, SMS, 이메일 등 다양한 방식으로 알림을 전달할 수 있습니다.
- 이번 글에서는 iOS 푸시 알림, 안드로이드 푸시 알림, SMS, email을 지원하는 알림 시스템을 설계해보겠습니다.
2. 알림 유형
- 먼저 알림 유형별로 알림 메커니즘이 어떻게 동작하는지 알아보겠습니다.
2.1 iOS 푸시 알림
- iOS 푸시 알림을 보내기위해서는 세 가지 컴포넌트가 필요합니다.
- Provider
- 알림 요청을 만들어 APNS에 전달하는 주체입니다.
- 알림을 만들기 위해서는 device token과 payload가 필요합니다.
- device token은 device를 식별하는 고유한 값입니다.
- payload는 알림 내용을 담고 있는 데이터입니다.
- APNS
- 애플이 제공하는 원격 서비스입니다.
- iOS 장치로 알림을 보내는 역할을 담당합니다.
- Device
2.2 안드로이드 푸시 알림
- 안드로이드 푸시 알림을 보내기위해서는 세 가지 컴포넌트가 필요합니다.
- iOS와 비슷한 절차로 동작합니다. APNS 대신 FCM(Firebase Cloud Messaging)을 사용합니다.
- Provider
- 알림 요청을 만들어 FCM에 전달하는 주체입니다.
- 알림을 만들기 위해서는 device token과 payload가 필요합니다.
- FCM(Firebase Cloud Messaging)
- 구글이 제공하는 원격 서비스입니다.
- 안드로이드 장치로 알림을 보내는 역할을 담당합니다.
- Device
2.3 SMS
- SMS는 문자 메시지를 통해 알림을 전달합니다.
- SMS를 보내기 위해서는 세 가지 컴포넌트가 필요합니다.
- Provider
- SMS를 보내는 주체입니다.
- SMS를 보내기 위해서는 phone number와 message가 필요합니다.
- SMS 서비스
- SMS를 보내는 서비스입니다.
- 보통 트윌리오, 넥스모 같은 제3자 서비스를 사용합니다.
- Device
2.4 Email
- Email은 이메일을 통해 알림을 전달합니다.
- Email을 보내기 위해서는 세 가지 컴포넌트가 필요합니다.
- Provider
- Email을 보내는 주체입니다.
- Email을 보내기 위해서는 email address와 message가 필요합니다.
- Email 서비스
- Email을 보내는 서비스입니다.
- 대부분의 회사는 고유 이메일 서버를 구축해 사용합니다.
- 그럼에도 많은 회사가 사용 이메일 서비스를 사용하기도 합니다.
- 센드그리드, 메일침프 등의 제3자 서비스를 사용할 수 있습니다.
- Device
3. 연락처 정보 수집