데이터 스트리밍이란 무엇입니까?
데이터 스트리밍은 가치 있는 통찰력을 얻기 위해 일반적으로 스트림 처리 소프트웨어에 공급되는 연속적인 데이터 흐름(스트림이라고도 함)을 전송하는 프로세스입니다. 데이터 스트림은 시간에 따라 정렬된 일련의 데이터 요소로 구성됩니다. 데이터는 비즈니스에서 발생한 "이벤트" 또는 상태 변화를 나타내며 기업이 종종 이런 이벤트 또는 변화를 실시간으로 알고 분석하는 데 유용합니다. 데이터 스트림의 몇 가지 예에는 센서 데이터, 웹 브라우저의 활동 로그 및 금융 거래 로그가 포함됩니다. 데이터 스트림은 데이터 요소를 데이터 프로세서에 운반하여 지속적으로 공급하는 무한 컨베이어 벨트로 묘사할 수 있습니다.
사물 인터넷(IoT)의 성장과 고객의 기대치에 따라 데이터 스트리밍 및 스트림 처리의 중요성이 높아졌습니다. 개인 건강 모니터와 가정 보안 시스템은 데이터 스트리밍 소스의 두 가지 예입니다. 가정 보안 시스템에는 집의 여러 영역을 모니터링하는 여러 모션 센서가 포함되어 있습니다. 이러한 센서는 예기치 않은 활동을 실시간으로 모니터링하거나 감지하기 어려운 패턴을 나중에 분석하기 위해 데이터를 저장하는 처리 인프라로 지속적으로 전송되는 데이터 스트림을 생성합니다. 건강 모니터는 심장 박동, 혈압 또는 산소 모니터를 포함한 데이터 스트리밍 소스의 또 다른 예입니다. 이러한 장치는 지속적으로 데이터를 생성합니다. 이런 데이터는 인간의 안전과 관련될 수 있기 때문에 시기 적절하게 분석하는 것이 중요합니다.
데이터 스트림의 일반적인 특성은 무엇입니까?
센서, 웹 브라우저 및 기타 모니터링 시스템에서 나오는 스트리밍 데이터에는 기존의 과거 데이터와 구별되는 특별한 특성이 있습니다. 다음은 스트림 데이터의 몇 가지 주요 특성입니다.
시간 민감성
데이터 스트림의 각 요소는 타임스탬프를 전달합니다. 데이터 스트림은 시간에 민감하며 특정 시간이 지나면 중요성을 잃게 됩니다. 예를 들어, 의심스러운 움직임을 나타내는 홈 보안 시스템의 데이터는 관련성을 유지하기 위해 짧은 시간 내에 분석 및 처리되어야 합니다.
연속성
스트리밍 데이터에는 시작도 끝도 없습니다. 데이터 스트림은 연속적이고 실시간으로 발생하지만 시스템 요구 사항에 따라 항상 그 순간에 실행되는 것은 아닙니다.
불균일
스트림 데이터는 지리적으로 멀리 떨어져 있을 수 있는 수천 개의 서로 다른 소스에서 오는 경우가 많습니다. 소스의 불일치로 인해 스트림 데이터에는 다양한 형식이 혼합되어 있을 수 있습니다.
불완전성
소스의 다양성과 데이터 전송 메커니즘의 차이로 인해 데이터 스트림에 데이터 요소가 누락되거나 손상될 수 있습니다. 또한 스트림의 데이터 요소가 순서대로 도착하지 않을 수 있습니다.
휘발성 및 반복 불가성
데이터 스트리밍이 실시간으로 이루어지기 때문에 스트림을 반복적으로 전송하는 것은 상당히 어렵습니다. 재전송에 대한 조항이 있지만 새 데이터는 마지막 데이터와 동일하지 않을 수 있습니다. 이로부터 데이터 스트림은 휘발성이 높습니다. 그러나 많은 최신 시스템은 데이터 스트림의 기록을 유지하므로 현재 액세스할 수 없더라도 나중에 분석할 수 있습니다.

