728x90
Amazon SNS
- 하나의 메시지를 대량의 consumer 들에게 전송하고 싶을 때 사용하는 기능이다.
- 쇼핑물 애플리케이션이 있고 해당 쇼핑몰에서 물건을 구매했을 경우 물건을 구매했다는 이메일을 보내고, 사기 탐지 서비스에 메시지를 보내고, 해외에서 구매를 했다면 해외 선박 서비스에 메시지를 보내고, SQS queue 로 메시지를 보낸다.
- 하나 하나 모든 메시지를 수동으로 관리하려면 엄청 번거로운 과정이 될 것이다.
- Pub/Sub(Publish/Subscribe) 라는 방법을 사용하면 매우 간단하게 해결할 수 있다.
- 쇼핑몰에서 물건을 구매했을 경우 메시지를 SNS Topic 으로 전송하고 해당 토픽에 Subscribe 가 존재한다면 Topic 이 각각의 sub 으로 메시지를 전송한다.
- 각각의 sub 들은 SNS Topic 으로부터 메시지를 수신하게 된다.
- 위와 같은 방식을 Pub/Sub 방식이라고 한다.
Amazon SNS
- event producer 가 SNS topic 으로 메시지를 보낸다.
- 원하는 만큼 subscribe 들에게 SNS topic 의 알림을 들을 수 있도록 설정할 수 있다.
- 각각의 subscribe 들은 SNS topic 으로부터 모든 메시지를 수신한다.
- 메시지 필터링 기능이 있지만 기본적으로 각각의 subscribe 들은 구독한 topic 으로 전송된 모든 메시지를 수신할 수 있다.
- 각 topic 들은 최대 1천만개의 구돌자를 가질 수 있다.
- Amazon SNS 에서는 최대 100,000 개의 주제를 가질 수 있다.
- Amazon SNS 의 구독자들은 다음과 같다.
- SQS
- HTTP/HTTPS
- Lambda
- SMS Message
- Mobile 알림
AWS 서비스에서 SNS 활용
- CloudWatch 알람은 SNS Topic 으로 알람을 전송하고 구독자들에게 메시지가 전송되는 구성이다.
- 오토 스케일링 그룹도 알람이 존재하고 토픽으로 메시지를 전송하면 구독자들에게 메시지가 전송되는 구성이다.
- 버킷에서 이벤트가 발생할 때 해당 이벤트를 토픽으로 전송하고 구독자들에게 메시지가 전송된다.
- 클라우드 포메이션(IaC 도구로 코드로 인프라를 프로비저닝하는 서비스이다.)
- etc...
AWS SNS - How to publish
- Topic Publish SDK 를 사용한다.
- 토픽을 생성
- 구독자들을 생성한다.
- 토픽으로 메시지를 전송하면 해당 토픽을 구독하고 있는 구독자들에게 자동으로 메시지를 보낸다.
- 모바일 앱 SDK 인 Direct Publish 를 사용한다.
- 플랫폼 애플리케이션 생성
- 플랫폼 엔드포인트 생성
- 플랫폼 엔드포인트로 메시지를 전송
- Google, GCM, Apple APNS, Amazon ADM 등 여러 방법으로 알림을 수신한다.
Amazon SNS - Security
- 보안
- HTTPS 를 사용하여 전송 중에 보안이 가능하다.
- KMS 키를 사용하여 미사용 데이터를 암호화할 수 있다.
- 클라이언트 측에서 암호화하여 데이터를 보낼 수 있도록 할 수 있다. 책임은 전적으로 클라이언트 몫이다.
- 접근 제어(Access Controls)
- 접근 제어에 있어서는 IAM 정책이 보안의 핵심이다.
- 모든 SNS API 들은 IAM 정책에 의해 통제된다.
- SNS 접근 정책은 S3 버킷 정책과 매우 유사하고, SNS 토픽에 여러 계정이 접근할 필요가 있거나 S3 이벤트 등 다른 AWS 서비스가 SNS 토픽으로 메시지를 보낼 수 있도록 허용할 때 매우 유용하다.
728x90