이 자습서에서는 Amazon Simple Notification Service(SNS)Amazon Simple Queue Service(SQS)를 사용하여 팬아웃 메시징 시나리오를 구현합니다. 이 시나리오에서는 메시지가 다수의 구독자에게 "푸시 알림"으로 전송되기 때문에 주기적으로 업데이트를 확인하거나 폴링할 필요가 없을 뿐만 아니라 구독자가 메시지를 비동기식으로 병렬 처리할 수 있습니다.

이를 보여 주기 위해 온라인 상점에서 주문이 접수될 때마다 주제에 대해 Amazon SNS 메시지를 전송하는 클라우드 네이티브 애플리케이션을 개발 중이라고 가정합니다. 해당 주제를 구독하는 Amazon SQS 대기열은 새 주문에 대해 각각 동일한 알림을 수신할 것입니다.

이 자습서에서 사용하는 AWS 서비스는 AWS 프리 티어에 포함되어 있습니다.

AWS에서 팬아웃 이벤트 알림을 전송하려면 계정 필요

무료 계정 생성

AWS 프리 티어에는 Amazon Simple Notification Service에 대한 게시물 1,000,000건과 Amazon Simple Queue Service의 요청 1,000,000건이 포함되어 있습니다.

AWS 프리 티어 세부 정보 보기 »

 

여기를 클릭하면 AWS Management Console이 새 브라우저 창에서 열리므로 이 단계별 안내서를 계속 열어 놓을 수 있습니다. 이 화면이 로드되면 먼저 사용자 이름 및 암호를 입력하여 시작하십시오. 그런 다음 검색 창에 notification를 입력하고 Simple Notification Service(간단한 알림 서비스)를 선택하여 서비스 콘솔을 엽니다.

tmt_send-fanout-event-notifications_1a

(확대하려면 클릭)

tmt_send-fanout-event-notifications_1a

a. SNS 콘솔 시작 페이지가 표시되면 Get Started Now를 클릭합니다.

tmt_send-fanout-event-notifications_1b

(확대하려면 클릭)

tmt_send-fanout-event-notifications_1b

이 단계에서는 Amazon SNS 주제를 생성합니다. 주제는 메시지 전송 및 알림 구독을 위한 커뮤니케이션 채널입니다. 이 예에서는 온라인 상점에 새 주문이 접수될 때마다 샘플 전자상거래 애플리케이션이 Amazon SNS 주제에 메시지를 푸시합니다. 


a.  Common Actions(일반 작업)에서 Create topic(주제 생성)을 클릭합니다.  

tmt_send-fanout-event-notifications_2a

(확대하려면 클릭)

tmt_send-fanout-event-notifications_2a

b. Create Topic(주제 생성) 대화 상자가 표시됩니다. Topic name(주제 이름) 입력란에 New-Orders를 입력한 다음 Create topic(주제 생성)을 클릭합니다.

tmt_send-fanout-event-notifications_2b

(확대하려면 클릭)

tmt_send-fanout-event-notifications_2b

c. Topic Details(주제 세부 정보) 페이지가 나타납니다.

tmt_send-fanout-event-notifications_2c

(확대하려면 클릭)

tmt_send-fanout-event-notifications_2c

Amazon SNS를 사용하여 주제를 생성했으므로, 이제 주제를 구독할 Amazon SQS 대기열을 생성합니다.

특정 주제를 여러 대기열에서 구독할 경우 메시지가 주제로 푸시될 때마다 모든 대기열에 동일한 알림이 수신됩니다. 해당 대기열에 연결된 서비스는 비동기식으로, 병렬로 주문을 처리할 수 있습니다.

예를 들어 대기열 중 하나에 연결된 Amazon EC2 서버 인스턴스는 다른 서버 인스턴스가 수신된 모든 주문을 분석하기 위해 데이터 웨어하우스에 연결될 동안 해당 주문의 프로세스 또는 완료를 처리할 수 있을 것입니다.

설명을 단순화하기 위해 이 자습서에서 실제로 EC2 인스턴스를 대기열에 연결하지는 않습니다.


a. 여기를 클릭하여 새 브라우저 창에서 Amazon SQS 콘솔을 엽니다. SQS 시작 페이지가 나타나면 Get Started Now(지금 시작)를 클릭합니다. 그렇지 않으면 다음 단계로 진행합니다.

 

tmt_send-fanout-event-notifications_3a

(확대하려면 클릭)

tmt_send-fanout-event-notifications_3a

b. 첫 번째 대기열은 각 주문 시마다 필요에 따라 재고에서 제품을 추가하고 삭제하면서 제품을 추적 관리하는 가상 Inventory Service의 주문을 저장합니다.  

Create New Queue(새 대기열 생성) 페이지의 Queue Name(대기열 이름) 필드에 Orders-for-Inventory를 입력합니다. Standard Queue(표준 대기열)를 선택된 상태로 두고 Quick-Create Queue(빠른 대기열 생성)를 클릭합니다.

tmt_send-fanout-event-notifications_3b

