이벤트 기반 아키텍처란 무엇인가요?

이벤트에 대한 응답으로 실행되는 분리된 시스템

이벤트 기반 아키텍처에서는 이벤트를 사용하여 분리된 서비스를 서로 트리거하고 통신하며 마이크로서비스로 구축된 현대적 애플리케이션에서는 일반적입니다. 이벤트란 전자상거래 웹 사이트에서 쇼핑 카트에 항목이 추가되는 것과 같은 상태의 변화 또는 업데이트를 말합니다. 이벤트는 상태(구매한 항목, 그 가격 및 배송 주소)를 포함하거나 식별자(주문이 배송되었음을 안내하는 알림)가 될 수 있습니다.

이벤트 기반 아키텍처에는 이벤트 생산자, 이벤트 라우터, 이벤트 소비자라는 세 가지 주요 구성 요소가 있습니다. 생산자는 라우터에 이벤트를 게시하고 라우터는 이벤트를 필터링하여 소비자에 푸시합니다. 생산자 서비스와 소비자 서비스는 서로 분리되므로 독립적으로 확장, 업데이트, 배포할 수 있습니다.

이벤트 기반 아키텍처 설명 동영상(1:11)

더 자세히 알아보려면 Amazon EventBridge를 사용하여 분리된 이벤트 기반 아키텍처를 구축하는 방법에 대한 AWS 온라인 테크 톡 시리즈를 참조하세요. 이벤트 버스 생성, SaaS 이벤트 소스 설정 등 이벤트 기반 아키텍처의 기본 사항을 알아보고 Amazon EventBridge를 시작하세요.

이벤트 기반 아키텍처의 이점

독립적인 확장 및 장애

서비스를 분리하면 서로 인식하지 못하고 이벤트 라우터만 인식합니다. 즉, 서비스는 상호 운용 가능하지만 한 서비스에 장애가 발생하더라도 나머지 서비스는 계속 실행됩니다. 이벤트 라우터는 급증하는 워크로드를 수용하는 탄력적인 버퍼 역할을 합니다.

민첩한 개발

더 이상 이벤트를 폴링, 필터링 및 라우팅하기 위해 사용자 지정 코드를 작성할 필요가 없습니다. 이벤트 라우터가 이벤트를 자동으로 필터링하고 소비자에게 푸시합니다. 또한 라우터는 생산자 서비스와 소비자 서비스 간 과도한 조정의 필요성을 없애 개발 프로세스를 가속화합니다.

손쉬운 감사

이벤트 라우터는 애플리케이션을 감사하고 정책을 정의하는 중앙 집중식 로케이션 역할을 합니다. 이러한 정책은 라우터를 게시 및 구독할 수 있는 사용자를 제한하고 데이터에 액세스할 권한이 부여되는 사용자와 리소스를 제어할 수 있습니다. 또한 전송 중인 이벤트와 저장된 이벤트를 모두 암호화할 수 있습니다.

비용 절감

이벤트 기반 아키텍처는 푸시 기반이므로, 모든 작업이 이벤트가 라우터에 인식될 때 온디맨드 방식으로 이루어집니다. 이렇게 하면 이벤트를 확인하기 위해 지속적 폴링 비용을 지불할 필요가 없습니다. 즉, 네트워크 대역폭 사용량, CPU 활용률, 유휴 장치 용량 및 SSL/TLS 핸드셰이크가 줄어듭니다.

작동 방식: 예제 아키텍처

다음은 전자 상거래 사이트를 위한 이벤트 중심 아키텍처의 예입니다. 이 아키텍처를 사용하면 애플리케이션이 중단되거나 리소스를 오버프로비저닝하는 일 없이, 피크 시간대에 사이트에서 다양한 원인으로 인한 변화에 대응할 수 있습니다.

이 아키텍처의 사용 사례

계정 간, 리전 간 데이터 복제

이벤트 기반 아키텍처를 사용하여 여러 리전과 계정에서 운영 및 배포하는 팀 간에 시스템을 조율할 수 있습니다. 이벤트 라우터를 사용하여 시스템 간에 데이터를 전송하면 다른 팀과 독립적으로 서비스를 개발하고 크기 조정하고 배포할 수 있습니다.

