스트리밍 데이터란 무엇인가요?

스트리밍 데이터는 짧은 대기 시간 처리를 목표로 계속해서 증분하는 방식으로 내보내지는 대용량 데이터입니다. 조직은 보통 몇 바이트부터 메가바이트(MB)에 이르는 다양한 크기의 메시지, 레코드 또는 데이터를 동시에 내보내는 수천 개의 데이터 소스를 보유합니다. 스트리밍 데이터에는 기업이 자사 비즈니스의 여러 측면에 대한 실시간 분석을 수행하고 가시성을 얻기 위해 사용하는 위치, 이벤트, 센서 데이터가 포함됩니다. 예를 들어 기업이 클릭스트림 분석과 소셜 미디어 스트림의 고객 게시물을 지속적으로 분석하여 자사 브랜드와 제품에 대한 여론 변화를 추적하고, 필요에 따라 즉각 반응할 수 있습니다.

스트리밍 데이터의 특징에는 어떤 것들이 있나요?

데이터 스트림은 다음과 같은 구체적인 특성에 따라 정의됩니다.

시간순 중요성

데이터 스트림의 각 요소에는 타임 스탬프가 포함됩니다. 데이터 스트림 자체가 시간에 민감할 수 있지만, 특정 기간 이후에는 그 중요성이 감소될 수 있습니다. 예를 들어 사용자의 현재 위치에 기반하여 식당 추천을 생성하는 애플리케이션을 가정해 볼 수 있습니다. 사용자의 실시간 지리적 위치 데이터에 따라 반응하지 않으면 데이터는 중요성을 상실합니다.

지속적 흐름

데이터 스트림에는 시작도 끝도 없습니다. 요구되는 만큼 데이터를 끊임없이 지속적으로 수집합니다. 예를 들어 서버 활동 로그는 서버가 실행되는 동안 계속 누적됩니다.

고유성

데이터 스트림 전송을 반복하는 것은 시간적 민감성 때문에 쉽지 않은 일입니다. 따라서 정확한 실시간 데이터 처리가 중요합니다. 안타깝게도 재전송에 대한 프로비저닝은 대부분의 스트리밍 데이터 소스에서 제한됩니다.

비균질성

일부 소스는 문자열, 숫자, 날짜, 이진(Binary) 유형을 포함하는 데이터 유형을 JSON, Avro, 쉼표로 구분된 값(CSV) 등 여러 가지 구조화된 형식으로 스트리밍할 수 있습니다. 스트림 처리 시스템에는 이러한 데이터 변형을 처리할 수 있는 기능이 있어야 합니다.

불완전성

소스의 일시적인 오류는 스트리밍된 데이터 내의 요소에 손상 또는 누락을 유발할 수 있습니다. 스트림의 지속성이라는 특징 때문에 데이터 일관성을 보장하기가 어려울 수 있습니다. 스트림 처리 및 분석 시스템은 이러한 오류를 완화 또는 최소화하기 위해 일반적으로 데이터 검증 로직을 포함합니다.

스트리밍 데이터가 중요한 이유는 무엇인가요?

기존의 데이터 처리 시스템은 중앙 데이터 웨어하우스에서 데이터를 캡처하여 이를 그룹 또는 배치 단위로 처리합니다. 이러한 시스템은 분석 전에 데이터를 수집하고 구조화하도록 구축되었습니다. 그러나 최근 몇 년에 걸쳐 기업 데이터의 성격과 기본 데이터 처리 시스템이 크게 변화했습니다.

무한한 데이터 볼륨

스트림 소스로부터 생성된 데이터 볼륨은 굉장히 크기 마련이고, 이에 따라 스트리밍 데이터의 무결성(검증), 구조(진화) 또는 속도(스루풋 및 지연 시간)을 규제하기 위한 실시간 분석이 까다로운 과제가 됩니다.

고급 데이터 처리 시스템

그와 동시에, 클라우드 인프라는 컴퓨팅 리소스의 확장과 사용량에 있어 유연성을 도입했습니다. 정확히 필요한 만큼만 사용하고 사용한 만큼에 대해서만 비용을 지불하면 됩니다. 스트리밍 데이터 저장 전후 언제라도 실시간 필터링 또는 집계 옵션을 이용할 수 있습니다. 스트리밍 데이터 아키텍처는 클라우드 기술을 사용하여 스트리밍 데이터를 필요한 만큼 소비, 강화, 분석 및 영구 저장합니다.