비즈니스에 대한 데이터 스트리밍의 중요성은 무엇입니까?
스트림 형식의 데이터는 오늘날 세계에서 매우 중요합니다. 수많은 IoT 장치와 인터넷 사용자는 초당 엄청난 양의 연속적인 실시간 데이터를 생성합니다. 이 데이터를 실시간으로 처리하는 것은 조직에 있어서 도전이자 기회입니다.
변화되는 데이터의 특성
전통적으로 조직은 시간에 따른 데이터를 수집하여 데이터 웨어하우스에 저장하고 일괄 처리합니다. 이렇게 하면 부족한 컴퓨팅 성능이 절약됩니다. 최근 몇 년 동안 데이터 구조와 처리 기술에서 큰 변화가 있었습니다. IoT는 스트림 데이터를 생성하는 다양한 센서를 도입했습니다. 신용 카드 및 온라인 금융 거래도 분석 및 검증을 필요로 하는 실시간 데이터를 생성합니다. 웹 브라우저는 온라인 트랜잭션 및 활동 로그를 생성합니다. 데이터 스트리밍 및 스트림 처리는 이러한 유형의 데이터를 처리하는 데 필수적입니다.
대용량 데이터
매초 생성되는 데이터의 양은 데이터 웨어하우스에 저장하기에는 너무 많습니다. 따라서 스트림 데이터는 실시간 데이터의 핵심인지 여부를 판단하기 위해 즉시적으로 평가되는 경우가 많습니다. 결과적으로 시스템은 데이터를 스트리밍하고 즉시 분석하여 저장되는 항목과 저장하지 않는 항목을 결정할 수 있으며 이를 통해 조직은 데이터 손실, 데이터 저장을 줄이고 인프라 비용을 절감할 수 있습니다.
데이터 스트리밍의 예
사물 인터넷: IoT에는 센서를 사용하여 데이터를 수집하고 실시간으로 데이터 프로세서에 전송하는 수많은 장치를 포함하고 있습니다. IoT 데이터는 스트림 데이터를 생성합니다. 워치와 같은 웨어러블 건강 모니터, 가정 보안 시스템, 교통 모니터링 시스템, 생체 인식 스캐너, 연결된 가전 제품, 사이버 보안 및 개인 정보 보호 시스템은 실시간으로 데이터를 생성하고 스트리밍합니다.
실시간 주식 시장 모니터: 실시간 금융 데이터는 종종 스트림 형식으로 전송됩니다. 금융 데이터(예: 주가 및 시장 동향)의 처리 및 분석은 조직에 중요한 결정을 빠르게 내리는 데 도움을 줍니다.
활동 및 트랜잭션 로그: 인터넷은 실시간 스트림 데이터의 주요 소스이기도 합니다. 사람들이 웹사이트를 방문하거나 링크를 클릭하면 웹 브라우저는 활동 로그를 생성합니다. 신용 카드 구매와 같은 온라인 금융 거래도 실시간 조치를 위해 스트리밍 및 처리할 수 있는 시간이 긴급한 데이터를 생성합니다.
프로세스 모니터: 모든 회사는 내부 시스템에서 수십억 개의 데이터 포인트를 생성합니다. 기업은 이 데이터를 스트리밍하고 실시간으로 처리함으로써 시스템 상태를 모니터링하고 상황이 확대되기 전에 조치를 취할 수 있습니다. 예를 들어, 제조 회사에는 종종 조립 라인의 상태를 모니터링하고 결함을 감지하여 생산 위험을 평가하는 장치가 있습니다. 이러한 장치는 또한 시간적으로 긴급한 데이터를 스트리밍하여 중지를 모니터링하고 방지할 수도 있습니다.
스트림 처리란 무엇입니까? 어떻게 작동합니까?
스트리밍이나 라이브 데이터를 처리하려면 기존의 배치 프로세싱과 상당히 다른 프로세스가 필요합니다. 스트림 프로세서는 데이터의 지속적인 흐름을 수집, 분석 및 시각화합니다. 물론 처리하려면 데이터 스트리밍부터 시작해야 합니다. 데이터 스트리밍은 스트림 처리의 시작입니다. 스트림 처리는 데이터 스트림을 가져와서 종종 실시간으로 데이터 스트림에서 통찰력을 얻는 데 사용됩니다. 스트리밍 데이터의 고유한 특성으로 인해 스트림 프로세서는 다음 요구 사항을 충족해야 합니다.
짧은 대기 시간
스트림 프로세서는 연속적인 데이터 스트림에서 빠르게 작동해야 합니다. 처리 속도는 다음의 두 가지 이유로 인해 주요 관심사로 되고 있습니다. 첫째, 데이터는 연속 스트림으로 들어오게 되는 데 프로세서가 느려서 데이터를 놓치면 되돌릴 수 없습니다. 둘째, 스트리밍 데이터는 짧은 시간에 관련성을 잃습니다. 모든 처리 지연은 데이터의 가치를 저하시킵니다.
확장성
스트리밍 데이터의 양이 항상 같지는 않습니다. 예를 들어, 센서는 종종 적은 양의 데이터를 생성할 수 있지만 때때로 데이터에 스파이크가 있을 수 있습니다. 데이터의 양은 예측할 수 없기 때문에 프로세서는 필요한 경우 많은 양의 데이터를 처리할 수 있도록 확장되어야 합니다.
가용성
스트림 프로세서는 긴 가동 중지 시간을 감당할 수 없습니다. 스트림 데이터는 연속적이며 실시간으로 도착합니다. 프로세서는 결함 내성이 있어야 합니다. 즉, 일부 구성 요소에 장애가 발생하더라도 계속 작동할 수 있어야 합니다. 또한 스트림 프로세서는 정보를 수집, 처리 및 즉시 상위 계층으로 전달하여 프레젠테이션을 수행할 수 있어야 합니다.
스트림 프로세서의 주요 구성 요소는 무엇입니까?
일반적으로 스트림 처리에는 다음의 두 가지 사용 사례가 있습니다.
데이터스트림 관리
데이터 스트림 관리에서 스트림 처리의 목적은 들어오는 데이터의 요약본을 생성하거나 모델을 구축하는 것입니다. 예를 들어, 연속적인 안면 데이터 스트림에서 스트림 프로세서는 안면 특징 목록을 생성할 수 있습니다. 이 사용 사례의 또 다른 예는 인터넷 활동 로그입니다. 지속적인 사용자 클릭 데이터 스트림에서 스트림 프로세서는 사용자의 선호도와 취향을 계산하려고 합니다.
이벤트 데이터 처리(Complex Event Processing)
복잡한 이벤트 처리는 대부분의 IoT 데이터 스트림에 적용되는 사용 사례입니다. 이 사용 사례에서 데이터 스트림은 이벤트 스트림으로 구성됩니다. 스트림 프로세서의 역할은 중요한 이벤트를 추출하고, 의미 있는 통찰력을 도출하고, 정보를 상위 계층으로 빠르게 전달하여 즉각적인 조치가 실시간으로 취해질 수 있도록 하는 것입니다.
일부 스트림 프로세서는 위의 사용 사례 중 하나만 처리하지만 일부 고급 프로세서는 둘 다 처리합니다. 사용 사례에 관계없이 스트림 프로세서의 종단 간 아키텍처에는 다음 기능이 포함되어 있어야 합니다.
데이터 생성
데이터 생성 시스템은 센서, 트랜잭션 모니터 및 웹 브라우저와 같은 다양한 원시 데이터 소스를 나타냅니다. 이런 소스는 스트림 처리 시스템이 소비할 데이터를 지속적으로 생성합니다.
데이터 수집 및 집계
위의 각 데이터 생성 소스는 소스에서 데이터를 수신하는 클라이언트와 연결됩니다. 이를 소스 클라이언트라고 합니다. 통합관리자는 여러 소스 클라이언트의 데이터를 수집하여 이동 중인 데이터를 중앙 데이터 버퍼로 보냅니다.
메시지 버퍼링
메시지 버퍼는 집계 에이전트에서 스트림 데이터를 가져와 논리 프로세서로 전달하기 전에 임시로 저장합니다. 메시지 버퍼에는 주제 기반 및 대기열 기반의 두 가지 주요 유형이 있습니다. 주제 기반 버퍼에서 들어오는 데이터는 주제라는 레코드 형식으로 저장됩니다. 한 명 이상의 데이터 생산자가 주제에 기여할 수 있습니다. 큐 기반 메시지 버퍼는 단일 생산자가 읽고 단일 데이터 소비자에게 전달하는 포인트 투 포인트 버퍼링 시스템에 근사합니다.
메시지 브로커
데이터 수집, 집계 및 메시지 버퍼링 시스템을 합하여 메시지 브로커 시스템을 형성합니다. 메시지 브로커의 기능은 다양한 소스에서 스트림 데이터를 집계하고 형식을 지정하고 연속 논리 처리 시스템으로 전달하는 것입니다.
연속 논리 처리
이것이 스트림 처리 아키텍처의 핵심입니다. 연속 논리 처리 하위 시스템은 들어오는 데이터 스트림에 대해 미리 정의된 다양한 쿼리를 실행하여 유용한 통찰력을 도출합니다. 쿼리는 XML 파일에 저장된 쿼리만큼 간단할 수 있습니다. 이러한 쿼리는 들어오는 데이터에 대해 지속적으로 실행됩니다. 이 하위 시스템은 사용자가 이러한 쿼리를 쉽게 생성할 수 있도록 선언적 명령 언어를 정의할 수 있습니다. 연속 논리 처리 시스템은 확장성과 결함 내성을 위해 분산 시스템에서 실행되는 경우가 많습니다. 수년에 걸쳐 논리 처리 시스템은 보다 쉬운 쿼리를 위한 쿼리 및 프로그래밍 API의 동적 수정을 지원하도록 발전해 왔습니다.
보관 및 프레젠테이션
이것들은 스트림 처리에서 두 가지 지원 시스템입니다. 스토리지 시스템은 입력 데이터 스트림의 요약을 유지하고 향후 참조에 사용할 수 있습니다. 또한 연속 데이터 스트림에서 실행되는 쿼리 결과를 저장합니다. 프레젠테이션 시스템은 소비자에게 데이터를 시각화하는 데 사용됩니다. 프레젠테이션 시스템에는 더 높은 수준의 분석 시스템이나 최종 사용자에 대한 경고가 포함될 수 있습니다.
스트림 처리 대 배치 프로세싱
전통적으로 조직은 판매 기록, 고객 상호 작용, 리뷰와 같은 다양한 소스에서 데이터를 수집하여 데이터 웨어하우스에 저장합니다. 그런 다음 이 데이터를 데이터 분석 시스템에서 일괄 처리합니다. 일괄 처리는 시간이 중요하지 않은 과거 데이터에서 작동하는 경우가 많습니다. 과거 데이터는 중요하지만 오늘날 많은 조직이 추구하는 실시간 통찰력을 제공하지 않습니다. 스트림 처리는 실시간 데이터에 대한 통찰력을 제공하고 신속하게 처리해야 합니다.
배치 프로세싱을 사용하면 데이터를 편리하게 저장하고 처리할 수 있는 유연성이 있지만 스트림 처리에는 실시간 또는 거의 실시간 작업이 필요합니다. 배치 프로세싱은 시간이 중요하지 않고 스트림 처리만큼 빠를 필요가 없는 데이터를 처리합니다. 스트림 처리와 비교할 때 배치 프로세싱은 분석을 기다리는 동안 데이터를 저장하기 위해 더 큰 인프라가 필요한 경우가 많습니다. 그러나 대부분의 조직은 오늘날의 시장에서 성공하기 위해 스트림과 배치 프로세싱의 조합이 필요합니다.

