개요
블로그 내에서 AWS EventBridge를 사용해 S3와 SQS를 연동하는 방법 자체는 다뤘는데, 정작 EventBridge가 어떤 서비스인지에 대해서는 다루지 못했다. 때문에 이번 글에서 AWS EventBridge와 관련 개념에 대해서 정리한다.
AWS EventBridge
이벤트를 사용해 애플리케이션 구성 요소를 연결하는 서버리스 서비스
이벤트를 내보내고 응답함으로써 함께 동작하는, 느슨하게 결합된 소프트웨어 시스템인 이벤트 기반 아키텍쳐를 구축하는 데 사용한다. 이벤트가 발생할 때마다 또는 스케줄 설정에 따라 작업을 수행한다.
전송 방식
EventBridge는 크게 이벤트 버스와 파이프라인 전송 방법을 사용한다.
이벤트 버스
이벤트를 수신해 0개 이상의 대상에 전달하는 라우터
자체 개발 애플리케이션, AWS 서비스 또는 타사 소프트웨어에서 다른 애플리케이션으로 이벤트를 라우팅한다.
다양한 소스의 이벤트를 여러 대상(target)으로 라우팅 하는데 적합하며, 대상으로 전달하기 전에 이벤트를 변환하는 작업도 수행할 수 있다.
이벤트 버스와 연결된 규칙은 이벤트가 도착할 때 이벤트를 평가하여, 이벤트가 규칙의 패턴과 일치하는지 확인한다. 이벤트가 일치하면 EventBridge는 이벤트를 전달한다.
기본적으로 AWS 이벤트를 자동으로 수신하는 기본 이벤트 버스가 포함되어 있다.
파이프
지점 간 통합을 목적으로 하며, 단일 소스로부터 이벤트를 수신해 처리하고 단일 대상으로 전달한다. 또한 필요에 따라 보강(enrichment) 과정을 통해 전달할 데이터를 개선할 수 있다.
파이프는 DynamoDB 스트림, Kinesis 스트림, MQ 브로컨, MSK 스트림, SQS 대기열, Apache Kafka 스트림 등을 이벤트 소스로 지정할 수 있다. 그리고 API, API Gateway, CloudWatch 로그 그룹, 이벤트 버스, Firehose 전송 스트림 등과 같은 다양한 대상으로 데이터를 전달한다.
관련 개념
AWS EventBridge를 사용할 때 알아두어야 하는 개념을 적어둔다.
이벤트 (Event)
이벤트 버스 또는 파이프로 전송되는 JSON 객체
이벤트 기반 아키텍처에서 이벤트란 주로 리소스 또는 환경의 변화를 나타내는 지표에 해당한다.
이벤트 소스 (Event Source)
이벤트를 수신하는 대상
AWS 서비스, 사용자 정의 애플리케이션, SaaS 파트너로부터 이벤트를 수신할 수 있다.
규칙 (Rules) / 이벤트 버스 관련 개념
이벤트 버스에서 수신한 이벤트 중 적절한 이벤트를 대상으로 전송하여 처리한다. 이벤트 패턴 또는 스케줄에 따라 동작한다.
각 규칙은 특정 이벤트 버스에 대해 정의하고, 정의한 이벤트 버스에만 적용된다. 그리고 최대 5개 대상으로 이벤트를 전달할 수 있다. 기본적으로 이벤트 버스 당 최대 300객의 규칙을 정의할 수 있는데, 필요시 콘솔에서 할댱량 제한을 조정할 수 있다.
대상 (Target)
이벤트가 규칙에 정의된 이벤트 패턴에 일치할 때 이벤트를 전달하는 리소스 또는 엔드포인트
대상은 여러 이벤트 버스에서 다양한 이벤트를 수신할 수 있다.
필터 (Filter) / 파이프 관련 개념
특정 소스의 이벤트를 필터링한 다음 해당 이벤트의 일부만 처리할 수 있다. 필터링 구성 시 파이프가 대상으로 전송할 이벤트를 결정하는 데 사용하는 이벤트 패턴을 정의해야 한다. 필터와 일치하는 요금에 대하서만 요금이 부과된다.
보강 (Enrichment) / 파이프 관련 개념
단계에 따라 소스의 데이터를 대상으로 전송하기 전에 개선할 수 있다. 즉, 파이프에서 전달할 데이터를 변경할 수 있다.
참고 문서
https://docs.aws.amazon.com/ko_kr/eventbridge/latest/userguide/eb-what-is.html