SNS(Simple Notification Service)는 SQS와 비슷한 메시지를 전달해주는 fully managed service이다.
다른 점으로는 pub/sub 모델로 하나의 메시지를 여러 receiver에게 전달한다. 또한 subscriber가 물어보는 polling 방식이 아니고 등록된 subscriber에게 push 해준다.
SNS를 사용하기 위해 먼저 topic을 생성하고 이 topic의 subscriber를 등록한다.
이벤트 기반이기 때문에 cloudwatch, s3 등의 많은 aws 서비스가 SNS topic을 publish 할 수 있도록 연동되어있다. 마찬가지로 SQS, Lambda, SMS 등의 서비스를 구독시킬 수 있어 안정적인 인프라를 구성하는데 활용한다.
이벤트 구독하는 서비스별로 그에 맞는 retry로직이 실행되고, 옵션에 따라 threshold를 넘기면 Dead-Leatter Queue(SQS)로 전달할 수 있다.
Filter policy
subscriber별로 메시지 filter policy를 적용해서 원하는 이벤트만 받을 수 있다.
Fan out
SNS는 fully managed service이지만 subscriber로 특정 서버를 띄운다면 scalability가 떨어지게 된다.
이 경우는 SNS의 subscriber로 SQS를 n개 등록하고 이 n개의 SQS를 각 서비스에서 consume 하는 구조로 변경해서 성능을 높일 수 있다. 이벤트를 발생시키는 주체와 이벤트를 받는 주체를 완전히 decoupling 시킬 수 있는 방법이다.
'aws' 카테고리의 다른 글
AWS ECS dynamic port mapping (0) | 2020.04.22 |
---|---|
AWS VPC를 연결하는 서비스 (0) | 2020.04.19 |
AWS SQS(Simple Queue Service) (0) | 2020.04.12 |
AWS CloudFront (0) | 2020.04.12 |
AWS ElastiCache Redis (0) | 2020.04.11 |
댓글