SNS
SNS는 클라우드에서 손쉽게 알림을 설정, 운영 및 전송할 수 있는 웹 서비스입니다. 이 서비스는 게시-구독(pub-sub) 메시징 패러다임을 따르며 푸시 메커니즘을 사용하여 클라이언트에 알림을 전달합니다.
사용자는 주제를 생성하고 어떤 게시자 및 구독자가 주제와 통신할 수 있는지를 결정하는 정책을 정의함으로써 주제에 대한 액세스를 제어합니다. 게시자는 자신이 생성한 주제 또는 게시할 권한이 있는 주제로 메시지를 보냅니다.
게시자는 각 메시지에 특정 대상 주소를 포함하는 대신 메시지를 해당 주제로 전송할 수 있습니다. SNS는 주제와 해당 주제의 구독자 목록을 일치시켜 각 구독자에게 메시지를 정송합니다.
각 주제에는 SNS 엔드포인트를 식별하는 고유한 일므이 있으므로, 게시자는 메시지를 게시하고 구독자는 알림을 받도록 등록할 수 있습니다. 구독자가 구독하는 주제에 게시된 모든 메시지를 수신합니다. 특정 주제의 모든 구독자는 동일한 메시지를 수신합니다.
SNS는 암호화된 주제를 지원합니다. 암호화된 주제에 메시지를 게시하면 SNS는 AWS Key Management Service(AWS KMS)키를 사용하여 메시지를 암호화합니다.
SNS 알림을 사용하는 예시는 다음과 같습니다.
- Auto Scaling 그룹에 특정 변경 사항이 발생하는 등의 이벤트가 있을 경우, 사용자는 즉시 알림을 받을 수 있습니다.
- 구독자에게 이메일 또는 SMS로 특정 뉴스 헤드라인을 푸시할 수 있습니다. 수신한 이메일 또는 SMS 문자에 흥미를 느낀 사람은 자세한 내용을 확인하기 위해 웹사이트를 방문하거나 애플리케이션을 시작할 수 있습니다.
- 업데이트가 가능함을 나타내는 알림을 앱으로 전송할 수 있습니다. 알림 메시지는 업데이트를 다운로드 및 설치하기 위한 링크를 포함할 수 있습니다.
SNS의 특성
모든 알림 메시지에는 게시 메시지가 하나만 포함됩니다. SNS는 게시자가 주제에 게시한 메시지를 그 순서 그대로 전송하려고 시도합니다. 하지만 네트워크 문제로 인해 구독자에게 순서가 바뀌어 전송될 가능성도 없진 않습니다. 엄격한 메시지 순서 및 하나 이상의 구독자에게 중복 제거된 메시지 전달이 필요한 경우 SNS FIFO 주제를 사용합니다.
SNS의 특징은 다음과 같습니다.
- 메시지가 성공적으로 전송되면, 이를 회수할 방법은 없습니다.
- SNS 전송 정책을 사용해 재시도 패턴(선형, 기하학, 지수 백오프, 최대/최소 재시도 지연 및 기타 패턴)을 제어할 수 있습니다.
- 메시지가 손실되지 않도록 모든 메시지는 여러 서버와 데이터 센터에 걸쳐 중복 저장됩니다.
- SNS는 가장 크고 수요가 가장 많은 애플리케이션의 요구 사항에 부합하도록 설계되어, 어플리케이션이 무제한의 메시지를 게시할 수 있습니다.
- SNS를 사용하면 다양한 디바이스의 애플리케이션 및 최종 사용자가 모바일 푸시 알림에 의해 알림을 수신할 수 있습니다. 여기에는 Apple, Google, 및 Kindle Fire 디바이스, HTTP 또는 HTTPS, 이메일 또는 이메일-JSON, 는 또는 SQS 대기열, 그리고 Lambda 함수가 포함됩니다.
- SNS는 액세스 제어 메커니즘을 갖추고 있어 주제와 메시지가 무단 액세스로부터 확실하게 보호됩니다. 주제와 메시지가 무단 액세스로부터 확실하게 보호됩니다. 주제의 소유자가 주제 별로 일정한 정책을 수립해 주제를 게시하거나 구독할 수 있는 대상을 제한할 수 있습니다. 주제 소유자는 전송 메커니즘을 HTTPS로 지정하여 알림을 암호화할 수도 있습니다.
여러 SQS 대기열에 SNS 게시
SNS와 같은 고가용성 서비스를 사용하여 기본 메시지 라우팅을 수행하는 것은 메시지를 마이크로서비스로 배포하는 효과적인 방법입니다. 마이크로서비스의 두 가지 주요 통신 형태는 요청-읍답과 관찰자입니다.
위 예시에는 SNS 및 SQS를 사용하는 팬아웃 시나리오가 나와 있습니다. 팬아웃 시나리오에서는 메시지가 SNS 주제로 전송된 후 복제되어 여러 SNS 대기열, HTTP 엔드포인트 또는 이메일 주소로 푸시됩니다. 따라서 비동기식 병렬 처리가 허용됩니다.
여기서 SNS는 서로 다른 두 SQS 대기열로 주문을 팬아웃합니다. 2개 EC2 인스턴스가 각각 대기열을 관찰합니다. 두 인스턴스 중 하나는 주문 처리 과정을 진행하고, 다른 하나는 데이터 웨어하우스에 연결되어 접수되는 모든 주문을 분석합니다.
SNS 알림을 SQS 대기열로 전송하려는 경우 주제를 구독하고 SQS를 전송 프로토콜로, 유효한 SQS 대기열을 엔드포인트로 지정합니다. SQS 대기열에 SNS의 알림을 수신하도록 하려면, SQS 대기열 소유자는 SNS의 주제에 해당 SQS 대기열을 구독해야 합니다. 사용자가 구독 대상인 SNS 주제와 알림을 수신하는 SQS 대기열을 소유하고 있다면 추가로 필요한 작업은 없습니다. 주제에 게시되는 모든 메시지는 지정된 SQS 대기열로 자동 전송됩니다. 사용자가 SQS 대기열은 소유하고 있지만 주제 소유자는 아닌 경우 SNS는 구독 요청에 대한 명시적인 확인을 요구합니다.
SNS 및 SQS
SNS 메시지는 영구적이지 않습니다. SNS에서는 각 전송 프로토콜에 대한 전송 정책을 정의합니다. 전송 정책은 서버 측 오류 발생 시 SNS에서 메시지 전송을 재시도하는 방법을 정의합니다. 정송 정책이 다사용되면 SNS에서 전송 재시도를 중지하고 메시지를 폐기합니다. 예외의 경우는 DLQ(Dead Letter Queue)가 구독에 연결되어 있는 경우입니다.
SNS를 사용하면 애플리케이션에서 푸시 메커니즘을 통해 타임 크리티컬 메시지를 여러 구독자에게 전송할 수 있습니다.
SQS는 폴링 모델을 통해 메시지를 교환합니다. 즉, 전송 및 수신 구성 요소가 분리됩니다. 또한, 애플리케이션의 분산 구성 요소를 위한 유연성을 제공하므로 각 구성 요소를 동시에 사용하지 않고도 메시지를 송신 및 수신할 수 있습니다.
'자격증 > AWS SAA' 카테고리의 다른 글
[AWS SAA] 52. Step Functions (0) | 2023.09.11 |
---|---|
[AWS SAA] 51. Kinesis (0) | 2023.09.11 |
[AWS SAA] 49. SQS (0) | 2023.09.10 |
[AWS SAA] 48. 서비리스 (0) | 2023.09.09 |
[AWS SAA] 47. Transit Gateway (0) | 2023.09.08 |