스트리밍 데이터의 사용 사례에는 어떤 것이 있나요?

스트리밍 처리 시스템은 새로운 동적 데이터가 지속적으로 생성되는 시나리오 대부분에서 유용합니다. 대부분의 산업 부문과 빅 데이터 사용 사례가 이에 해당합니다.

일반적으로 기업은 최소-최대 컴퓨팅 롤링 같은 기본적인 처리와 시스템 로그 수집 등 간단한 애플리케이션으로 시작합니다. 그리고 이러한 애플리케이션이 좀 더 정교한 거의 실시간 처리로 진화하게 됩니다.

스트리밍 데이터의 예시를 몇 가지 더 보여드리겠습니다.

데이터 분석

애플리케이션이 데이터 스트림을 처리하여 보고서를 생산하고, 이에 대한 응답으로 주요 측정치가 특정 임계값을 초과할 때 경보를 내보내는 작업을 수행합니다. 더욱 복잡한 스트림 처리 애플리케이션은 기계 학습 알고리즘을 비즈니스와 고객 활동 데이터에 적용하여 더 심층적인 인사이트를 추출합니다.

IoT 애플리케이션

사물 인터넷(IoT) 디바이스는 스트리밍 데이터의 또다른 사용 사례입니다. 차량, 산업 장비 및 농기계에 있는 센서는 스트리밍 애플리케이션에 데이터를 전송합니다. 애플리케이션은 성능을 모니터링하고, 잠재적인 결함을 사전에 탐지하며, 예비 부품을 자동으로 주문하여 장비 가동 중지 시간을 방지합니다.

금융 분석

금융 기관은 스트리밍 데이터를 사용해 주식 시장의 변화를 실시간으로 추적하고, VaR(Value at Risk)을 계산하고, 주식 가격 변동에 따라 포트폴리오를 자동으로 조정합니다. 다른 금융 사용 사례로 스트리밍 거래 데이터에 대한 실시간 추론을 사용한 신용카드 거래의 사기 탐지가 있습니다.

실시간 추천

부동산 애플리케이션은 소비자의 모바일 디바이스로부터 지리 위치 데이터를 추적하여 방문할 부동산을 실시간으로 추천합니다. 이와 비슷하게 광고, 식품, 소매, 소비자 애플리케이션은 실시간 추천을 통합하여 고객에게 더 높은 가치를 제공할 수 있습니다.

서비스 보장

애플리케이션과 장비의 서비스 수준 추적 및 유지 관리를 위해 데이터 스트림 처리를 구현할 수 있습니다. 예를 들어, 태양열 발전 회사는 고객을 위한 전력 처리량을 유지해야 하며, 그러지 못할 경우 벌금을 내야 합니다. 이 회사는 현장의 모든 패널을 모니터링하고 서비스를 실시간으로 예약하는 스트리밍 데이터 애플리케이션을 구현함으로써 각 패널에서 처리량이 낮은 기간과 이에 따른 벌금 지불을 최소화할 수 있습니다.

미디어 및 게임

미디어 퍼블리셔는 자신의 온라인 매체에서 수십억 개의 클릭스트림 레코드를 스트리밍하고 사용자에 대한 인구통계학적 정보가 담긴 데이터를 수집 및 강화하여, 콘텐츠 배치를 최적화합니다. 퍼블리셔는 이를 통해 오디언스에게 더 훌륭하고 관련성 높은 경험을 제공할 수 있습니다. 이와 비슷하게, 온라인 게임 회사는 이벤트 스트림 처리를 사용하여 플레이어와 게임의 상호 작용을 분석하고 동적인 경험을 제공하여 플레이어의 참여를 유도합니다.

위험 관리

라이브 스트리밍 및 소셜 플랫폼은 충전, 환불, 보상과 같은 사용자의 금융 활동에 대한 위험 관리를 위해 사용자 행동 데이터를 실시간으로 캡처합니다. 그리고 위험 전략을 유연하게 조정하기 위해 실시간 대시보드를 확인합니다.

배치 데이터와 스트리밍 데이터의 차이점은 무엇인가요?