리소스 상태 모니터링 및 알림

리소스를 지속적으로 확인하는 것이 아니라, 이벤트 기반 아키텍처를 사용하여 이상 징후, 변경 사항 및 업데이트에 대한 알림을 모니터링하고 수신할 수 있습니다. 이러한 리소스에는 스토리지 버킷, 데이터베이스 테이블, 서버리스 함수, 컴퓨팅 노드 등이 포함될 수 있습니다.

팬아웃 및 병렬 처리

이벤트에 반응하여 작동해야 하는 시스템이 많은 경우, 각 소비자에게 푸시할 사용자 지정 코드를 작성할 필요 없이 이벤트 기반 아키텍처를 사용하여 이벤트를 팬아웃할 수 있습니다. 라우터가 이벤트를 시스템에 푸시하면, 각 시스템이 각각 다른 목적으로 이벤트를 병렬로 처리할 수 있습니다.

이기종 시스템의 통합

시스템이 서로 다른 스택에서 실행 중인 경우 결합하지 않은 상태로 이벤트 기반 아키텍처를 사용하여 시스템 간에 정보를 공유할 수 있습니다. 이벤트 라우터가 시스템 간의 간접성과 상호 운용성을 설정하므로, 독립성을 유지하면서 메시지와 데이터를 교환할 수 있습니다.


이벤트 기반 아키텍처를 사용해야 할까요?

이벤트 기반 아키텍처는 민첩성을 높이고 변화에 신속하게 대응하는 데 적합합니다. 마이크로서비스를 사용하는 현대적인 애플리케이션이나 분리된 구성 요소가 있는 애플리케이션에서 흔히 볼 수 있습니다. 이벤트 기반 아키텍처를 도입할 경우 애플리케이션 설계 방식을 재고해야 할 수도 있습니다. 성공적인 아키텍처를 구축할 수 있도록 준비하려면 다음을 고려하세요.

• 이벤트 소스의 내구성. 모든 이벤트를 처리해야 하는 경우 이벤트 소스를 신뢰할 수 있어야 하며 전송이 보장되어야 합니다. 

• 성능 제어 요구 사항. 애플리케이션이 이벤트 라우터의 비동기 특성을 처리할 수 있어야 합니다. 

• 이벤트 흐름 추적. 이벤트 기반 아키텍처로 인해 발생하는 간접성은 모니터링 서비스를 통한 동적 추적을 허용하지만 코드 분석을 통한 정적 추적은 허용하지 않습니다. 

• 이벤트 소스의 데이터. 상태를 다시 빌드해야 하는 경우 이벤트 소스가 중복 제거되고 순서가 지정되어야 합니다.

AWS 이벤트 기반 아키텍처 가이드 다운로드 »

시작하는 방법

이벤트 기반 아키텍처에 사용되는 라우터에는 이벤트 버스와 이벤트 주제라는 두 가지 주요 유형이 있습니다. AWS에서는 이벤트 버스를 구축하는 Amazon EventBridge와 이벤트 주제를 구축하는 Amazon Simple Notification Service(SNS)를 제공합니다.

SaaS 애플리케이션, AWS 서비스 또는 사용자 지정 애플리케이션의 이벤트에 반응하는 애플리케이션을 구축하려고 할 때는 Amazon EventBridge를 사용하는 것이 좋습니다. EventBridge는 이벤트에 대해 미리 정의된 스키마를 사용하며, 사용자에게 푸시하기 전에 전체 이벤트 본문에 적용되는 규칙을 만들 수 있습니다.

다른 애플리케이션, 마이크로서비스 또는 AWS 서비스에서 게시한 높은 스루풋 또는 짧은 대기 시간의 이벤트에 반응하는 애플리케이션을 구축하려는 경우 또는 높은 팬아웃이 필요한 분야(수천 또는 수백만 개의 엔드포인트)에는 Amazon SNS가 권장됩니다. SNS 주제는 전송되는 이벤트 스키마에 구애받지 않습니다.

무료 계정에 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다. 

가입하기