Amazon SNS 이벤트를 AWS Event Fork Pipelines에 팬아웃 - Amazon Simple Notification Service

Amazon SNS 이벤트를 AWS Event Fork Pipelines에 팬아웃

이벤트 아카이브 및 분석을 위해 Amazon SNS는 이제 Amazon Data Firehose와의 기본 통합 기능을 사용할 것을 권장합니다. Firehose 전송 스트림에서 SNS 주제를 구독하여 Amazon Simple Storage Service(Amazon S3) 버킷, Amazon Redshift 테이블, Amazon OpenSearch Service(OpenSearch Service) 등과 같은 아카이브 및 분석 엔드포인트에 알림을 보낼 수 있습니다. Firehose 전송 스트림과 함께 Amazon SNS를 사용하는 것은 AWS Lambda 함수를 사용할 필요가 없는 완전 관리형 및 코드 없는 솔루션입니다. 자세한 내용은 Firehose 전송 스트림으로 팬아웃 단원을 참조하세요.

Amazon SNS를 사용하여 게시자 서비스에 의해 트리거되는 이벤트에 응답하여 자동으로 작업을 수행하는 구독자 서비스를 사용하는 이벤트 기반 애플리케이션을 빌드할 수 있습니다. 이 아키텍처 패턴은 서비스에서 재사용성, 상호 작용성 및 확장성을 향상할 수 있습니다. 하지만 이벤트 저장, 백업, 검색, 분석, 다시 보기 등 일반적인 이벤트 처리 요구 사항을 해결하는 파이프라인으로 이벤트 처리를 분기하는 것은 공수가 많이 들어갈 수 있습니다.

이벤트 기반 애플리케이션 개발을 가속화하기 위해 AWS Event Fork Pipelines에 의해 제공되는 이벤트 처리 파이프라인에서 Amazon SNS 주제를 구독할 수 있습니다. AWS Event Fork Pipelines는 AWS Serverless Application Model(AWS SAM)을 기반으로 하는 오픈 소스 중첩 애플리케이션 제품군으로, AWS Event Fork Pipelines 제품군(사용자 지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시 선택)에서 AWS 계정으로 직접 배포할 수 있습니다.

AWS Event Fork Pipelines 사용 사례는 Amazon SNS Event Fork Pipelines 샘플 애플리케이션 배포 및 테스트에서 확인하세요.

AWS Event Fork Pipelines 작동 방식

AWS Event Fork Pipelines는 서버리스 설계 패턴입니다. 하지만 AWS SAM을 기반으로 하는 중첩 서버리스 애플리케이션의 모음이기도 합니다(이벤트 기반 플랫폼을 보강하기 위해 AWS Serverless Application Repository(AWS SAR)에서 직접 AWS 계정로 배포할 수 있음). 아키텍처에서 필요할 경우 이러한 중첩 애플리케이션을 개별적으로 배포할 수 있습니다.

다음 다이어그램은 3개의 중첩 애플리케이션에 의해 보완된 AWS Event Fork Pipelines 애플리케이션입니다. 아키텍처에서 필요할 경우 AWS SAR의 AWS Event Fork Pipelines 제푼군에 포함된 어떤 파이프라인도 개별적으로 배포할 수 있습니다.

Amazon SNS 주제의 이벤트가 이벤트 스토리지 및 백업, 이벤트 검색 및 분석, 이벤트 재생이라는 세 가지 파이프라인을 통해 필터링되고 처리되는 방법을 보여주는 AWS Event Fork Pipelines 아키텍처입니다. 이러한 파이프라인은 수직 스택 상자로 표시되며, 각각은 동일한 Amazon SNS 주제와 병렬로 이벤트를 독립적으로 처리합니다.

각 파이프라인은 동일한 Amazon SNS 주제를 구독하여 이러한 이벤트가 주제에 게시될 경우 동시에 이벤트를 처리할 수 있습니다. 각 파이프라인은 독립적이며 각각 구독 필터 정책을 설정할 수 있습니다. 그러므로 특정 파이프라인이 주제에 게시되는 모든 이벤트가 아니라 이벤트 하위 집합만 처리할 수 있습니다.

참고

정규 이벤트 처리 파이프라인(아마도 이미 Amazon SNS 주제를 구독)과 함께 3개의 AWS Event Fork Pipelines를 배치하므로 기존 워크로드에서 AWS Event Fork Pipelines를 활용하기 위해 현재 메시지 게시자의 어떤 부분도 변경할 필요가 없습니다.

이벤트 저장 및 백업 파이프라인

