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 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 주제를 구독하여 이러한 이벤트가 주제에 게시될 경우 동시에 이벤트를 처리할 수 있습니다. 각 파이프라인은 독립적이며 각각 구독 필터 정책을 설정할 수 있습니다. 그러므로 특정 파이프라인이 주제에 게시되는 모든 이벤트가 아니라 이벤트 하위 집합만 처리할 수 있습니다.
참고
정규 이벤트 처리 파이프라인(아마도 이미 Amazon SNS 주제를 구독)과 함께 3개의 AWS Event Fork Pipelines를 배치하므로 기존 워크로드에서 AWS Event Fork Pipelines를 활용하기 위해 현재 메시지 게시자의 어떤 부분도 변경할 필요가 없습니다.
이벤트 저장 및 백업 파이프라인
다음 다이어그램은 이벤트 저장 및 백업 파이프라인
이 파이프라인은 Amazon SNS 주제로부터 전달된 이벤트를 버퍼링하는 Amazon SQS 대기열, 대기열에서 이러한 이벤트를 자동으로 폴링하여 Amazon Data Firehose 스트림으로 푸시하는 AWS Lambda 함수, 스트림에 의해 로드된 이벤트를 내구적으로 백업하는 Amazon S3 버킷으로 구성됩니다.
Firehose 스트림의 동작을 미세 조정하려면 버킷으로 로드하기 전에 이벤트를 버퍼링, 변환 및 압축하도록 구성할 수 있습니다. 이벤트가 로드될 때 Amazon Athena를 사용하여 표준 SQL 쿼리로 버킷을 쿼리할 수 있습니다. 또한 기존 Amazon S3 버킷을 재사용하거나 새 버킷을 생성하도록 파이프라인을 구성할 수 있습니다.
이벤트 검색 및 분석 파이프라인
다음 다이어그램은 이벤트 검색 및 분석 파이프라인
이 파이프라인은 Amazon SNS 주제로부터 전달된 이벤트를 버퍼링하는 Amazon SQS 대기열, 대기열에서 이벤트를 폴링하여 Amazon Data Firehose 스트림으로 푸시하는 AWS Lambda 함수, Firehose 스트림에 의해 로드된 이벤트를 인덱싱하는 Amazon OpenSearch Service 도메인, 검색 도메인에서 인덱싱될 수 없는 배달 못한 편지를 저장하는 Amazon S3 버킷으로 구성됩니다.
이벤트 버퍼링, 변환 및 압축에서 Firehose 스트림을 미세 조정하기 위해 이 파이프라인을 구성할 수 있습니다.
또한 파이프라인이 AWS 계정의 기존 OpenSearch 도메인을 재사용할지 아니면 새 도메인을 생성할지를 구성할 수 있습니다. 검색 도메인에서 이벤트가 인덱싱될 때 Kibana를 사용하여 이벤트에 대한 분석을 실행하고 시각적 대시보드를 실시간으로 업데이트할 수 있습니다.
이벤트 다시 보기 파이프라인
다음 다이어그램은 이벤트 다시 보기 파이프라인
이 파이프라인은 Amazon SNS 주제로부터 전달된 이벤트를 버퍼링하는 Amazon SQS 대기열과 대기열에서 이벤트를 폴링하여 같은 주제를 구독하는 정규 이벤트 처리 파이프라인으로 리드라이브하는 AWS Lambda 함수로 구성됩니다.
참고
기본적으로 다시 보기 함수는 비활성화되어 이벤트를 리드라이브하지 않습니다. 이벤트를 다시 처리해야 할 경우 AWS Lambda 다시 보기 함수용 이벤트 소스로 Amazon SQS 다시 보기 대기열을 활성화해야 합니다.
AWS Event Fork Pipelines 배포
AWS Event Fork Pipelines 제품군
프로덕션 시나리오에서는 전체 애플리케이션의 AWS SAM 템플릿에 AWS Event Fork Pipelines를 포함하는 것이 좋습니다. 중첩 애플리케이션 기능을 사용하면 리소스 AWS::Serverless::Application
을 AWS SAM 템플릿에 추가하고 중첩 애플리케이션의 AWS SAR ApplicationId
및 SemanticVersion
을 참조하여 이렇게 할 수 있습니다.
예를 들어 다음 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을 복사합니다.