BLOG

Amazon SNS의 숫자 매칭, 접두사 매칭과 블랙리스팅을 위한 메시지 필터링 연산자 기능
작성일: 2018-03-27

메시지 필터링은 구독자의 메시지 필터링 로직뿐만 아니라 게시자의 메시지 라우팅 로직을 없애면서 전체적인 게시/구독 메시징 아키텍처를 단순화합니다. 메시지 필터링의 초기 시작은 정확한 문자열 비교에 기반한 기본 연산자 기능을 제공합니다. 자세한 내용은 Simplify Your Pub/Sub Messaging with Amazon SNS Message Filtering 을 참고하세요.

AWS는 게시/구독 메시징 사용 사례에 더욱 강력한 기능과 유연성을 제공하는 추가 필터링 운영자 세트를 발표하였습니다.

 

메시지 필터링 연산자
Amazon SNS는 이제 숫자와 문자열이 일치하는 것을 모두 지원합니다. 특히, 문자열 매칭 연산자는 정확한 접두사와 “anything-but” 비교를 허용하는 반면, 숫자 매칭 연산자는 아래에 설명된 대로 정확한 범위 비교를 허용합니다. 숫자 일치 연산자는 소수 점의 오른쪽 5자리의 정확도를 포함하여-10e9와 +10e9 사이의 값에 적용됩니다.

 

  • 문자열 값의 정확한 매칭(Whitelisting): 구독 필터 정책  “sport”: [“rugby”]}는 메시지 속성 {“sport”: “rugby”}만 부합합니다.
  • 문자열 값에 대한Anything-but 매칭 (Blacklisting): 구독 필터 정책 {“sport”: [{“anything-but”: “rugby”}]}는 {“sport”: “baseball”} and {“sport”: “basketball”} and {“sport”: “football”} 에 부합하지만 {“sport”: “rugby”} 는 부합하지 않습니다.
  • 문자열 값에 대한 prefix 매칭: 구독 필터 정책 {“sport”: [{“prefix”: “bas”}]}는 {“sport”: “baseball”}and {“sport”: “basketball”}만 부합합니다.
  • 숫자 값에대한 정확한 매칭: 구독 필터 정책 {“balance”: [{“numeric”: [“=”, 301.5]}]}는 {“balance”: 301.500}and {“balance”: 3.015e2}에 부합합니다.
  • 숫자값에 대한 범위 매칭: 구독 필터 정책 {“balance”: [{“numeric”: [“<“, 0]}]}는 음수만 매칭되고 {“balance”: [{“numeric”: [“>”, 0, “<=”, 150]}]}는 150까지 양수 에 부합합니다.

 

평소와 마찬가지로 구독 필터 정책에 여러 키를 연결하여 “AND” 로직을 적용할 수 있으며, 동일한 키에 여러 값을 추가하는 “OR” 로직을 다음과 같이 적용할 수 있습니다.

 

  • And 로직: 구독 필터 정책 {“sport”: [“rugby”], “language”: [“English”]}는 {“sport”: “rugby”}and {“language”: “English”}를 모두 수반하는 메시지에만 부합됩니다.
  • Or 로직: 구독 필터 정책 {“sport”: [“rugby”, “football”]} 는 “sport”: “rugby”}or {“sport”: “football”} 둘 중 한가지를 수반하는 메시지와 매칭됩니다.

 

작업 중인 메시지 필터링 연산자
이 새로운 필터링 연산자 세트는 다음과 같습니다. 다음의 예는 아시아태평양 및 유럽에 위치한 리서치 회사와 함께 여러가지 처방 약을 개발, 생산 마케팅하는 제약회사에 기반한 것입니다. 회사는 내부 구매 시스템을 셋업하여 실험실 관련 물품과 회사물품과 기술적 물품들의 구매를 관리합니다.