다음 다이어그램은 이벤트 저장 및 백업 파이프라인입니다. 이 파이프라인에서 Amazon SNS 주제를 구독하여 시스템을 통과하는 이벤트를 자동으로 백업할 수 있습니다.

이 파이프라인은 Amazon SNS 주제로부터 전달된 이벤트를 버퍼링하는 Amazon SQS 대기열, 대기열에서 이러한 이벤트를 자동으로 폴링하여 Amazon Data Firehose 스트림으로 푸시하는 AWS Lambda 함수, 스트림에 의해 로드된 이벤트를 내구적으로 백업하는 Amazon S3 버킷으로 구성됩니다.

Amazon SNS 주제에서 이벤트를 처리하고 백업하도록 설계된 Fork-Event-Storage-Backup-Pipeline입니다. 흐름은 이벤트가 Amazon SQS 대기열로 팬아웃되는 Amazon SNS Amazon SQS 주제로 시작됩니다. 그런 다음 이러한 필터링된 이벤트는 Lambda 함수에 의해 처리되어 Amazon Kinesis Data Firehose로 전달됩니다. Firehose 스트림은 이벤트를 Amazon S3 백업 버킷에 로드하기 전에 이벤트를 버퍼링, 변환 및 압축하는 역할을 합니다. 마지막으로 Amazon Athena를 사용하여 저장된 데이터를 쿼리할 수 있습니다. 이 다이어그램은 일련의 아이콘과 화살표를 사용하여 한 서비스에서 다음 서비스로의 흐름을 보여주며 파이프라인의 각 구성 요소에 명확하게 레이블을 지정합니다.

Firehose 스트림의 동작을 미세 조정하려면 버킷으로 로드하기 전에 이벤트를 버퍼링, 변환 및 압축하도록 구성할 수 있습니다. 이벤트가 로드될 때 Amazon Athena를 사용하여 표준 SQL 쿼리로 버킷을 쿼리할 수 있습니다. 또한 기존 Amazon S3 버킷을 재사용하거나 새 버킷을 생성하도록 파이프라인을 구성할 수 있습니다.

이벤트 검색 및 분석 파이프라인

다음 다이어그램은 이벤트 검색 및 분석 파이프라인입니다. 이 파이프라인에서 Amazon SNS 주제를 구독하여 검색 도메인에서 시스템을 통과하는 이벤트를 인덱싱한 후 이들 이벤트에 대해 분석을 실행할 수 있습니다.

이 파이프라인은 Amazon SNS 주제로부터 전달된 이벤트를 버퍼링하는 Amazon SQS 대기열, 대기열에서 이벤트를 폴링하여 Amazon Data Firehose 스트림으로 푸시하는 AWS Lambda 함수, Firehose 스트림에 의해 로드된 이벤트를 인덱싱하는 Amazon OpenSearch Service 도메인, 검색 도메인에서 인덱싱될 수 없는 배달 못한 편지를 저장하는 Amazon S3 버킷으로 구성됩니다.

AWS 아키텍처 내의 이벤트 검색 및 분석 파이프라인입니다. 모든 이벤트를 수신하는 Amazon SNS 주제와 함께 왼쪽에서 시작됩니다. 그런 다음 이러한 이벤트는 '필터링된 이벤트 팬아웃'을 나타내는 점선을 통해 Amazon SQS 대기열로 퍼널링됩니다. 대기열에서 이벤트는 Lambda 함수에 의해 처리된 다음 Amazon Kinesis Data Firehose 스트림으로 전달됩니다. Data Firehose는 이벤트를 두 대상으로 보냅니다. 한 경로는 인덱싱을 위해 Amazon Elasticsearch Service로 연결되고, 다른 경로는 처리할 수 없거나 “dead-letter” 이벤트를 Amazon S3 데드 레터 버킷으로 보냅니다. 맨 오른쪽에서 Elasticsearch Service의 출력은 분석 및 시각화를 위해 Kibana 대시보드로 공급됩니다. 전체 흐름은 수평으로 배치되며 각 구성 요소는 데이터 흐름 방향을 보여주는 줄로 연결됩니다.

이벤트 버퍼링, 변환 및 압축에서 Firehose 스트림을 미세 조정하기 위해 이 파이프라인을 구성할 수 있습니다.

또한 파이프라인이 AWS 계정의 기존 OpenSearch 도메인을 재사용할지 아니면 새 도메인을 생성할지를 구성할 수 있습니다. 검색 도메인에서 이벤트가 인덱싱될 때 Kibana를 사용하여 이벤트에 대한 분석을 실행하고 시각적 대시보드를 실시간으로 업데이트할 수 있습니다.

