푸시 알림 서비스 SNS

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

SNSSimple Notification Service는 iPhone, iPad, Android, Kindle Fire와 같은 모바일 장치에 푸시 알림을 보낼 수 있는 서비스입니다. 또한, 이메일과 SMS 문자 메시지, SQS 큐 메시지도 보낼 수 있습니다.

프리 티어에서 사용 가능
SNS는 프리 티어에서 무료로 사용할 수 있습니다. 2014년 8월 기준으로 매달 푸시 알림 요청 1,000,000건, HTTP 알림 100,000건, 이메일 전송 1000건, SMS 전송 100건을 무료로 사용할 수 있습니다. 단, 데이터 전송 요금 별도입니다.

모바일 장치에 푸시 알림을 보내려면 서버를 구축하고 APNSApple Push Notification Service, GCMGoogle Cloud Messaging, ADMAmazon Device Messaging에 각각 전송 요청을 해야 합니다. SNS를 사용하면 푸시 알림 요청 한 번으로 동시에 애플 iOS, 구글 안드로이드, 아마존 킨들 파이어로 푸시 알림을 보낼 수 있습니다. 따라서 APNS, GCM, ADM 전송 코드를 일일이 구현하지 않아도 됩니다. 또한, HTTP 접속, 이메일 전송, SQS 큐 메시지 전송 기능도 있습니다.

SNS를 사용하면 메시지 전송 구현에 드는 노력과 시간을 아낄 수 있고, 서버 구축과 운영 비용을 절감할 수 있습니다. 그리고 SNS는 높은 가용성을 제공하므로 서비스 중지에 대해 신경 쓸 필요가 없습니다.


그림 26-1 SNS 애플리케이션 기본 개념

SNS는 사용자가 구현한 서버 애플리케이션(EC2 인스턴스)에서 모바일 장치로 푸시 알림을 보낼 수 있습니다. 또한, AWS의 S3, Glacier DynamoDB, RDS, ElastiCache, CloudWatch, CloudFormation의 다양한 이벤트도 SNS를 통해 전달할 수 있습니다. 예를 들면 CloudWatch로 EC2 인스턴스를 감시하다가 장애가 발생하면 이메일 또는 아이폰, 안드로이드폰의 푸시 알림으로도 받아볼 수 있습니다.

다음은 SNS 기본 개념입니다.

  • 애플리케이션(Application): APNS, APNS_SANDBOX, GCM, ADM 별로 생성하는 설정입니다. GCM은 API 키, APNS는 인증서, 개인 키, ADM은 클라이언트 ID, Secret이 필요합니다.
    • 엔드포인트(Endpoint): 애플리케이션에 속하며 푸시 알림을 받을 모바일 장치의 정보입니다. Device Token, Registration ID 등을 설정해야 하며 각 장치마다 다른 값을 가지고 있습니다. 푸시 알림을 보내는 최소 단위입니다.
  • 프로토콜(Protocol): 푸시 알림 메시지를 보내는 방식입니다. HTTP, HTTPS, Email, Email-JSON, SQS, Application(APNS, GCM, ADM 등)이 있습니다.
    • 엔드포인트: HTTP와 HTTPS는 URL, Email과 Email-JSON은 이메일 주소, SQS는 SQS 큐 이름입니다. 푸시 알림을 보내는 최소 단위입니다.
  • 토픽(Topic): 여러 개의 엔드포인트를 그룹으로 만든 것입니다. 토픽을 통해 푸시 알림 요청을 하면 토픽에 속한 모든 엔드포인트로 알림을 보냅니다.
  • 구독(Subscription): 토픽에 속한 엔드포인트입니다.
  • 요금: 알림 전송 개수, 데이터 전송량에 따라 요금이 책정됩니다. 자세한 요금은 AWS 사이트의 요금표(http://aws.amazon.com/ko/sns/pricing/)를 참조하기 바랍니다.

SNS의 애플리케이션, 토픽, 구독은 리전별로 생성해야 합니다.


그림 26-2 SNS 토픽, 구독, 엔드포인트간의 관계

SMS 문자 메시지
2014년 4월 기준으로 SMS 문자 메시지는 미국 버지니아 북부 리전(us-east-1)에서 생성한 토픽에서만 보낼 수 있고, 미국 핸드폰 번호만 지원합니다. 다른 리전에서 버지니아 북부 리전에 생성한 토픽에 SMS 메시지 전송 요청을 할 수 있습니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.