이 분산 시스템은 다음과 같은 4개의 하위 시스템으로 구성되어 있습니다.

 

  • 공급 업체 제품의 카탈로그를 제공하고 구매자의 주문을 접수하는 요청서 시스템
  • 아시아 태평양 지역 연구소를 대상으로 한 주문 승인 시스템
  • 유럽 연구소를 대상으로 하는 주문에 대한 또 다른 승인 시스템
  • 배송 파트너와 통합되는 이행 시스템

 

다음 다이어그램에 표시된 바와 같이, 본 업체는 AWS 메시징 서비스를 활용하여 이러한 분산 시스템을 통합하고 있습니다.

 

  • 첫째, 구매자들이 요청 시스템에 올려 놓은 모든 주문을 받기 위해 “주문”이라는 SNS 주제가 만들어 짐.
  • 둘째로, 두개의 AmazonSQS 대기 열,”Lab-Orders-AP” 및 “Lab-Orders-EU”(아시아 태평양 및 유럽)는 검토를 위해 제출된 승인 대기 시스템에 백로그하기 위해 제작되었음
  • 마지막으로, SQS 대기 열인 “공통 주문”이 이미 실험 용품과 관련이 없는 밀린 주문으로 만들어졌으며 이행 시스템에 대한 파트너 배송으로 이를 픽업할 수 있음.

 

또한 AWS Lambda 기능을 사용하여 승인이 필요하지 않거나 잘못된 랩 물품 주문을 자동으로 처리합니다.

 

 

이 예에서는 여러 종류의 주문이 SNS 항목에 게시되었기 때문에, 구독하는 endpoint 는 SNS구독에 고급 필터 정책을 설정해야 SNS가 처리할 수 없는 주문을 자동적으로 필터링 합니다.

위의 다이어그램에 설명된 것처럼 다음과 같은 5개의 필터 정책이 생성되었습니다.

 

  • SQS대기열” Lab-Orders-AP “를 가리키는 SNS구독은 총 가치가 1,000달러가 넘고 아시아 태평양 지역에서만 대상이 되는 실험실 물품 주문과 일치하는 필터 정책을 설정합니다. 이처럼 고가의 거래를 하려면 구매자가 발주한 주문을 검토할 승인자가 필요로 한다.
  • SQS대기열” Lab-Orders-EU” 를 가리키는 SNS구독은 실험실 물품 주문과 일치하는 필터 정책을 설정하며, 동시에 총 가치가 1,000달러 이상이지만 대상 유럽 연구소를 대상으로 한다.
  • Lambda 기능을 가리키는 SNS구독은 ” Lab-Preapproved “목표 위치에 관계 없이 실험실 물품 주문에 맞게 최대 1,000달러까지 너무 높지 않은 가격으로 제공하는 필터 정책을 설정. 이러한 주문은 승인이 필요 없으며 자동으로 처리될 수 있다.
  • Lambda 기능을 가리키는 SNS구독은 ” Lab-Cancelled”가 목표한 실험실 위치에 관계 없이 실험실 물품 주문과 총 0달러로만 일치하는 필터 정책을 설정. 이러한 주문서에는 승인이나 이행이 필요하지 않으며, 따라서 자동으로 취소할 수 있다.
  • SQS대기 열” Common-Orders”을 가리키는 SNS구독을 통해 실험실 물품 주문을 블랙리스트에 올리는 필터 정책이 설정된다. 따라서 이 정책은 보다 효율적인 이행 프로세스를 갖고 있으며 가격이나 목표 위치에 관계 없이 승인이 필요하지 않는 사무실 및 기술적 물품 주문에만 적합함.

 

