EventBridge를 활용한 이벤트 기반 패턴

AWS에서 애플리케이션 배포하기

Dunieski Otano

Amazon Web Services Solutions Architect

주문 하나, 네 가지 반응

  • 주문 하나가 청구, 주문 처리, 분석, 이메일로 전달되어야 함
  • 네 곳에 직접 호출하는 방식은 취약하고 느림
  • 이벤트 하나로 모든 소비자에게 전파 가능

중앙 토픽에서 여러 다운스트림 서비스로 병렬 전파되는 하나의 이벤트

AWS에서 애플리케이션 배포하기

적합한 메시징 서비스 선택하기

AWS 메시징 서비스 2x2 그리드: 생산자-소비자 흐름을 보여주는 SQS 큐, 여러 구독자에게 전파하는 SNS 퍼브/서브, 규칙 기반 라우팅을 하는 EventBridge 이벤트 버스, 재생 가능한 순서가 있는 Kinesis 샤드

  • SQS: 큐 하나, 소비자 그룹 하나, 최소 1회 전달
  • SNS: 퍼브/서브 방식, 메시지 하나를 여러 구독자에게 푸시
  • EventBridge: 콘텐츠 기반으로 여러 대상에 이벤트 라우팅
  • Kinesis Data Streams: 순서가 보장되고 재생 가능한 스트리밍
AWS에서 애플리케이션 배포하기

팬아웃 패턴

  • 이벤트 하나가 여러 소비자에게 동시에 도달해야 함
  • SNS 토픽에 게시
  • 각 SQS 큐가 해당 토픽 구독
  • 모든 소비자가 독립적으로 자신만의 사본을 받음

SNS-투-SQS 팬아웃 패턴: 하나의 SNS 토픽이 여러 SQS 큐로 게시하고, 각 큐는 독립적으로 자신만의 속도로 소비자에게 전달함

AWS에서 애플리케이션 배포하기

소비자에게 필요한 것만 전달하는 필터링

  • 필터가 없으면 모든 구독자가 모든 이벤트를 받음
  • SNS 구독 필터 정책: 메시지 속성으로 필터링
  • EventBridge 콘텐츠 필터: 이벤트 필드로 일치 여부 확인
  • 각 소비자는 관련 이벤트만 받음

SNS 구독 필터 정책과 EventBridge 콘텐츠 필터: 각 소비자는 필터 규칙과 일치하는 이벤트만 받아 불필요한 처리와 비용을 줄임

AWS에서 애플리케이션 배포하기

EventBridge로 라우팅하기

EventBridge 라우팅 다이어그램: 여러 소스에서 이벤트를 받는 이벤트 버스, 이벤트 패턴을 매칭하는 규칙, 매칭된 이벤트를 Lambda, SQS 등 대상 서비스로 라우팅

  • 이벤트 버스: 여러 소스에서 이벤트 수신
  • 규칙: 특정 이벤트와 일치하는 이벤트 패턴
  • 대상: 매칭된 이벤트가 전달되는 곳
  • 이벤트 하나를 여러 대상으로 라우팅 가능
AWS에서 애플리케이션 배포하기

Kinesis Data Streams로 스트리밍하기

  • 지속적이고 실시간인 레코드 흐름
    • 샤드 내에서 순서가 보장됨
    • 재생 가능: 소비자가 원하는 지점부터 다시 읽을 수 있음
    • 여러 소비자가 동일한 스트림을 독립적으로 읽음
    • 클릭스트림, 텔레메트리, 대용량 데이터에 사용

Kinesis Data Streams 아키텍처: 생산자가 순서가 있는 레코드를 번호가 매겨진 샤드에 기록하고, 세 소비자가 서로 다른 위치에서 독립적으로 읽으며, 되감기 화살표로 재생 기능을 보여줌

AWS에서 애플리케이션 배포하기

이벤트 소비자로서의 Lambda

  • Lambda는 SQS, SNS, EventBridge, Kinesis로 트리거 가능
  • 이벤트 소스 매핑이 SQS와 Kinesis를 자동으로 폴링
  • SNS와 EventBridge는 Lambda에 이벤트를 푸시
  • 서버 관리 없이 거의 실시간으로 처리

네 가지 이벤트 소스로 트리거되는 Lambda: 이벤트 소스 매핑이 SQS와 Kinesis를 배치로 폴링하고, SNS와 EventBridge는 이벤트를 Lambda에 직접 푸시함

AWS에서 애플리케이션 배포하기

연습해 봅시다!

AWS에서 애플리케이션 배포하기

Preparing Video For Download...