이벤트 다시 보기 파이프라인

다음 다이어그램은 이벤트 다시 보기 파이프라인입니다. 시스템에서 지난 14일간 처리한 이벤트를 기록하려면 이 파이프라인에서 Amazon SNS 주제를 구독한 후 이벤트를 다시 처리할 수 있습니다(예를 들어 플랫폼이 장애로부터 복구해야 할 경우).

이 파이프라인은 Amazon SNS 주제로부터 전달된 이벤트를 버퍼링하는 Amazon SQS 대기열과 대기열에서 이벤트를 폴링하여 같은 주제를 구독하는 정규 이벤트 처리 파이프라인으로 리드라이브하는 AWS Lambda 함수로 구성됩니다.

순서도 형식의 이벤트 재생 파이프라인입니다. 왼쪽에서 오른쪽으로, 필터링된 이벤트를 두 개의 병렬 프로세스에 배포하는 Amazon SNS 주제로 시작합니다. 상위 흐름은 이벤트를 처리하는 Amazon SQS 대기열을 포함하는 정규 이벤트 처리 파이프라인을 나타냅니다. 'fork-event-replay-pipeline'으로 레이블이 지정된 하위 흐름에는 Lambda 재생 함수에 의해 처리되기 전에 이벤트가 일시적으로 저장되는 Amazon SQS 재생 대기열이 포함됩니다. 이 Lambda 함수는 재생 기능이 활성화 또는 비활성화되었는지 여부에 따라 이벤트를 일반 이벤트 처리 파이프라인으로 재구동하거나 재생을 위해 이벤트를 보류할 수 있는 기능이 있습니다. 또한 다이어그램은 연산자가 이벤트 재생 기능을 활성화하거나 비활성화할 수 있는 제어 권한이 있음을 나타냅니다.
참고

기본적으로 다시 보기 함수는 비활성화되어 이벤트를 리드라이브하지 않습니다. 이벤트를 다시 처리해야 할 경우 AWS Lambda 다시 보기 함수용 이벤트 소스로 Amazon SQS 다시 보기 대기열을 활성화해야 합니다.

AWS Event Fork Pipelines 배포

AWS Event Fork Pipelines 제품군(S사용자 지정 IAM 역할 또는 리소스 정책을 생성하는 앱 표시를 선택)은 AWS Serverless Application Repository에서 퍼블릭 애플리케이션 그룹으로 사용할 수 있으며, 여기에서 AWS Lambda 콘솔을 사용하여 수동으로 배포 및 테스트할 수 있습니다. AWS Lambda 콘솔을 사용하여 파이프라인을 배포하는 자세한 내용은 AWS Event Fork Pipelines에서 Amazon SNS 주제 구독에서 확인하세요.

프로덕션 시나리오에서는 전체 애플리케이션의 AWS SAM 템플릿에 AWS Event Fork Pipelines를 포함하는 것이 좋습니다. 중첩 애플리케이션 기능을 사용하면 리소스 AWS::Serverless::Application을 AWS SAM 템플릿에 추가하고 중첩 애플리케이션의 AWS SAR ApplicationIdSemanticVersion을 참조하여 이렇게 할 수 있습니다.

예를 들어 다음 YAML 코드 조각을 AWS SAM 템플릿의 Resources 섹션에 추가하여 이벤트 저장 및 백업 파이프라인을 중첩 애플리케이션으로 사용할 수 있습니다.

Backup: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-2:123456789012:applications/fork-event-storage-backup-pipeline SemanticVersion: 1.0.0 Parameters: #The ARN of the Amazon SNS topic whose messages should be backed up to the Amazon S3 bucket. TopicArn: !Ref MySNSTopic

파라미터 값을 지정할 때 AWS CloudFormation 내장 함수를 사용하여 템플릿의 다른 리소스를 참조할 수 있습니다. 예를 들어, 위 YAML 코드 조각에서 TopicArn 파라미터는 AWS SAM 템플릿의 다른 위치에서 정의된 AWS::SNS::Topic 리소스 MySNSTopic을 참조합니다. 자세한 정보는 AWS CloudFormation 사용 설명서내장 함수 참조를 확인하세요.

참고

AWS SAR 애플리케이션의 AWS Lambda 콘솔 페이지에는 Copy as SAM Resource(SAM 리소스로 복사) 버튼이 포함되어 있습니다. 이 버튼은 AWS SAR 앱을 클립보드로 중첩하는 데 필요한 YAML을 복사합니다.