일상/IT

이벤트 스트림은 액션 없이는 무용지물

얇은생각 2023. 8. 30. 07:30
반응형

이벤트 스트림 및 이벤트 스트림 처리에 대해 자세히 설명하며 이벤트 스트림 처리의 작동 방식과 같은 주제를 다룹니다.

지속적으로 데이터를 생성하는 시스템의 각 데이터 포인트는 이벤트에 해당합니다. 이벤트 스트림은 이벤트 또는 데이터 포인트의 연속적인 흐름으로 설명됩니다. 이벤트 스트림은 연속적인 데이터 포인트로 구성되므로 개발자 커뮤니티 내에서 데이터 스트림이라고도 합니다. 이벤트 스트림 처리는 생성된 이벤트에 대해 수행된 작업을 말합니다.

이벤트 스트림과 이벤트 스트림 처리에 대해 자세히 설명하며, 이벤트 스트림 처리의 작동 방식, 이벤트 스트림 처리와 배치 처리의 대조, 이점과 사용 사례 등의 주제를 다루며, 이벤트 스트림 처리의 실례가 되는 예로 마무리합니다.

 

 

이벤트 스트림: 개요

서비스 간 결합은 마이크로서비스와 관련된 가장 중대한 문제 중 하나입니다. 기존 아키텍처는 요청이 있을 때만 데이터가 수집되는 "묻지마식, 말하지마식" 아키텍처입니다. 문제가 된 A, B, C의 세 가지 서비스가 있다고 가정합니다. 서비스 A는 다른 서비스에 "현재 상태는 무엇입니까?"라고 묻고 항상 응답할 준비가 되어 있다고 가정합니다. 이로 인해 다른 서비스를 사용할 수 없는 경우 사용자는 입장에 놓이게 됩니다.

마이크로서비스는 네트워크 장애 또는 네트워크 토폴로지의 변화로 인한 부정적인 영향을 보상하기 위한 해결책으로 재시도를 활용합니다. 그러나 이는 궁극적으로 또 다른 복잡성 계층을 추가하고 비용을 증가시킵니다.

기존 설계의 문제를 해결하기 위해 이벤트 중심 아키텍처는 "묻지마 이벤트" 철학을 채택합니다. 위의 예에서 서비스 B C는 이벤트와 같은 연속적인 데이터 스트림을 게시하고 서비스 A는 이러한 이벤트 스트림에 가입합니다. 그런 다음 서비스 A는 사실을 평가하고 결과를 집계하고 로컬로 캐시할 수 있습니다.

이러한 방식으로 이벤트 스트림을 활용하면 다음과 같은 다양한 장점이 있습니다:

- 시스템은 실제 프로세스를 면밀히 모방할 수 있습니다.

- 필요할 때까지 유휴 상태를 유지할 수 있는 서비스가 증가함에 따라 스케일 투 제로 기능(서버리스 컴퓨팅)의 사용이 증가했습니다.

- 향상된 적응력

 

 

이벤트 스트림 처리의 개념

ESP(Event Stream Processing)는 이벤트 중심 아키텍처의 개발을 촉진하는 기술의 집합입니다. 앞서 언급한 바와 같이 이벤트 스트림 처리는 이벤트 중심 아키텍처에 의해 생성된 이벤트에 대응하는 프로세스입니다.

이벤트 스트림은 액션 없이는 무용지물 1

 

 

다음과 같은 다양한 방식으로 행동할 수 있습니다:

- 계산 수행

- 데이터 변환

- 데이터 분석

- 데이터를 풍부

 

이벤트 스트림 처리의 핵심인 다음 부분에서 자세히 설명할 이벤트 데이터를 변환하기 위한 동작 파이프라인을 설계할 수 있습니다.

 

 

이벤트 스트림 처리의 기본 사항

Event Stream Processing은 두 개의 개별 기술로 구성되어 있으며, 첫 번째 기술 형태는 Events를 논리적으로 저장하는 시스템이고, 두 번째 유형은 Events를 처리하는 데 사용되는 소프트웨어입니다.

첫 번째 구성 요소는 데이터 저장을 담당하며 타임스탬프를 기반으로 정보를 저장합니다. 스트리밍 데이터의 예시로서, 외부 온도를 하루 종일 매분 기록하는 것이 좋은 예입니다. 이 시나리오에서 각 이벤트는 온도 측정과 측정의 정확한 시간으로 구성됩니다. 스트림 프로세서 또는 스트림 처리 엔진이 두 번째 구성 요소를 구성합니다.

