기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SNS
Amazon SNS를 사용하면 표준 주제와 FIFO 주제를 모두 생성할 수 있습니다. 주제는 게시/구독(pub/sub) 아키텍처를 구현하는 데 사용됩니다. Amazon SNS는 이메일, SMS(발신자 ID를 설정한 경우, 예: 무료전화번호 또는 10자리 장문 번호), HTTP(S) 엔드포인트, SQS 대기열 등 다양한 구독 유형을 지원합니다. SNS 주제에 대한 이메일 메시지나 SMS 메시지와 같은 최종 사용자 구독은 구독자가 반드시 확인해야 합니다. Amazon SNS는 서비스가 널리 퍼져 메시지를 전달할 수 있도록 지원합니다. 즉, 하나의 메시지가 잠재적으로 많은 구독자에게 전달될 수 있습니다. SNS 표준 주제의 기본 구독 한도는 1,250만 개입니다.
마이크로서비스 환경에서 SNS 주제는 게시자와 메시지 라우팅 및 전달 로직을 분리하는 데 유용합니다. 이는 주제 필터를 사용하여 구현할 수 있습니다. 개념적으로 주제 필터는 Amazon EventBridge 규칙과 다소 유사하지만, 중앙 위치에서 관리되는 것이 아니라 각 구독자마다 개별적으로 구성됩니다. 예를 들어 다음과 같은 서비스가 있다고 가정해 보겠습니다.
-
주문을 처리하는 주문 서비스
-
주문 이행을 처리하는 이행 서비스
-
주문 시 회원에게 로열티 포인트를 부여하는 로열티 서비스
주문이 이행 준비가 되면, 주문 서비스는 메시지를 주제에 게시합니다. 이행 서비스는 모든 주문을 알기 원하기 때문에 필터를 적용하지 않고 주제를 구독합니다. 회원이 주문을 하면 회원에게 포인트를 부여하는 역할을 하는 로열티 서비스가 있다고 가정해 보겠습니다. 그러나 회원이 모든 주문을 하지는 않습니다. 로열티 서비스는 주제를 구독하지만 구독 필터를 사용해 주문이 회원용인지 게스트용인지 속성을 확인합니다.
다음 다이어그램과 같이 시스템이 최종 사용자로부터 결제 요청을 받는 경우를 생각해 보겠습니다. 이 경우 여러 하위 시스템이 요청 발생 사실을 알아야 여러 작업을 수행할 수 있습니다. Amazon SNS를 사용하면, 결제 요청은 SNS 주제에 게시되고, Lambda 함수가 이 주제를 구독하여 고객 데이터베이스와 판매 데이터베이스를 업데이트합니다. 또한 이메일 구독(고객이 확인해야 함)을 통해 구독 필터를 사용하여 고객에게 이메일 확인 메시지를 전송할 수 있습니다.
지침
이 섹션에서 설명한 Amazon SNS의 일부 기능은 EventBridge와 같은 이벤트 버스의 기능과 겹칠 수 있습니다. 다음과 같은 경우 Amazon SNS를 사용하는 것이 좋습니다.
-
주제에 많은 수의 구독자가 있을 경우
-
EventBridge에서 기본적으로 지원하지 않는 구독 유형(예: 이메일, SMS)을 사용하고자 할 경우
-
구독자가 자신의 구독 필터를 직접 결정할 수 있어야 할 경우
-
구독자에게 메시지 그룹별로 순서가 보장된 전달이 필요할 경우
반대로, 여러 주제가 있고 구독과 필터를 사용해 마이크로서비스 간 메시지를 라우팅해야 하는 경우에는 EventBridge가 더 적합할 수 있습니다.