3장. Data Mesh용 이벤트 스트림
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이벤트는 관심 있는 모든 가입자가 사용할 수 있도록 이벤트 스트림에 게시됩니다. 그렇다면 이벤트 스트림의 속성은 무엇이며 대기열과 다른 점이 있을까요? 아니면 메시징 시스템과 다를까요? 이벤트를 구성하는 요소는 무엇이며, 재사용 가능한 이벤트 스트림을 올바르게 구성하려면 어떻게 해야 할까요? 이 장에서는 이벤트와 이벤트 스트림에 대한 요구 사항, 다른 유사한 아키텍처와의 차별성, 그리고 소비자서비스를 위한 몇 가지 사용 모드에 대해 자세히 살펴보겠습니다.
먼저 이벤트부터 시작하겠습니다. 이벤트는 어떤 일이 발생했는지에 대한 모든 정보가 포함된 잘 정의된 발생 기록입니다. 이벤트는 일반적으로 비즈니스 엔티티 또는 엔티티 간의 관계를 기반으로 합니다. 간단한 자동차를 예로 들면 items, orders, coupons 에 대한 정보를 자세히 설명하는 엔터티 이벤트를 볼 수 있습니다. 엔터티 간의 관계 측면에서는 item_added_to_cart, coupon_applied_to_order 과 같은 이벤트를 볼 수 있습니다.
이벤트가 정확히 무엇인지, 어떻게 구조화되는지, 그리고 우리가 사용해야 할 지원 기술에 대해 잠시 후에 자세히 살펴보겠습니다. 먼저 이벤트 기반 데이터 메시에서 이벤트 스트림이 수행하는 역할에 대한 몇 가지 핵심 개념을 이해하는 것이 중요합니다.
그림 3-1은 그림 2-1의 자동차 도메인 경계 컨텍스트의 확장을 보여줍니다. 내부 구현( )은 자동차를 구성하는 데 필요한 구성 요소/엔티티를 나타내는 테이블과 함께 관계형 데이터베이스를 사용합니다. 부패 방지 계층은 새 자동차의 조립 및 기존 인벤토리 수정 요청과 같은 운영 사용 사례를 위한 REST API를 제공합니다.
또한 도메인은 이벤트 스트림에 두 개의 데이터 제품을 게시합니다. 하나는 품목을 기반으로 하고 다른 하나는 주문을 기반으로 합니다. 특수 비즈니스 로직이 이벤트 스트림에 게시된 데이터에서 내부 모델을 추출하고 분리합니다. 부패 방지 계층을 통해 노출하기로 선택한 것은 무엇이든 공개 API의 일부가 되므로 추가하는 항목과 추가 방법에 주의해야 합니다.
그림 3-1. 데이터 제품을 위한 이벤트 스트림 API와 운영 문제를 위한 REST API가 포함된 전자상거래 도메인
이벤트 기반 데이터 제품을 추출하거나 사용하기 위해 내부 구현이 반드시 이벤트 기반일 필요는 없습니다. 8장에서는 비이벤트 기반 시스템과 이벤트 기반 시스템을 통합하는 방법과 그 간극을 메울 수 있는 옵션에 대해 설명합니다. 또한 이벤트 스트림과 함께 기존의 요청-응답 옵션을 통합하고 있다는 점에 주목할 수 있습니다. 이는 이벤트 기반이 아니지만 ...