(확대하려면 클릭)

tmt_send-fanout-event-notifications_3b

c. 대기열 목록에 새 대기열이 생성되고 선택됩니다. 다음으로, 주문 분석을 처리할 두 번째 대기열을 생성합니다.

Create New Queue(새 대기열 생성)를 클릭하여 Analytics Service에 대한 주문을 저장하는 또 다른 대기열을 생성합니다.

tmt_send-fanout-event-notifications_3c

(확대하려면 클릭)

tmt_send-fanout-event-notifications_3c

d. Queue Name(대기열 이름) 필드에 Orders-for-Analytics를 입력하고 Quick-Create Queue(빠른 대기열 생성)를 클릭합니다. 

tmt_send-fanout-event-notifications_3d

(확대하려면 클릭)

tmt_send-fanout-event-notifications_3d

e. 대기열 목록에 새 대기열이 나타납니다.

tmt_send-fanout-event-notifications_3e

(확대하려면 클릭)

tmt_send-fanout-event-notifications_3e

Amazon SQS 대기열을 2개 생성했으므로, 이제 대기열에서 새 주문의 알림을 브로드캐스팅하는 Amazon SNS 주제를 구독해야 합니다.


a. 대기열 목록에서 Orders-for-Inventory 대기열과 Orders-for-Analytics 대기열을 선택합니다. Queue Actions(대기열 작업)에서 Subscribe Queues to SNS Topic(대기열에서 SNS 주제 구독)을 선택합니다.

tmt_send-fanout-event-notifications_4a

(확대하려면 클릭)

tmt_send-fanout-event-notifications_4a

b. Subscribe to a Topic(주제 구독) 대화 상자가 나타납니다. Choose a Topic(주제 선택) 드롭다운 목록에서 New-Orders Amazon SNS 주제를 선택합니다.

Amazon SQS 대기열을 생성하는 데 사용한 것과 동일한 계정으로 주제를 생성했으므로 SNS 주제가 목록에 표시됩니다. 다른 계정으로 SNS 주제를 만들 경우 Topic ARN을 사용하여 해당 주제를 구독할 수 있습니다. 자세한 내용은 Amazon SNS 설명서를 참조하십시오.

Topic Region(주제 리전)을 변경하지 않은 채로 Subscribe(구독)를 클릭합니다.  

tmt_send-fanout-event-notifications_4b

(확대하려면 클릭)

tmt_send-fanout-event-notifications_4b

c. Topic Subscription Result(주제 구독 결과) 대화 상자가 표시됩니다. OK(확인)를 클릭합니다.

tmt_send-fanout-event-notifications_4c

(확대하려면 클릭)

tmt_send-fanout-event-notifications_4c

이제 대기열에서 주제를 구독합니다. 이 단계에서는 가상의 전자상거래 애플리케이션이 주문 세부 정보가 포함된 메시지를 주제로 푸시하도록 설정하여 신규 주문을 시뮬레이션해 봅니다.


a. Amazon SNS 콘솔에서 Topics(주제)를 클릭합니다.

 

tmt_send-fanout-event-notifications_5a

(확대하려면 클릭)

tmt_send-fanout-event-notifications_5a

b. New-Orders 주제를 선택한 다음 Publish to topic(주제에 게시) 버튼을 클릭합니다.


tmt_send-fanout-event-notifications_5b

(확대하려면 클릭)

tmt_send-fanout-event-notifications_5b

c. Publish a Message(메시지 게시) 페이지가 나타납니다.

Subject(제목) 입력란에 Order 123-4567890-1234567을 입력합니다.

Message format(메시지 형식)에서 Raw(원시)를 선택합니다.

Message(메시지) 필드에 다음 텍스트를 입력하여 샘플 주문임을 나타냅니다.
1 x Widget @ 29.99 USD
2 x Widget Cables @ 4.99 USD

Publish Message(메시지 게시)를 클릭합니다. 확인 대화 상자가 표시됩니다.

tmt_send-fanout-event-notifications_5c

(확대하려면 클릭)

tmt_send-fanout-event-notifications_5c

새 메시지가 게시되면 Amazon SNS는 주제를 구독하는 모든 엔드포인트에 해당 메시지를 전송합니다. 이와 같은 팬아웃 시나리오에서는 Amazon SQS 대기열이 엔드포인트가 됩니다.

이 단계에서는 대기열로 주제가 전송되었음을 안내하는 메시지를 통해 대기열에 새 주문 알림이 수신되는지를 확인합니다.


a. Amazon SQS 콘솔의 대기열 목록에서 Orders-for-Inventory 대기열의 확인란을 선택합니다. Queue Action(대기열 작업) 드롭다운에서 View/Delete Messages(메시지 보기/삭제)를 선택합니다.

 

tmt_send-fanout-event-notifications_6a

(확대하려면 클릭)

tmt_send-fanout-event-notifications_6a

b. Start Polling for Messages(메시지 폴링 시작)를 클릭합니다.


tmt_send-fanout-event-notifications_6b

(확대하려면 클릭)