대부분 개발자들은 Apache Kafka를 사용하여 이벤트를 임시로 저장하고 처리합니다. 또한 처리된 이벤트가 추가 처리를 위해 추가 이벤트 스트림으로 전달되는 이벤트 스트림 기반 파이프라인을 생성할 수 있습니다. 다른 Kafka 사용 사례에는 활동 추적, 로그 집계 및 실시간 데이터 처리가 포함됩니다. Kafka는 소프트웨어 설계자가 시스템의 서로 다른 구성 요소의 분리로 인해 대규모 시스템을 위한 확장 가능한 아키텍처를 설계할 수 있도록 합니다.

 

 

이벤트 스트림 처리 대 배치 처리

기술의 발달로 기업들은 10년 전보다 훨씬 더 많은 데이터를 처리합니다. 따라서 이러한 변화 속도를 따라가기 위해서는 더욱 정교한 데이터 처리 기술이 필요합니다. 기존의 애플리케이션은 데이터 수집, 저장 및 처리뿐만 아니라 처리된 출력물의 저장도 담당합니다.

일반적으로 이러한 절차는 일괄적으로 발생하므로, 응용프로그램이 처리를 시작하기에 충분한 데이터를 확보할 때까지 기다려야 합니다.

신속한 데이터 처리가 필요한 시간에 민감하거나 실시간 애플리케이션에서는 애플리케이션이 데이터를 대기해야 하는 시간이 허용되지 않습니다.

해결하기 위해 이벤트 스트림이 시작됩니다. 이벤트 스트림 처리에서는 모든 데이터 포인트 또는 이벤트가 순간적으로 처리되므로 데이터 포인트의 백로그가 없으므로 실시간 응용 프로그램에 완벽합니다.

이벤트 스트림은 액션 없이는 무용지물 2

 

또한 Stream Processing을 사용하면 패턴 탐지, 다양한 주의도 검사 및 다양한 Stream의 데이터를 동시에 검사할 수 있습니다. 작업을 시간에 따라 분산하면 이벤트 스트림 처리는 Batch Processing보다 훨씬 적은 하드웨어를 필요로 합니다.

 

 

이벤트 스트림 처리 사용의 이점

이벤트 스트림 처리는 이벤트 스트림에 대해 신속한 조치를 취해야 할 때 사용됩니다. 그 결과, 이벤트 스트림 처리가 방대한 양의 데이터를 관리하기 위한 선택 솔루션으로 부상하게 될 것입니다. 이는 오늘날의 일반적인 고속 기술에 가장 큰 영향을 미칠 것이며, 이벤트 스트림 처리를 방대한 양의 데이터를 관리하기 위한 선택 솔루션으로 확립할 것입니다. 이벤트 스트림 처리를 워크플로우에 통합하는 몇 가지 이점은 다음과 같습니다:

이벤트 스트림 파이프라인은 고급 스트리밍 사용 사례를 충족하도록 개발될 수 있습니다. 예를 들어, 이벤트 스트림 파이프라인을 사용하면 메타데이터로 이벤트 데이터를 향상시키고 저장을 위해 이러한 개체를 수정할 수 있습니다.

워크플로우에서 이벤트 스트림 처리를 활용하면 실시간으로 선택할 수 있습니다.

데이터 볼륨이 증가함에 따라 인프라를 단순하게 확장할 수 있습니다.

Event Stream Processing은 지속적인 Event Monitoring을 제공하여 추세 및 이상을 발견할 수 있는 경고를 만들 수 있습니다.

대량의 데이터를 실시간으로 검사하고 처리할 수 있으므로 저장하기 전에 데이터를 필터링, 집계 또는 필터링할 수 있습니다.

 

 

이벤트 스트림 사용 사례

사물인터넷(IoT)이 발전함에 따라 실시간 분석에 대한 수요도 증가하고 있으며, 데이터 처리 아키텍처가 이벤트 중심이 됨에 따라 ESP의 중요성은 계속 증가하고 있습니다.

이벤트 스트리밍은 여러 부문과 조직에 걸쳐 다양한 응용 사례에서 사용됩니다. 이벤트 스트림 처리를 데이터 처리 방법론에 통합하여 이익을 얻은 몇 가지 산업을 살펴봅시다.

큰 부문을 돕는 것 외에도, 그것은 또한 우리가 매일 직면하는 특정 문제를 해결합니다. 여기 이것이 어떻게 사용될 수 있는지에 대한 몇 가지 예가 있습니다.

 

사용 사례 1: 이벤트 스트림을 사용하여 Github 알림 푸시