데이터 스트리밍 및 처리의 이점
스트림 처리 및 고수익
조직은 일반적으로 데이터에서 엄청난 가치를 이끌어낼 수 있습니다. 실시간 스트림 처리 기술은 조직이 시간에 민감한 데이터를 분석하여 잠재적인 문제에 신속하게 반응하고 대응할 수 있도록 지원합니다. 예를 들어, 스트림 분석은 금융 조직이 실시간 주가를 모니터링하고 시간상 긴급한 결정을 내리는 데 도움이 됩니다. 또한 실시간 시장 동향에 대한 정보를 알아내는 데도 도움이 됩니다. 조직은 실시간 스트림 처리 인프라와 함께 강력한 시각화 시스템을 통해 중요한 이벤트에 대한 응답 시간을 개선할 수 있습니다.
인프라 비용 절감
기존 데이터 처리에서는 데이터가 데이터 웨어하우스에 엄청난 양으로 저장되곤 합니다. 이러한 스토리지 시스템 및 하드웨어 비용은 일반적으로 조직에 부담으로 작용합니다. 그러나 스트림 처리를 사용하면 데이터가 대량으로 저장되지 않으므로 처리 시스템의 하드웨어 비용이 줄어듭니다.
예방 가능한 손실 감소
실시간 데이터 스트림을 통해 조직은 비즈니스 생태계를 지속적으로 모니터링할 수 있습니다. 실시간 데이터 스트림은 조직에 보안 침해 가능성, 제조 문제, 고객 불만, 금융 붕괴 또는 임박한 사회적 이미지 붕괴에 대한 정보를 지속적으로 제공합니다. 지속적인 데이터 스트리밍 및 처리를 통해 조직은 이러한 예방 가능한 문제를 피할 수 있습니다.
경쟁력 및 고객만족도 제고
실시간 데이터 처리를 통해 조직은 문제가 구체화되기 전에 가능한 사전에 해결할 수 있습니다. 이를 통해 조직은 경쟁자보다 시간을 얻게 되고 우위를 점하게 됩니다. 또한 데이터 스트리밍 및 처리는 고객 문제를 실시간으로 해결할 수 있으므로 고객 만족도를 높입니다. 지속적인 실시간 데이터 처리로 웨어하우스에 보관되어 처리를 기다리는 데이터로 인한 지연이 없습니다.
데이터 스트리밍 및 처리의 과제
데이터 스트리밍 및 처리 시스템은 변동성이 높은 실시간 연속 데이터를 처리합니다. 스트림 데이터는 종종 이질적이고 불완전합니다. 스트림 데이터는 그 본성으로 하여 데이터 스트리밍 및 처리에 많은 문제를 제기합니다.
데이터 볼륨 및 다양성
데이터 스트리밍은 방대한 양의 연속적인 실시간 데이터를 처리합니다. 데이터 손실 및 손상된 데이터 패킷은 데이터 스트리밍에서 흔히 볼 수 있는 문제입니다. 스트림 데이터는 이질적인 경우가 많으며 익서은 다양한 지리적 위치 및 각이한 애플리케이션에 기인됩니다. 데이터 스트리밍 및 처리 애플리케이션이 이 데이터의 특성으로 인해 이 데이터를 처리하는 것은 어려운 일입니다.
적시성
스트림 데이터의 관련성은 시간이 지남에 따라 감소하게 됩니다. 데이터 스트리밍 및 처리 시스템은 관련성이 있는 동안 데이터를 분석할 수 있을 만큼 충분히 빨라야 합니다. 스트림 데이터의 이러한 시간 긴급 특성은 고성능의 결함 내성 시스템을 요구합니다.
탄력성
스트림 데이터 볼륨은 날마다 증가하고 있습니다. 특정 수준의 서비스 품질을 유지하려면 스트림 처리 시스템이 부하에 동적으로 적응해야 합니다. 스트림 데이터 소스가 항상 많은 양의 데이터를 전송하는 것은 아닙니다. 이러한 경우 처리 시스템은 최소한의 리소스만 사용해야 합니다. 수요가 증가하면 시스템은 더 많은 리소스를 동적으로 할당해야 합니다. 이러한 탄력성에 대한 요구는 스트림 처리 시스템의 또 다른 과제입니다.
결함 내성
스트림 처리는 실시간으로 연속적으로 발생합니다. 스트리밍된 데이터는 반복되거나 완벽하게 재전송될 수 없습니다. 결과적으로 스트림 처리 시스템은 다운타임을 감당할 수 없습니다. 기존의 배치 프로세싱 시스템과 달리 데이터 수집과 처리 사이에 시간이 많지 않습니다. 시스템은 항상 사용 가능해야 하고 항상 작동해야 합니다. 시스템의 일부가 흔들리더라도 나머지 처리 시스템에는 영향을 미치지 않아야 합니다.