배치 처리는 컴퓨터가 주기적으로 대량의 반복적인 데이터 작업을 완료하기 위해 사용하는 방식입니다. 이를 서로 다른 데이터 세트에 대한 임의 쿼리를 컴퓨팅하는 데 사용할 수 있습니다. 일반적으로 배치 처리는 포함되는 모든 데이터로부터 컴퓨팅 가능한 결과를 도출하고 빅 데이터 세트를 심층적으로 분석할 수 있게 해줍니다. Amazon EMR과 같은 MapReduce 기반 시스템이 배치 작업을 지원하는 플랫폼의 예입니다.

반면에 스트림 처리는 데이터 시퀀스를 수집하고, 수신되는 각 데이터 레코드에 대한 응답으로 지표, 보고서 및 요약 통계를 증분식으로 업데이트합니다. 이 방식은 실시간 분석 및 응답 기능에 더 적합합니다.

  배치 처리

스트림 처리

데이터 범위

데이터 세트의 모든 또는 대부분 데이터를 쿼리하거나 처리.

롤링 타임 윈도우 내 데이터 또는 가장 최신 데이터 레코드의 데이터를 쿼리하거나 처리.

데이터 크기


대규모 데이터 배치.

일부 레코드로 구성된 마이크로 배치 또는 개별 레코드.

성능

  지연 시간이 몇 분에서 몇 시간.

몇 초 또는 몇 밀리초의 지연 시간이 필요.

분석

복잡한 분석. 간단한 응답 기능, 수집 및 롤링 지표.

많은 조직에서 이 두 접근 방식을 결합하여 하이브리드 모델을 구축하고 있으며, 실시간 계층과 배치 계층을 유지 관리합니다. 예를 들어 Amazon Kinesis와 같은 스트리밍 데이터 플랫폼에서 먼저 데이터를 처리하여 실시간 인사이트를 추출합니다. 그러면 사용자는 이를 Amazon Simple Storage Service(S3) 같은 저장소에 계속 둘 수 있습니다. 이 저장소에서 데이터는 다양한 배치 처리 사용 사례를 위해 변환 및 로드될 수 있습니다.

Amazon Redshift Streaming Ingestion을 사용하면 데이터를 Amazon S3에 스테이징하지 않고도 Amazon Kinesis Data Streams에서 직접 수집할 수 있습니다. 이 서비스는 Amazon Managed Streaming for Apache Kafka(Amazon MSK)에서 Amazon Redshift로 데이터를 수집할 수도 있습니다.

스트리밍 데이터는 어떤 방식으로 처리하나요?

스트리밍 데이터 아키텍처에는 두 가지 주요 구성 요소 유형이 포함됩니다.

스트림 생산자

스트림 생산자는 데이터를 수집하는 애플리케이션 및 IoT 시스템의 소프트웨어 구성 요소입니다. 이 구성 요소는 스트림 이름, 데이터 값 및 시퀀스 번호가 포함된 레코드를 스트림 프로세서로 전송합니다. 프로세서는 데이터 레코드를 버퍼링하거나 일시적으로 스트림 이름에 따라 그룹화하고, 시퀀스 번호를 사용하여 각 레코드의 고유 위치를 추적하고, 데이터를 시간순으로 처리합니다.

스트림 소비자

스트림 소비자는 프로세서에 버퍼링된 데이터 스트림을 처리 및 분석하는 소프트웨어 구성 요소입니다. 각 소비자는 상관관계, 집계, 필터링, 샘플링, 기계 학습과 같은 분석 기능을 보유합니다. 각 스트림은 여러 소비자를 가질 수 있으며, 각 소비자는 수많은 스트림을 처리할 수 있습니다. 소비자는 또한 변경된 데이터를 프로세서에 다시 전송하여 다른 소비자를 위한 새로운 스트림을 생성하도록 할 수 있습니다.

아키텍처 구현

스트리밍 데이터 아키텍처를 구현하려면 스토리지와 처리 계층이 필요합니다. 스토리지 계층은 대규모 데이터 스트림을 빠르고, 저렴하고, 재생 가능한 방식으로 읽고 쓸 수 있도록 레코드 정렬 및 강력한 일관성을 지원해야 합니다. 처리 계층은 스토리지 계층의 데이터를 사용하고 해당 데이터에 대한 컴퓨팅을 실행한 다음, 더 이상 필요 없는 데이터를 삭제하도록 스토리지 계층에 알리는 작업을 담당합니다.

스트리밍 데이터 사용 시 문제점에는 어떤 것이 있나요?

스트리밍 데이터 아키텍처는 데이터의 특성 및 볼륨으로 인해 특별한 고려 사항이 요구됩니다.

가용성