이벤트 스트림은 코드베이스 변경 사항을 실시간으로 최신 상태로 유지할 수 있는 좋은 방법입니다. 이벤트 스트림을 구성하고 관심 있는 이벤트를 구독하면 저장소에 활동이 있을 때마다 푸시 알림을 받을 수 있습니다. 이 사용 사례가 깃허브 푸시 알림에서 이벤트 스트림을 사용하는 방법을 이해하는 데 도움이 되기를 바랍니다.

여기서는 이벤트 꿈을 활용하여 실시간 GitHub 푸시 알림을 제공하는 Chrome 확장을 만드는 예를 들어 보겠습니다. Google Chrome GitHub Notifier 확장 기능을 사용하면 다른 사용자가 GitHub 저장소 중 하나와 상호 작용할 때마다 실시간으로 알림을 볼 수 있습니다. 이는 프로젝트 활동을 지속적으로 수행하고 문제나 요청에 신속하게 대응할 수 있는 좋은 방법입니다. 이 확장 기능은 Google Chrome 스토어에서 무료로 사용할 수 있습니다. 설치한 다음 GitHub 계정으로 로그인하기만 하면 됩니다.

일단 그렇게 하면, 누군가가 당신을 언급하거나, 당신의 저장소 중 하나에 댓글을 달거나, 심지어 누군가가 당신의 저장소 중 하나에 별을 달았을 때도 알림을 받기 시작할 것입니다. 또한 새로운 릴리스 또는 새로운 꺼내기 요청과 같은 특정 이벤트에 대한 알림을 받을 수도 있습니다. 깃허브 알림기로 깃허브 저장소의 모든 최신 활동을 최신 상태로 유지하세요!

이벤트 스트림은 액션 없이는 무용지물 3

 

 

사용 사례 2: 산업용 사물 인터넷(IIoT)

산업 프로세스를 자동화하는 맥락에서 기업은 데이터 스트림을 실시간으로 통신하는 여러 센서를 포함하여 IIoT 솔루션을 통합할 수 있습니다. 이러한 센서는 수백 개에 설치될 수 있으며, 데이터 스트림은 종종 IoT 게이트웨이에 의해 풀링되어 데이터 스트림을 기술 스택으로 더 멀리 전달할 수 있습니다. 기업은 데이터를 사용하고, 추세를 감지하기 위해 분석하고, 신속하게 조치를 취하기 위해 이벤트 스트림 처리 접근 방식을 적용해야 합니다. 이러한 이벤트 스트림은 이벤트 스트리밍 플랫폼에서 소비되며, 이는 이후 실시간 분석을 실행합니다.

예를 들어, 우리는 30초 동안의 평균 온도를 추적하는 것에 관심이 있을 수 있습니다. 그 후, 우리는 온도가 45°C를 초과하는 경우에만 표시되기를 원합니다. 이 조건이 만족되면, 경고는 과열을 방지하기 위해 실시간으로 프로세스를 변경하기 위해 다른 프로그램에 의해 사용될 수 있습니다.

프로세스를 자동화하는 데 도움이 되는 기술이 많이 있습니다. Camunda Workflow Engine은 이러한 프로세스 자동화를 구현하고 프로세스 모델링의 글로벌 표준인 BPMN(Business Process Model and Notification)에 정의된 프로세스를 실행하는 것 중 하나입니다. BPMN은 가장 복잡한 비즈니스 프로세스를 자동화하기 위해 사용하기 쉬운 시각적 모델링 언어를 제공합니다. Camunda 워크플로우를 시작하고 싶다면 Camunda 커넥터가 좋은 출발점입니다.

 

 

사용 사례 3: 결제 처리

신속한 결제 처리는 사용자 경험 우려 및 바람직하지 않은 행동을 완화하기 위한 이벤트 스트림 처리의 탁월한 사용입니다. 예를 들어, 어떤 사람이 결제를 수행하기를 원하지만 상당한 지연을 겪는 경우, 그들은 페이지를 새로고침하여 거래가 실패하게 하고 그들의 계정이 차변되었는지 여부에 대해 불확실하게 할 수 있습니다. 유사하게, 기계 기반 결제를 처리할 때, 지연은 특히 수백 개의 결제가 백업될 때 큰 파급 영향을 미칠 수 있습니다. 이는 반복적인 시도 또는 시간 초과를 초래할 수 있습니다.

수만 개의 동시 요청에 대한 원활한 처리를 지원하기 위해 이벤트 스트리밍 처리를 활용하여 전체 사용자 환경을 일관되게 보장할 수 있습니다. 결제 요청 이벤트는 토픽에서 초기 결제 프로세서로 전송될 수 있으며, 이후에 현재 처리 중인 전체 결제 금액을 변경합니다. 이후에 후속 이벤트가 생성되고 다른 프로세서로 전달되며, 이 프로세서는 결제가 완료될 수 있는지 확인하고 사용자의 잔액을 변경합니다. 이후에 최종 이벤트가 생성되고, 다른 프로세서에 의해 사용자의 잔액이 업데이트됩니다.

 

