Î Ð È ÈÄ Ï Ê ÉÇ Ä É À... · amazon eventbridge vs. sns 항목 amazon eventbridge amazon...
TRANSCRIPT
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
이벤트드리븐아키텍처구축을위한적절한어플리케이션통합서비스선택및사용방법김성진
솔루션즈 아키텍트
AWS Korea
Agenda
이벤트 드리븐 아키텍처
어플리케이션 통합 서비스
어플리케이션 통합 방법
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
동기적처리
동기적처리
🔥
동기적처리
🔥🔥
동기적처리
🔥
🔥
🔥
🔥
동기적처리
동기적처리
이벤트기반처리
이벤트기반처리
이벤트기반처리
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
‘이벤트’ 란?
🚴?🐟?
💥?
💈?🏠?
🍗?
📣?
🚙?
🔑?
🎂?
✉?
‘이벤트’ 란?
이벤트는 ‘명령’이 아닌 ‘관찰’ 을 의미
직접 명령 관찰
‘이벤트’ 란?
• 발생한 사건을 표현하는 메시지 형식
• 중요한 정보, 이벤트 자체에 충분한 정보를 포함.
• 불변—과거의 메시지를 변경할 수 없음을 보장
• 과거 시제의 동사로 표현됨. 예, “새로운 주문이 생성되었다”
• 이벤트 생성 시스템은 이벤트가 어떻게 처리되는지 관여하지 않음.
작은 단위의 AWS 이벤트
{
"version": "0",
"id": "5af0d99b-0841-2766-e5d5-06a865895fdf",
"detail-type": "Support Ticket: Status Changed",
"source": "aws.partner/zendesk.com/9242270/default",
"time": "2019-05-25T01:23:45Z",
"region": "us-east-1",
"resources": [ ],
"detail": {
"ticket_event": {
"type": "Status Changed",
"previous": "open",
"current": "solved",
"ticket": {
"id": 35436,
"created_at": "2019-05-20T22:55:29Z",
"updated_at": “2019-05-25T01:23:45Z",
. . .
좀 더 큰 AWS 이벤트
{
"specversion" : "1.0",
"type" : "com.example.someevent",
"source" : "/mycontext",
"id" : "C234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"appinfoA" : "abc",
"appinfoB" : 123,
"appinfoC" : true
}
}
Event 형식의 표준화 시도 - CloudEvent
Event 형식 – Blob vs. Structured objects
(Also Avro, Thrift, Parquet, Cap’n Proto, Ion, etc.)
{
"name": "John Doe",
"id": 1234,
"email": "[email protected]"
}
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
이벤트 드리븐 구조가 적합?1. 트랜잭션 정보가 포함된 이벤트를 전달하고 있습니까?
“0973482 계정이 ID가238479r8732인 전기밥솥을구매함. $131.32, Visa
승인번호 341513, 프라임배송, 밴쿠버 조지아st 510W로전달.
이벤트 드리븐 구조가 적합?1. 트랜잭션 정보가 포함된 이벤트를 전달하고 있습니까?
2. 추가 비용 없이 적용 가능한 유용한 정보입니까?
이벤트 드리븐 구조가 적합?1. 트랜잭션 정보가 포함된 이벤트를 전달하고 있습니까?
2. 추가 비용 없이 적용 가능한 유용한 정보입니까?
3. 강력하게 분리된 마이크로 서비스를 위해 필요한가요?
이벤트 드리븐 구조가 적합?1. 트랜잭션 정보가 포함된 이벤트를 전달하고 있습니까?
2. 추가 비용 없이 적용 가능한 유용한 정보입니까?
3. 강력하게 분리된 마이크로 서비스를 위해 필요한가요?
4. Pub Sub 구조가 필요한가요?
Photo: Terje Skjerdal
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Pub/Sub을 지원하는 AWS 서비스
Amazon Simple
Notification Service
(Amazon SNS)
서버리스 Pub/Sub
Amazon MQ
관리형 메시지브로커
Amazon Kinesis
Data Streams
Amazon Managed
Streaming for Kafka
데이터 스트리밍
Amazon EventBridge
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Amazon EventBridge
SaaS 업체와의 기본 통합
17 타겟 서비스
이벤트 드리븐 아키텍처를 손쉽게 빌드
완전 관리형, 사용한 만큼 지불
Amazon
EventBridge
Amazon EventBridge
Amazon EventBridge 이벤트 버스
Rule 1
Rule 2
Rule 3
타겟이벤트 소스
Amazon EventBridge
이벤트 소스 타겟Amazon EventBridge 이벤트 버스
Rule 1
Rule 2
Rule 3
Amazon EventBridge – 이벤트룰
{
"version” : "0",
"id” : "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
"detail-type” : "EC2 Instance State-change Notification",
"source” : "aws.ec2",
"account” : "111122223333",
"time” : "2017-12-22T18:43:48Z",
"region” : "us-west-1",
"resources” : [
"arn:aws:ec2:us-west-1:123456789012:instance/
i-7890abcdef0"
],
"detail” : {
"instance-id": " i-1234567890abcdef0",
"state": "terminated"
}
}복수일치
접두어일치
{ "region": [ { "prefix": "eu-" } ], }
산술비교{
"detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] }
}
존재유무확인
{ "detail": { "description": [ { "exists": true } ], }
제외{
"detail": { "state": [ { "anything-but": [ "stopped" ] } ]
}
}
일치한이벤트
이벤트일부
Constant (JSON text)
입력변경
이벤트 필터 커스터마이징
Amazon EventBridge – 이벤트룰
{
"version” : "0",
"id” : "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
"detail-type” : "EC2 Instance State-change Notification",
"source” : "aws.ec2",
"account” : "111122223333",
"time” : "2017-12-22T18:43:48Z",
"region” : "us-west-1",
"resources” : [
"arn:aws:ec2:us-west-1:123456789012:instance/
i-7890abcdef0"
],
"detail” : {
"instance-id": " i-1234567890abcdef0",
"state": "terminated"
}
}
페이로드
{ "region": [ { "prefix": "eu-" } ], }
{
"detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] }
}
{ "detail": { "description": [ { "exists": true } ], }
{
"detail": { "state": [ { "anything-but": [ "stopped" ] } ]
}
}
일치한이벤트
이벤트일부
Constant (JSON text)
입력변경
복수일치
접두어일치
산술비교
존재유무확인
제외
메타데이터
이벤트 필터 커스터마이징
Amazon EventBridge vs. SNS
항 목 Amazon EventBridge Amazon SNS
소 스90 개 이상의 AWS 서비스21 SaaS 어플리케이션커스텀 어플리케이션
30 AWS 서비스
커스텀 어플리케이션
타 겟 17 AWS 서비스 2 AWS 서비스 + 4 웹 & 모바일 엔드포인트
확 장 룰 당 5개 타겟 토픽 당 백만 이상의 구독을 지원
필터링 모든 이벤트 본문을 룰로 적용 가능 메시지 속성만 사용 가능
지연 시간 중간값 560ms 중간값 25ms
요 금
AWS 이벤트 소스는 무료AWS 타겟 전달은 무료백만 커스텀 또는 SaaS 이벤트 백만 건당
$1.00
AWS 서비스(SQS, Lambda) 전달은 무료
토픽별 백만건 당 $0.50
모바일 푸시 백만 건당 $0.50, HTTP/S 백만 건당$0.60
이메일 십만 건당 $2, SMS은 지역마다 다름
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
메시지채널
지점간 (큐) 게시자-구독자 (토픽)
메시지채널
지점간 (큐) 게시자-구독자 (토픽)
단일 수신자가 메시지 수신
확장에 용이
최대 트래픽 제한에 용이
수신자
송신자
큐
메시지채널
지점간 (큐) 게시자-구독자 (토픽)
다중 구독자가 수신
내구성 있는 구독자 구성
구독자
게시자
토픽
단일 수신자가 메시지 수신
확장에 용이
최대 트래픽 제한에 용이
수신자
송신자
큐
메시지채널
지점간 (큐) 게시자-구독자 (토픽)
큐 기능의 AWS 서비스:
Amazon Simple Queue Services (SQS)
서버리스 & 클라우드 네이티브
토픽 기능의 AWS 서비스:
Amazon Simple Notification Service (Amazon SNS)
Amazon EventBridge
서버리스 & 클라우드 네이티브
수신자
송신자
구독자
게시자
Amazon SQS Amazon SNS
메시지채널
지점간 (큐) 게시자-구독자 (토픽)
큐 기능의 AWS 서비스(비 서버리스):
Amazon MQ (managed Apache Active MQ)
JMS, AMQP 등의 프로토콜을 사용하는 앱에 사용
토픽 기능의 AWS 서비스(비 서버리스):
Amazon MQ (managed Apache Active MQ)
JMS, AMQP 등의 프로토콜을 사용하는 앱에 사용
수신자
송신자
구독자
게시자
Amazon MQ Amazon MQ
메시지채널
토픽-큐-연결
메시지채널
토픽-큐-연결
게시자
토픽
메시지채널
토픽-큐-연결
게시자
토픽
큐
큐
메시지채널
토픽-큐-연결
팬-아웃 형태의 구성
메시지 처리를 위한 버퍼 역할
확장 가능한 수신자 구성
수신자
어플리케이션 1
어플리케이션 2
게시자
토픽
큐
큐
메시지채널
메시지 전달 QoS
적어도 한번
최대 한번
정확히 한번
큐
수신자발신자
메시지채널
정확히 한번? 그런데!
메시지는 소비됐으나 처리가 완료되지 않은 경우는어떻게 처리할까요?
→ 시스템은 여전히 중복된 메시지를 처리할 수 있어야합니다
→ 메시지는 멱등성을 가진 방식으로 처리될 수 있어야합니다
메시지 전달 QoS
적어도 한번
최대 한번
정확히 한번
큐
수신자발신자
메시지채널
토픽-큐-연결
createOrderApi function
Amazon API Gateway
Amazon SNS topic
Queue Function
관리자
메시지라우팅
메시지 필터 대기자 목록
메시지라우팅
메시지 필터 대기자 목록
연관된 집합의 메시지만 수신함
구독자에 의해 제어됨
게시자는 메시지 처리에 관여하지 않음
구독자
게시자
토픽
색상 = 파랑
색상 = 노랑
메시지라우팅
대기자 목록
연관된 집합의 구독자에게만전달됨
발신자 또는 별도의 컴포넌트가 제어함
잠재적인 커플링이 추가됨
구독자
게시자
대기자 목록
메시지 필터
연관된 집합의 메시지만 수신함
구독자에 의해 제어됨
게시자는 메시지 처리에 관여하지 않음
구독자
게시자
토픽
색상 = 파랑
색상 = 노랑
토픽? 메시지필터?
토픽
Grey
토픽
Blue
토픽
Blue
구독자
Grey
Blue
Blue
Grey
Grey
게시자
토픽? 메시지필터?
메시지 필터
Color
토픽게시자
BlueGrey
Attr=
Grey
Grey
Attr=
Blue
Blue
구독자
게시자는 이벤트 라우팅에 관여하지 않음
구독자는 관심 메시지를 필터링 할 필요 없음
확장성 및 비용 효율
메시지라우팅
분산-수집
잠재적 관심이 있거나 관련된 당사자에게 요청을 분배하고 개별 응답을 캡처하는 방법은 무엇입니까?
- 견적요청 시나리오 또는 최상의 응답 검색
- 분할 정복과 같은 병렬처리 시나리오
메시지라우팅
분산-수집
잠재적 관심이 있거나 관련된 당사자에게 요청을 분배하고 개별 응답을 캡처하는 방법은 무엇입니까?
- 견적요청 시나리오 또는 최상의 응답 검색
- 분할 정복과 같은 병렬처리 시나리오
요청자
토픽
응답자
메시지라우팅
분산-수집
잠재적 관심이 있거나 관련된 당사자에게 요청을 분배하고 개별 응답을 캡처하는 방법은 무엇입니까?
- 견적요청 시나리오 또는 최상의 응답 검색
- 분할 정복과 같은 병렬처리 시나리오
요청자
토픽
응답자
큐
메시지라우팅
분산-수집
잠재적 관심이 있거나 관련된 당사자에게 요청을 분배하고 개별 응답을 캡처하는 방법은 무엇입니까?
- 견적요청 시나리오 또는 최상의 응답 검색
- 분할 정복과 같은 병렬처리 시나리오
요청자
토픽
응답자
큐
집계 처리
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Key Takeway
이벤트 드리븐 아키텍처는 마이크로서비스간의느슨한결합을 가능하게 합니다.
이벤트는발생한사건을표현하는 형식이고, Pub/Sub 방식으로 다대다 전달이가능합니다.
적절한통합서비스및패턴을 사용하여 어플리케이션을 통합합니다.
큐는 메시지 전달에 버퍼역할을 수행하여 게시자와 구독자의 메시지 생성 및 처리속도의 차이를 극복하게 합니다.
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
감사합니다
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.