스트리밍 데이터 애플리케이션은 일관성, 짧은 대기 시간, 고가용성을 필요로 합니다. 소비자는 지속적으로 스트림에서 새로운 데이터를 가져가 처리합니다. 생산자 측에서 지연이 발생하면 시스템에 정체가 발생하고 오류를 유발할 수 있습니다.

확장성

원시 데이터 스트림은 갑자기 예기치 못하게 급증할 수 있습니다. 예를 들어, 소셜 미디어 게시물은 대형 스포츠 행사 동안 급증합니다. 따라서 시스템은 피크 로드 중에도 적절한 데이터 시퀀싱, 가용성, 일관성을 우선시해야 합니다.

내구성

데이터의 시간에 민감한 특성 때문에 스트림 처리 시스템은 내결함성이 있어야 합니다. 그렇지 않으면 중단 또는 장애가 발생했을 때 데이터가 완전히 손실될 수 있습니다.

AWS는 스트리밍 데이터 요구 사항을 어떻게 지원하나요?

AWS는 스트리밍 데이터를 사용하여 작업할 수 있는 옵션을 여러 가지 제공합니다. 

Amazon Kinesis

Kinesis는 AWS상의 스트리밍 데이터를 위한 플랫폼입니다. 스트리밍 데이터를 손쉽게 로드 및 분석할 수 있는 강력한 서비스를 제공하고, 특정 요구에 맞게 사용자 지정 스트리밍 데이터 애플리케이션을 구축할 수 있는 기능을 제공합니다.

Kinesis는 Amazon Kinesis Data Firehose, Amazon Kinesis Data Streams 및 Amazon Managed Streaming for Apache Kafka(Amazon MSK)의 세 가지 서비스를 제공합니다.

Kinesis Data Firehose

Kinesis Data Firehose는 스트리밍 데이터를 캡처하고 자동으로 Amazon Simple Storage Service(S3)Amazon Redshift에 로드할 수 있습니다. 이 서비스는 현재 사용 중인 기존의 비즈니스 인텔리전스 도구 및 대시보드를 통해 실시간으로 분석을 수행할 수 있습니다.

Kinesis Data Streams

Kinesis Data Streams는 수백, 수천 군데의 소스에서 시간당 몇 테라바이트 규모의 데이터를 계속해서 캡처하고 저장할 수 있습니다. 사용자는 Amazon Kinesis Client Library(KCL), Apache Storm, Apache Spark Streaming을 비롯하여 원하는 스트림 처리 프레임워크를 사용할 수 있습니다.

Amazon MSK

Amazon MSK는 완전관리형 서비스로, Apache Kafka를 사용하여 스트리밍 데이터를 처리하는 애플리케이션의 구축 및 실행을 간소화합니다. Apache Kafka는 실시간 스트리밍 데이터 파이프라인 및 애플리케이션을 구축하기 위한 오픈 소스 플랫폼입니다. 

Amazon Redshift

Amazon Redshift Streaming Ingestion은 다수의 Kinesis 데이터 스트림에서 실시간 분석을 위해 스트리밍 데이터를 데이터 웨어하우스로 수집합니다. 익숙한 SQL을 사용하여 다양한 분석을 수행하고 ELT 파이프라인을 쉽게 생성 및 관리할 수 있습니다. 또한 대량 볼륨의 스트리밍 데이터를 짧은 대기 시간과 높은 처리량으로 처리하여 몇 초만에 인사이트를 얻을 수 있습니다.

Amazon EC2의 기타 스트리밍 솔루션

Amazon Elastic Compute Cloud(Amazon EC2)Amazon EMR에 원하는 스트리밍 데이터 플랫폼을 설치하고 사용자 지정 스트림 스토리지와 처리 계층을 구축할 수 있습니다. 이렇게 하면, 인프라 프로비저닝의 어려움을 피하고 다양한 스트림 스토리지와 처리 프레임워크에 액세스할 수 있습니다. 데이터 스토리지 계층으로 Amazon MSKApache Flume을 선택할 수 있고, 스트림 처리 계층으로는 Apache Spark StreamingApache Storm을 선택할 수 있습니다.

지금 무료 AWS 계정을 만들어 AWS에서 스트리밍 데이터를 시작하세요.

AWS 스트리밍 데이터 다음 단계

무료 계정에 가입

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

가입 
콘솔에서 구축 시작하기

AWS 관리 콘솔에서 구축을 시작하세요.

로그인