tmt_send-fanout-event-notifications_6b

c. View/Delete Messages in Orders-for-Inventory(Orders-for-Inventory의 메시지 보기/삭제) 대화 상자가 나타납니다.

tmt_send-fanout-event-notifications_6c

(확대하려면 클릭)

tmt_send-fanout-event-notifications_6c

d. Body(본문) 열에서 More Details(추가 세부 정보)를 클릭합니다. Message Details(메시지 세부 정보) 상자는 주제에 게시한 제목 및 메시지로 된 JSON 문서를 담고 있습니다.  

Orders-for-Inventory 대기열에 New-Orders 주제로부터 새 주문에 대한 알림이 수신되었음을 확인했습니다.  

Close(닫기)를 클릭합니다.

 

tmt_send-fanout-event-notifications_6d

(확대하려면 클릭)

tmt_send-fanout-event-notifications_6d

e. 가상의 Inventory Service가 이 메시지의 처리를 완료했고, 이제 대기열에서 메시지를 안전하게 삭제할 수 있다고 가정합니다. 

Delete 1 Message(1개 메시지 삭제)를 클릭합니다. Yes, Delete Checked Messages(예, 선택한 메시지를 삭제합니다)를 클릭하여 확인합니다. 그런 다음 Close(닫기)를 클릭합니다.

 

tmt_send-fanout-event-notifications_6e

(확대하려면 클릭)

tmt_send-fanout-event-notifications_6e

f. 6a~6e단계를 반복하여 Orders-for-Analytics 대기열에도 새 주문에 대한 알림이 수신되는지 확인합니다.

tmt_send-fanout-event-notifications_6f

(확대하려면 클릭)

tmt_send-fanout-event-notifications_6f

이 단계에서는 이 자습서에서 생성한 주제 구독, 주제, 대기열 등의 리소스를 삭제합니다. 사용하지 않는 리소스를 삭제하여 비용이 부과되지 않도록 하는 것이 모범 사례입니다.


a. Amazon SNS 콘솔을 열고 왼쪽 탐색 창에서 Topics(주제)를 클릭합니다.

New-Orders 주제를 선택합니다.

Actions(작업) 드롭다운 목록을 클릭하고 Delete topics(주제 삭제)를 선택합니다.


tmt_send-fanout-event-notifications_7a

(확대하려면 클릭)

tmt_send-fanout-event-notifications_7a

b. Delete(삭제) 확인 대화 상자가 나타납니다. Delete(삭제)를 클릭합니다. 주제와 해당 구독이 삭제됩니다. 이제 SNS 브라우저 창을 닫아도 됩니다. 단, SQS 콘솔에서도 대기열을 삭제해야 하므로 로그아웃하지는 않습니다.

 

tmt_send-fanout-event-notifications_7b

(확대하려면 클릭)

tmt_send-fanout-event-notifications_7b

c. Amazon SQS 콘솔에서 Orders-for-Inventory 대기열과 Orders-for-Analytics 대기열을 선택합니다. Queue Actions(대기열 작업)에서 Delete Queues(대기열 삭제)를 선택합니다.


tmt_send-fanout-event-notifications_7c

(확대하려면 클릭)

tmt_send-fanout-event-notifications_7c

d. Delete Queues(대기열 삭제) 대화 상자가 표시됩니다. Yes, Delete 2 Queues(예, 2개의 대기열을 삭제합니다)를 클릭합니다. 대기열이 삭제됩니다.

이제 Amazon SQS 콘솔에서 로그아웃해도 됩니다.

tmt_send-fanout-event-notifications_7d

(확대하려면 클릭)

tmt_send-fanout-event-notifications_7d

Amazon SNS 및 Amazon SQS를 사용하여 팬아웃 시나리오를 구현했습니다. 이제 Amazon SNS와 Amazon SQS를 함께 사용하여 이벤트에 대한 즉각적인 알림이 필요한 애플리케이션에 메시지를 전송하거나, 다른 애플리케이션에서 나중에 처리할 수 있도록 Amazon SQS 대기열에 메시지를 버퍼링할 수 있습니다.

 


Amazon Simple Notification Service와 Amazon Simple Queue Service를 사용하여 메시지 팬아웃 알림을 구현하는 방법을 배웠으므로, 이제 다음 옵션 중 하나를 선택하여 AWS의 클라우드 메시징에 대해서 더 자세히 알아보십시오.

자세히 알아보기

Amazon Web Services(AWS)의 기능, 구성 요소, 메시지 주제의 사용 사례에 대한 개요를 살펴볼 수 있습니다. Amazon SNS 웹 페이지로 이동 »

심화 학습

애플리케이션, 최종 사용자 및 장치가 클라우드에서 알림을 즉각적으로 전송하고 수신할 수 있도록 설정하는 방법을 알아봅니다. 설명서 보기 »

실습

Amazon SQS 및 Amazon SNS를 활용하여 애플리케이션을 결합 해제하고 확장한 Capital One 등의 고객 사용 사례를 소개합니다. 웹 세미나 보기 »

아니요