이 회사는 진보된 게시/구독 아키텍처를 구축한 후에 내부 조달 시스템을 시작할 수 있었고, 구매자들이 주문을 할 수 있게 지원 가능하였습니다. 위의 다이어그램은 SNS에 게시된 6가지 주문의 예를 보여 줍니다. 각 주문에는 다음과 같이 순서를 설명하고 이를 다른 방식으로 필터링 하게 하는 메시지 속성이 포함됩니다.

 

  • 메시지#1은 총 가치가 15,700달러에 달하는 실험실 용품 주문으로 싱가포르에 있는 연구소를 목표로 하고 있습니다. 값이 1,000달러 이상이고”아시아 태평양-태평양-남동쪽” 위치가 “아시아 태평양 지역”접두사와 일치하기 때문에, 이 메시지는 처음 SNS가입과 일치하며 “Lab-Orders-AP” SQS 대기 열에 전달됩니다
  • 메시지#2는 총 가치가 1,833달러에 달하고 아일랜드의 한 연구소를 목표로 하는 실험실 용품 주문입니다. 값이$1,000이상이고” “Europe-West “위치가 ” Europe- “접두사와 일치하기 때문에, 이 메시지는 두 번째 SNS구독과 일치하고 SQS 대기열” Lab-Orders-EU”에 제공됩니다.
  • 메시지#3번은 실험실 용품 주문이며, 총 가격은 $ 415달러입니다. 값이 0달러보다 크고 1,000달러보다 작기 때문에, 이 메시지는 세 번째 SNS가입과 일치하고”Lab-Preapproved” Lambda 기능에 전달됩니다.
  • 메시지#4는 실험실 용품 주문이지만, 총 가격이 0달러입니다. 따라서 4번째 SNS가입에 한해 일치하며, Lambda 기능”Lab-Cancelled”에 제공됩니다.
  • 메시지 #5과 #6은 실제로 실험실 용품 주문이 아닙니다. 하나는 사무 용품 주문이고, 다른 하나는 기술적 용품 주문입니다. 따라서 이들은 5번째 SNS구독에 한정되어 있으며, 두 서비스 모두 SQS대기열 “Common-Orders”에 전달됩니다.

 

각 메시지는 하나의 구독에만 일치했지만, 항목에 포함된 모든 구독의 필터 정책에 대해 해당 메시지와 테스트했습니다. 따라서 들어오는 메시지에 설정된 속성에 따라 실제로 메시지가 여러 구독과 일치할 수 있으며 여러 전송이 수행됩니다. 또한 필터 정책이 없는 구독은 항목에 게시된 모든 메시지를 캐치한다는 점을 인지해야 합니다. 빈칸 필터 정책은 catch-all 동작과 같기 때문입니다.

 

요약
Amazon SNS는 문자열과 숫자 필터링 연산자를 모두 지원합니다. 이 포스트에 설명된 대로, 문자열 연산자는 정확하고 접두사이며 ” anything-but “을 비교할 수 있는 반면, 숫자 연산자는 정확하고 범위를 비교할 수 있습니다. 이러한 고급 필터링 연산자는 게시/구독 메시징 기능에 더 많은 기능과 유연성을 제공하며, 구독자의 논리를 더욱 많이 제거하여 아키텍처를 더 단순화할 수 있도록 합니다.

 

메시지 필터링은 모든 SNS지원 프로토콜(AmazonSQS, AWSLambda, HTTP, SMS, 이메일 및 모바일 푸시)에 메시지 및 구독 특성을 적용하여 기존 AWS SDK에서 쉽게 구현할 수 있습니다. 숫자 매칭, 접두사 매칭 및 블랙 리스트 지정을 위한 SNS 필터링 연산자를 이제 모든 AWS영역에서 추가 요금 없이 사용할 수 있습니다.

 

이러한 새 필터링 연산자를 직접 테스트하고 학습을 계속하려면 10분 분량의 자습서 항목에 게시된 메시지를 필터링 하시길 바랍니다. 자세한 내용은 SNS자료에서 Filtering Messages with Amazon SNS 를 참고하세요.

 

원문 URL: https://aws.amazon.com/ko/blogs/compute/message-filtering-operators-for-numeric-matching-prefix-matching-and-blacklisting-in-amazon-sns/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달