게시일: 2024년 4월 30일
기고자: Chrystal R. China, Michael Goodwin
이벤트 스트리밍은 즉각적인 처리 및 저장 또는 실시간 분석 및 분석 보고를 위해 애플리케이션, 데이터베이스 및 IoT 디바이스에서 실시간 데이터를 캡처하여 다양한 대상으로 전송하는 방식입니다.
이벤트 스트리밍은 이벤트 또는 변경 사항이 발생할 때 데이터를 처리하여 IT 인프라가 대규모의 연속적인 이벤트 스트림을 처리할 수 있도록 하는 이벤트 스트림 처리(ESP)의 핵심 기능입니다.
이벤트 스트리밍은 대용량의 정적 데이터 세트(또는 '미사용 데이터')에서 작동하는 일괄 처리를 보완하는 역할을 하는 경우가 많습니다. 그러나 이벤트 스트리밍은 데이터를 일괄적으로 처리하는 대신 단일 데이터 포인트가 나타날 때 처리하므로 아키텍처 내의 소프트웨어가 데이터 스트림('이동 중인 데이터')을 실시간으로 해석하고 이에 응답할 수 있습니다.
고성능 이벤트 스트리밍 서비스는 재고 또는 제품 가격 변동 시 알림을 보내는 것부터 의심스러운 사용자 활동을 감지하는 실시간 머신 러닝 모델 구축에 이르기까지 단순하고 복잡한 다양한 작업을 지원할 수 있습니다. 일괄 처리의 경우에도 이벤트 스트리밍은 이벤트를 각각의 타임스탬프와 연결하고 과거 추세를 파악하여 데이터 분석에 깊이를 더할 수 있습니다.
이벤트 스트리밍은 시스템 또는 환경에서 발생하는 모든 상황을 기록하는 기본 데이터 구조인 '이벤트'라고 하는 데이터 레코드의 무제한, 순차적 실시간 흐름을 중심으로 이루어집니다. 이는 본질적으로 시스템의 모든 데이터 포인트를 가리키는 용어입니다. 따라서 '스트림'(데이터 스트림 또는 스트리밍 데이터라고도 함)은 이러한 이벤트의 지속적인 전송을 의미합니다.
각 이벤트는 일반적으로 이벤트 또는 이벤트와 관련된 엔티티를 식별하는 키, 이벤트의 실제 데이터를 보유하는 값, 이벤트가 발생하거나 기록된 시기를 나타내는 타임스탬프, 때로는 데이터 소스, 스키마 버전 또는 기타 속성에 대한 메타데이터로 구성됩니다.
특수 스트림 처리 엔진의 도움으로 이벤트는 스트림 내에서 몇 가지 다른 프로세스를 거칠 수 있습니다. '집계'는 평균, 합계 및 표준 편차와 같은 데이터 계산을 수행합니다. '수집'은 데이터베이스에 스트리밍 데이터를 추가합니다. 분석 처리는 스트리밍 데이터의 패턴을 사용하여 향후 이벤트를 예측하고, 보강 처리는 데이터 포인트를 다른 데이터 소스와 결합하여 컨텍스트를 제공하고 의미를 생성합니다.
이벤트는 비즈니스 운영 또는 사용자 탐색 프로세스와 연결되는 경우가 많으며 일반적으로 다른 작업, 프로세스 또는 일련의 이벤트를 트리거합니다. 온라인 뱅킹을 한 가지 예로 들어보겠습니다.
사용자가 한 은행 계좌에서 다른 은행 계좌로 돈을 보내기 위해 '이체'를 클릭하면, 송금인의 계좌에서 자금이 인출되어 수취인의 은행 계좌에 추가되고, 이메일 또는 SMS 알림이 한쪽(또는 양쪽) 당사자에게 전송되며, 필요한 경우 보안 및 사기 방지 프로토콜이 배포됩니다.
물론 이벤트는 이벤트 스트리밍의 핵심 구성 요소이지만, 스트리밍 서비스가 이벤트를 빠르고 효과적으로 처리할 수 있게 해주는 일련의 다른 구성 요소들이 있습니다. 다른 중요한 구성 요소는 다음과 같습니다.
브로커 또는 메시지 브로커는 이벤트 스트리밍 플랫폼을 실행하는 서버입니다. 메시지 브로커는 애플리케이션, 시스템 및 서비스가 공식 메시징 프로토콜 간에 메시지를 변환하여 서로 통신하고 정보를 교환할 수 있게 해줍니다. 상호 의존하는 서비스들이 Java나 Python과 같이 서로 다른 언어로 작성되었거나 다른 플랫폼에서 구현되었더라도 서로 직접 '대화'를 할 수 있게 하는 것입니다. 또한 시스템 안에서 프로세스와 서비스 분리가 더 용이해집니다.
브로커들은 메시지를 검증, 저장, 라우팅하여 적절한 대상에 전달할 수 있습니다. 분산 이벤트 스트리밍 시스템에서 브로커는 여러 노드에 이벤트를 복제하여 짧은 지연 시간과 고가용성을 보장합니다. 또한 브로커는 더 쉬운 로드 밸런싱과 확장성을 위해 함께 작동하는 브로커 집합인 클러스터를 구성할 수도 있습니다.
토픽은 이벤트가 게시되는 카테고리 또는 피드 이름으로, 플랫폼 내에서 이벤트를 정리하고 필터링할 수 있는 방법을 제공합니다. 이는 이벤트의 '주제' 역할을 하여 소비자가 토픽을 구독하고 관련 이벤트만 수신할 수 있도록 합니다.
토픽을 파티션으로 더 나눌 수 있으므로 여러 사용자가 각 파티션의 순서를 방해하지 않고 동시에 하나의 토픽을 읽을 수 있습니다.
오프셋은 파티션 내의 각 이벤트에 대한 고유 식별자로, 시퀀스 내에서 이벤트의 위치를 표시합니다. 소비자는 오프셋을 사용하여 처리한 이벤트를 구성합니다. 예를 들어 소비자가 이벤트에서 연결을 끊었다가 나중에 다시 연결하면 마지막으로 알려진 오프셋부터 처리를 재개할 수 있습니다.
데이터의 급증과 그에 따른 데이터 트래픽의 급증으로 인해 이벤트 스트리밍은 특히 빠른 의사 결정 기능이 필요한 환경이나 의사 결정 책임을 자동화하려는 조직에서 최신 데이터 아키텍처의 필수 구성 요소가 되었습니다.
이벤트 스트리밍 서비스가 이벤트 데이터를 관리하는 방법은 다음과 같습니다.
표준 스트리밍 및 처리 외에도 이벤트 스트리밍 플랫폼(Amazon Kinesis, Google Pub/Sub, Azure Event Hubs, 오픈 소스 Apache Kafka 플랫폼의 처리 능력을 사용하는 IBM Event Automation)은 기능을 향상시키는 다양한 스트리밍 방식을 지원합니다.
'단 한 번' 전달 시맨틱은 스트림의 각 이벤트가 정확히 한 번만 처리되도록 보장하며, 이는 스트림 이벤트 중복 및 손실을 방지하기 위한 필수 기능입니다. 대부분의 이벤트 스트리밍 시스템에는 시스템의 다른 곳에서 오류가 발생하더라도 단 한 번만 발생하는 의미 체계를 제공하는 메커니즘이 포함되어 있습니다.
다운스트림 구성 요소가 들어오는 이벤트 속도를 따라갈 수 없는 경우 역압은 스트림이 시스템을 압도하는 것을 방지합니다. 데이터 흐름 제어 메커니즘인 역압를 통해 소비자는 데이터 처리로 인해 과부하가 걸리거나 들어오는 이벤트를 따라잡을 수 없을 때 생산자에게 데이터 생산을 제한하거나 중지하도록 신호를 보낼 수 있습니다.
이 프로세스를 사용하면 전체 시스템을 중단하는 대신 수신 이벤트를 버퍼링하거나 삭제하여 시스템이 워크로드를 정상적으로 처리할 수 있기 때문에 워크로드가 변동하더라도 이벤트 처리가 안정적으로 유지됩니다.
이벤트 소비자는 이벤트 소비를 가속화하기 위해 소비자 그룹의 일원으로 작업하는 경우가 많습니다. 소비자 그룹의 각 소비자에게는 처리할 파티션의 하위 집합이 할당되어 효율성을 높이기 위해 소비를 병렬화합니다. 그룹 내의 한 소비자가 실패하거나 이를 추가 또는 제거해야 하는 경우 플랫폼은 균형과 내결함성을 유지하기 위해 파티션을 동적으로 재할당할 수 있습니다.
이벤트 스트리밍은 시간에 민감한 방식으로 데이터를 처리하는 것을 의미하는 경우가 많습니다. 워터마킹을 사용하면 스트림 처리 시스템에서 이벤트 시간을 사용하여 진행 상황을 추적할 수 있습니다. 시스템이 이벤트 데이터가 완전히 처리된 것으로 간주할 수 있는 시기를 나타내는 완전성 임계값을 적용합니다. 워터마크는 시간 기반 처리의 정확성을 보장하고 순서가 잘못된 이벤트를 조정하는 데에도 유용할 수 있습니다.
대부분의 이벤트 스트리밍 플랫폼은 개발자가 이벤트를 소비할 수 있는 기간을 제어할 수 있는 사용자 지정 가능한 데이터 보존 정책을 제공합니다. 그러나 데이터 압축은 토픽에서 중복되거나 더 이상 사용되지 않는 데이터를 제거하여 필수 데이터는 보존하면서 스토리지 공간을 최소화하는 프로세스입니다.
표준 스트리밍 아키텍처는 일반적으로 이벤트 프로듀서, 이벤트 브로커, 소비자를 분리하여 구성 요소를 독립적으로 확장하고 유지 관리할 수 있다는 점에 다시 한 번 주목할 필요가 있습니다.
이벤트 스트리밍은 조직이 생성된 데이터를 사용하여 보다 응답성이 뛰어나고 지능적인 시스템을 만들 수 있는 강력한 개념입니다. 데이터 기반 의사 결정이 부상하면서 이벤트 스트리밍은 최신 소프트웨어 아키텍처에서 점점 더 중요한 구성 요소로 자리 잡고 있습니다.
따라서 이벤트 스트리밍 기술은 다음과 같은 비즈니스 부문 전반에 걸쳐 다양한 사용 사례를 가지고 있습니다.
금융 기관은 이벤트 스트리밍 서비스를 사용하여 시장 데이터를 실시간으로 처리함으로써 알고리즘 거래 시스템이 최신 시장 상황을 기반으로 순식간에 의사 결정을 내릴 수 있도록 할 수 있습니다. 또한 이벤트 스트리밍의 실시간 모니터링 기능은 기관이 사기 및 보안 위험을 신속하게 식별하고 해결하는 데 도움이 됩니다.
온라인 게임 플랫폼은 이벤트 스트리밍 서비스를 사용하여 플레이어의 행동과 게임 상태 변화를 추적할 수 있으며, 이를 통해 게임 분석을 실행하고, 부정 행위 방지 정책을 시행하며, 플레이어 참여를 높일 수 있습니다. 스트리밍 플랫폼은 이벤트 데이터를 활용하여 사용자에게 개인화된 콘텐츠를 추천하고 맞춤형 고객 경험을 제공할 수 있습니다.
이벤트 스트리밍을 사용하면 차량 위치와 상태를 추적하여 교통 상황, 배송 일정 및 차량 성능에 따라 실시간 경로를 설정할 수 있습니다. 물류 회사는 마찬가지로 스캐닝 장치 및 GPS 추적기의 이벤트 데이터를 사용하여 고객에게 전자 상거래 배송 상태에 대한 실시간 업데이트를 제공할 수 있습니다.
이벤트 스트리밍은 특정 산업 외에도 다른 기술 및 아키텍처와 함께 배포할 때 유용할 수 있습니다. 예를 들어, 이벤트 스트리밍은 이벤트 소싱 및 명령 쿼리 책임 분리(CQRS)와 같은 패턴과 연관되기도 합니다.
이벤트 소싱은 앱 상태의 변경 사항이 일련의 이벤트로 저장되는 아키텍처 패턴입니다. 이벤트 스트림과 함께 사용되는 이벤트 소싱을 통해 스트리밍 시스템은 이러한 이벤트를 재생하여 특정 시점의 엔티티 상태를 재구성하거나 시스템의 다른 구성 요소를 구동할 수 있습니다.
CQRS 아키텍처 패턴에서 시스템은 명령을 처리하는 모델(쓰기)과 쿼리를 처리하는 모델(읽기)의 두 가지 모델로 나뉩니다. 이벤트 스트리밍은 CQRS에서 쓰기 모델의 변경 사항을 읽기 모델로 실시간으로 전파하는 데 사용할 수 있으므로 둘 간의 비동기 통합이 가능합니다.
이벤트 스트리밍은 이벤트 기반 아키텍처를 구축하기 위한 기반 기술이기도 합니다.
이벤트 기반 아키텍처는 느슨하게 결합된 구성 요소가 이벤트를 통해 통신할 수 있도록 하지만, 브로커에 이벤트 스트림을 게시하는 대신 다른 앱이나 서비스가 차례로 작업을 수행하는 데 사용할 수 있는 단일 목적의 이벤트를 게시합니다. 이벤트 기반 아키텍처가 제공하는 인스트림 처리 기능은 이벤트 스트리밍 기능과 함께 사용되므로 기업은 이동 중인 데이터에 대응하고 모든 현재 및 과거 데이터를 기반으로 신속한 결정을 내릴 수 있습니다.
최근 몇 년 동안 IBM Cloud를 비롯한 클라우드 제공업체는 이벤트 스트리밍의 원칙을 서비스로 제공하기 시작했습니다. 서비스형 이벤트 스트리밍을 사용하면 기업이 전체 기본 인프라를 관리하지 않고도 이벤트 스트리밍을 더 쉽게 채택할 수 있으므로 이벤트 스트리밍의 사용 사례가 더욱 확장됩니다.
IBM Event Automation은 기업이 여정의 어느 단계에 있든 이벤트 중심의 노력을 가속화할 수 있도록 지원하는 완전한 구성 가능한 솔루션입니다. 이벤트 스트림, 이벤트 엔드포인트 관리 및 이벤트 처리 기능은 이벤트의 가치를 실현하기 위한 이벤트 기반 아키텍처의 토대를 마련하는 데 도움이 됩니다.
IBM Cloud Pak for Integration은 IBM의 IBM Event Streams의 오픈 소스 Apache Kafka가 구축한 이벤트 스트리밍 플랫폼을 활용하여 이벤트 발생 시 대응할 수 있는 스마트 애플리케이션을 구축하도록 지원합니다. 향상된 시스템 연결성, 풍부한 배포 및 운영 경험, 이벤트 기반 아키텍처 전문 지식으로 미션 크리티컬 워크로드를 처리합니다.
새로운 이벤트에 즉시 대응할 수 있도록 후속 조치를 오케스트레이션하세요. App Connect는 이벤트 기반 아키텍처를 지원하며 폴링 메커니즘을 활용하여 이를 지원하지 않는 아키텍처와 함께 작업할 수 있습니다. 플로우를 구성하여 작업을 자동화하고 조건부 논리를 적용하여 의사 결정을 간소화하고 고객 요구 사항 변화에 대응합니다.