사용 사례 4: 사이버 보안

사이버 보안 시스템은 새로운 위험을 식별하고 발생 간의 관계를 이해하기 위해 수백만 개의 이벤트를 수집합니다. 사이버 보안 기술은 잘못된 긍정을 줄이기 위해 이벤트 스트리밍 처리를 사용하여 위협을 증가시키고 컨텍스트가 풍부한 데이터를 제공합니다. 다음과 같은 일련의 과정을 수행합니다:

실시간으로 소비자 설정과 같은 다양한 데이터 소스에서 이벤트를 수집합니다.

잘못된 양성 또는 양성 공격을 제거하기 위해 관련 데이터만 대상에 입력하도록 이벤트 스트림을 필터링합니다.

스트리밍 앱을 실시간으로 활용하여 여러 소스 인터페이스에 걸쳐 이벤트를 상호 연관시킵니다.

SIEM(보안 정보 및 이벤트 관리) 시스템 또는 SOAR(보안 자동화, 조정 및 응답) 시스템과 같은 다른 시스템에 우선 순위 이벤트를 전달합니다.

 

사용 사례 5: 항공사 최적화

우리는 실시간 앱을 만들어 비행 전, , 후 승객들의 경험을 향상시킬 수 있으며, 항공사와 공항에서 사용하는 모든 백엔드 플랫폼에서 접근할 수 있도록 게이트에서 탑승권을 스캔하는 고객과 같은 중요한 이벤트를 만들 경우 효과적으로 조정하고 대응할 수 있습니다.

예를 들어, 이 한 가지 유형의 이벤트를 기반으로 다음과 같은 세 가지 사용 사례를 사용할 수 있습니다:

이륙 시간 정확한 예측 및 지연 예측

실시간 데이터를 제공하여 승객을 연결하는 데 필요한 지원 양을 줄입니다

단일 항공편의 영향이 다른 항공편의 정시 성과에 미치는 영향을 줄입니다.

 

 

사용 사례 6: 전자 상거래

이벤트 스트림 처리는 "구매까지 보기"를 용이하게 하기 위해 전자 상거래 애플리케이션에서 사용될 수 있습니다. 이를 위해, 우리는 3개의 개별 이벤트 종류가 스트림을 공급하면서 쇼핑객이 만든 이벤트를 캡처하기 위한 초기 이벤트 스트림을 구축할 수 있습니다.

고객이 품목을 확인함

고객이 쇼핑 카트에 품목을 추가합니다

고객이 주문을 합니다.

 

NAT은 다음과 같은 개별 프로세스 또는 알고리즘을 적용하여 사용 사례를 지원할 수 있습니다:

'고객 주문' 이벤트에 대한 스트림을 분석하고 매 시간 동안 총 수익을 기록하는 시간당 판매 계산기입니다.

스트림에서 "Customer see item"을 읽고 각 제품의 전체 조회 수를 추적하는 제품 룩 투 북 트래커(Look to Book Tracker)입니다. 또한 스트림에서 'Customer put order' 이벤트를 파싱하여 각 제품의 총 판매 수량을 추적합니다.

세 가지 종류의 이벤트를 모두 읽고 앞서 설명한 알고리즘을 사용하여 쇼핑 카트를 버린 고객을 식별하는 버려진 카트 탐지기가 버려진 카트를 탐지하면 새로운 '고객 포기' 카트 이벤트가 생성되고 새로운 주제에 게시됩니다.

 

 

결론

이벤트에 의해 주도되는 세상에서 이벤트 스트림 처리(ESP)는 기업의 중요한 업무로 부각되고 있습니다. 점점 더 많은 기업이 스트리밍 아키텍처로 전환하면서 이벤트 스트림은 점점 더 중요한 데이터 소스가 되고 있습니다. 이벤트 스트림을 사용할 경우 실시간 분석, 더 빠른 응답 시간, 향상된 고객 경험 등의 이점이 있습니다. 기존의 배치 처리에 비해 많은 이점을 제공합니다.

또한 특정 비즈니스 문제를 해결하는 데 도움이 될 수 있는 이벤트 스트림의 사용 사례가 많이 있습니다. 비즈니스 성과를 향상시킬 수 있는 방법을 찾고 있다면 이벤트 스트림 처리를 사용하는 것을 고려해 보십시오.

반응형