구독 중인 서비스나 사용자에게 메시지 전달 및 전송을 해주는 서비스
SNS 는 주제와 구독으로 이루어져 있습니다.
주제(Topic)
: 메세지를 수신하는 액세스 포인트
구독(Subscirbe)
: 주제를 통해 발생된 메시지들을 엔드포인트와 이어주는 역할

① Publisher 에서 메세지 전송
② Amazon SNS
- SNS Topic 에서 메세지 수신
- 설정된 endpoint 에서 메세지를 수신할 수 없는 경우 DLQ 에서 재처리
- 메시지를 설정되어 있는 엔드포인트에 전송
③ Subscriber 에서 메세지 수신
마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있도록 지원하는 완전관리형 메시지 대기열 서비스
SQS 의 대기열은 총 두가지 종류가 있습니다.
① 표준 대기열
최대 처리량, 최선 노력 순서, 최소 1회 전달
② FIFO 대기열
메시지가 전송된 정확한 순서대로 정확히 한 번 전달
보통 메시지의 순서가 상관 없는 경우 표준 대기열을, 메시지의 순서가 중요한 경우 FIFO 대기열을 사용합니다.

① 생산자 는 메시지 A 를 대기열로 전송
: 해당 메시지는 Amazon SQS 서버에 중복 분산
② 소비자는 메시지를 처리할 준비가 되면 대기열에서 메시지를 소비하고 처리가 끝나면 Queue 로 ACK 를 전송한다. (ACK 는 보통 메시지 아이디)
: 소비자가 메시지를 처리할 동안 해당 메시지를 대기열에 그대로 남아 있고, 제한 시간 초과가 지속되는 동안은 후속 수신 요청으로 반환되지 않음.
③ ACK 를 받은 대기열은 해당 ACK 에 대한 메시지를 삭제한다.
: 제한 시간 초과가 되면 이 메시지가 다시 처리 되지 않도록 삭제함.
: 만일 제한 시간 내 삭제하지 못하는 경우 다시 처리될 수 있음
그러면 이론은 어느정도 배웠으니 실제로 AWS 에서 SNS 와 SQS 를 만들어보고 메시징 테스트까지 진행해보겠습니다. 🙂
SNS > 주제에서 주제 생성 버튼을 눌러줍니다.

기본적으로 유형과 이름을 지정해주면 됩니다. 유형은 FIFO, 표준 중 하나를 선택할 수 있는데 각 항목 별 설명은 아래를 참고해주세요.
| FIFO | 표준 |
|---|---|
| 엄격하게 보존된 메시지 순서 지정 정확히 1회 메시지 전송 높은 처리량, 초당 최대 300회 게시 구독 프로토콜: SQS ➡️ 메시지 순서 지정 및 중복 제거시 사용 SQS FIFO 인 경우에만 연결 가능 | 최선의 메시지 순서 지정 최소 1회 메시지 전송 가장 높은 처리량(초당 게시 횟수) 구독 프로토콜: SQS, Lambda, HTTP, SMS, 이메일, 모바일 애플리케이션 엔드포인트 ➡️ 메시지 전송 순서 및 가능한 메시지 중복이 중요하지 않은 경우 사용 엔드포인트로 여러개를 지정할 수 있어 보통 많이 사용함 |
저는 정확히 1회, 순서를 지켜서 메시지를 받을 필요가 없기 때문에 유형은 표준으로, 이름은 임의로 지어주도록 하겠습니다. sns와 sqs 가 통신하기 때문에 soyeon-sns-to-sqs-test 로 지어줬습니다.

SNS 구독 같은 경우는 엔드포인트를 지정해줘야 하기 때문에 SQS 를 먼저 생성해줍니다.
SQS 에선 DLQ (배달 못한 편지 대기열) 을 지정해줄 수 있기 때문에 Dead 를 먼저 생성해주겠습니다.

유형의 경우 선입선출 전송이 필요하지 않기 때문에 표준으로 생성해줍니다.
이름은 dead SQS 를 알아볼 수 있도록 뒤에 -dead 를 붙여줍니다.
Dead SQS 를 만들어줬으니 이젠 실제 사용할 SQS 를 만들어주겠습니다.

이름은 아까 dead SQS 에서 -dead 만 지워서 만들어줍니다.
그다음 액세스 정책을 설정해줘야 하는데 sns 로 부터 통신할 수 있도록 규칙을 지정해줍니다.

그리고 배달 못한 편지 대기열에 아까 생성한 dead queue 를 설정해줍니다.

이전에 만든 주제 를 선택해 아래에 있는 구독 생성 버튼을 클릭해줍니다.

구독 ARN은 이미 선택되어 있기 때문에 프로토콜을 Amazon SQS, 엔드포인트를 이전에 만든 SQS로 설정해줍니다.

다시 SNS 주제로 돌아와 오른쪽 상단에 있는 메시지 게시 버튼을 눌러줍니다.

테스트 용도이기 때문에 메시지 본문에 아무렇게나 값을 써주고

해당 SNS 에 연결되어 있는 SQS 를 보면 사용가능한 메시지가 1개 와 있는 걸 볼 수 있습니다.

⚠️ 사용 가능한 메시지가 없는 경우
대상이 되는 sqs 를 선택해 들어간 다음 오른쪽 상단에 있는 메시지 전송 및 수신 버튼을 클릭 하고
메시지 폴링 버튼을 누르면 메시지가 정상적으로 도착한 걸 확인할 수 있습니다.
Amazon Simple Notification Service
Simple Queue Service (SQS)
Amazon Simple Queue Service
AWS SQS (Simple Queue Service)