스트리밍 데이터란 무엇입니까?
스트리밍 데이터는 수천 개의 데이터 원본에서 연속적으로 생성되는 데이터로서, 보통 데이터 레코드를 작은 크기(KB 단위)로 동시에 전송합니다. 스트리밍 데이터에는 모바일이나 웹 애플리케이션을 사용하는 고객이 생성하는 로그 파일, 전자 상거래 구매, 게임 내 플레이어 활동, 소셜 네트워크의 정보, 주식 거래소, 지리공간 서비스, 연결된 디바이스의 텔레메트리, 데이터 센터의 계측 등 다양한 데이터가 포함됩니다.
이러한 데이터는 레코드별로 또는 슬라이딩 타임 윈도우에 따라 증분 방식으로 순차적으로 처리되어야 하며, 상관관계, 집계, 필터링, 샘플링을 비롯한 다양한 분석에 사용됩니다. 이러한 분석으로 도출된 정보는 기업에 비즈니스 및 고객 활동의 다양한 측면(계량/청구를 위한 서비스 사용량, 서버 활동, 웹 사이트 클릭, 디바이스, 사람 및 물리적 상품의 지리적 위치 등)에 대한 가시성을 제공하여 발생하는 상황에 빠르게 대응할 수 있게 해줍니다. 예를 들어 비즈니스에서는 소셜 미디어 스트림을 지속적으로 분석함으로써 자사 브랜드와 상품에 대한 대중의 감정 변화를 추적하여 필요한 경우 시의적절하게 대응할 수 있습니다.
스트리밍 데이터의 이점
스트리밍 데이터 처리는 새로운 동적 데이터가 지속적으로 생성되는 시나리오 대부분에서 유용합니다. 대다수 산업 부문과 빅 데이터 사용 사례가 이에 해당합니다. 일반적으로 기업은 최소-최대 컴퓨팅 롤링 같은 기본적인 처리와 시스템 로그 수집 등 간단한 애플리케이션으로 시작합니다. 그리고 이러한 애플리케이션이 좀 더 정교한 거의 실시간 처리로 진화하게 됩니다. 초기에는 애플리케이션이 데이터 스트림을 처리하여 간단한 보고서를 생산하고, 이에 대한 응답으로 주요 측정치가 특정 임계값을 초과할 때 경보를 내보내는 간단한 작업을 수행했습니다. 현재는 이러한 애플리케이션이 기계 학습 알고리즘을 적용하고 데이터에서 심도 있는 통찰력을 추출하는 등 더욱 정교한 형태의 데이터 분석을 수행합니다. 시간이 지나면서, 가장 인기 있는 최신 영화를 찾는 '타임 윈도우 감소' 알고리즘과 같은 스트림 및 이벤트 처리 알고리즘이 적용되어 통찰력이 강화되었습니다.
스트리밍 데이터의 예
- 운송 차량, 산업 장비 및 농기계에 있는 센서는 스트리밍 애플리케이션에 데이터를 전송합니다. 애플리케이션에서는 성능을 모니터링하고, 잠재적인 결함을 사전에 탐지하며, 예비 부품을 주문하여 자동으로 장비 가동 중지 시간을 방지합니다.
- 금융 기관은 주식 시장의 변화를 실시간으로 추적하고, VaR(Valeu at Risk)를 계산하고, 주식 가격 변동에 따라 포트폴리오를 자동으로 조정합니다.
- 부동산 웹 사이트는 고객의 모바일 디바이스에서 데이터 하위 세트를 추적하여 고객의 지리적 위치에 따라 방문할 부동산을 실시간으로 추천합니다.
- 태양열 전력 회사는 고객을 위한 전력 처리량을 유지해야 하며, 그렇지 못한 경우 벌금을 내야 합니다. 이 회사는 현장의 모든 패널을 모니터링하고 서비스를 실시간으로 예약하는 스트리밍 데이터 애플리케이션을 구현함으로써 각 패널에서 처리량이 낮은 기간과 이에 따른 벌금 지불을 최소화했습니다.
- 미디어 출판사는 온라인 자산에서 발생하는 수십억 개의 클릭스트림 레코드를 스트리밍하고, 사용자에 대한 인구통계학적 정보가 담긴 데이터를 수집 및 강화하여, 사이트의 콘텐츠 배치를 최적화함으로써 관련성과 더 나은 경험을 제공합니다.
- 온라인 게임 회사는 플레이어와 게임 간의 상호 작용 데이터에 관한 스트리밍 데이터를 수집하고 이 데이터를 게임 플랫폼에 전송합니다. 그런 다음 실시간으로 데이터를 분석하여 플레이어의 참여를 유도하는 혜택과 동적 경험을 제공합니다.
배치 처리와 스트림 처리 비교
스트리밍 데이터를 살펴보기 전에 스트림 처리와 배치 처리를 비교해 보면 도움이 될 것입니다. 배치 처리는 서로 다른 데이터 세트에 대한 임의 쿼리를 컴퓨팅하는 데 사용할 수 있습니다. 일반적으로 배치 처리는 쿼리에 포함되는 모든 데이터에서 도출된 결과를 컴퓨팅하고 빅 데이터 세트를 심층적으로 분석할 수 있게 해줍니다. Amazon EMR과 같은 MapReduce 기반 시스템이 배치 작업을 지원하는 플랫폼의 예입니다. 반면에 스트림 처리는 데이터의 시퀀스를 수집하고, 수신되는 각 데이터 레코드에 대한 응답으로 지표, 보고서 및 요약 통계를 증분식으로 업데이트합니다. 실시간 모니터링 및 응답 기능에 적합합니다.
일괄 처리 | 스트림 처리 | |
데이터 범위 | 데이터 세트의 모든 또는 대부분 데이터를 쿼리하거나 처리. | 롤링 타임 윈도우 내 데이터 또는 가장 최신 데이터 레코드의 데이터를 쿼리하거나 처리. |
데이터 크기 | 대규모 데이터 배치. |
일부 레코드로 구성된 마이크로 배치 또는 개별 레코드. |
성능 | 지연 시간이 몇 분에서 몇 시간. | 몇 초 또는 몇 밀리초의 지연 시간이 필요. |
분석 | 복잡한 분석. | 간단한 응답 기능, 수집 및 롤링 지표. |
많은 조직에서 이 두 접근 방식을 결합하여 하이브리드 모델을 구축하고 있으며, 실시간 계층과 배치 계층을 유지 관리합니다. 데이터는 Amazon Kinesis와 같은 스트리밍 데이터 플래폼에서 처리하여 실시간 통찰력을 확보한 다음, S3 같은 스토어에 유지합니다. 스토어의 데이터는 다양한 배치 처리 사용 사례에 맞게 변환 및 로드됩니다.
스트리밍 데이터 사용 시 문제점
AWS에서 스트리밍 데이터 사용하기
Amazon Web Services(AWS)에서는 스트리밍 데이터를 사용할 수 있도록 여러가지 옵션을 제공합니다. Amazon Kinesis에서 제공하는 관리형 스트리밍 데이터 서비스를 활용하거나, 클라우드에서 Amazon EC2상에 자체 스트리밍 데이터 솔루션을 배포 및 관리할 수 있습니다.
Amazon Kinesis는 AWS의 스트리밍 데이터를 위한 플랫폼으로서, 스트리밍 데이터를 손쉽게 로드 및 분석할 수 있는 강력한 서비스를 제공하고, 특수 요구에 맞게 커스텀 스트리밍 데이터 애플리케이션을 구축할 수 있는 기능을 제공합니다. Amazon Kinesis Data Firehose, Amazon Kinesis Data Streams 및 Amazon Managed Streaming for Apache Kafka(Amazon MSK), 이렇게 세 가지 서비스를 제공합니다.
이 외에도 Amazon EC2와 Amazon EMR에서 Apache Flume, Apache Spark Streaming, Apache Storm 등과 같은 다른 스트리밍 데이터 플랫폼을 실행할 수 있습니다.
Amazon Kinesis Data Streams
Amazon Kinesis Data Streams를 사용하면 특수 요구에 맞게 스트리밍 데이터를 처리 또는 분석하는 커스텀 애플리케이션을 구축할 수 있습니다. 수많은 소스에서 시간당 몇 테라바이트 규모의 데이터를 계속해서 캡처하고 저장할 수 있습니다. 그런 다음 Amazon Kinesis Data Streams의 데이터를 사용하여 실시간 대시보드를 지원하고, 경보를 생성하며, 동적 요금 및 광고를 구현하는 애플리케이션을 구축할 수 있습니다. Amazon Kinesis Data Streams에서는 Kinesis Client Library(KCL), Apache Storm, Apache Spark Streaming을 비롯해서 원하는 스트림 처리 프레임워크를 사용할 수 있습니다.
Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose는 스트리밍 데이터를 AWS로 로드하는 가장 쉬운 방법입니다. 스트리밍 데이터를 캡처하여 자동으로 Amazon S3 및 Amazon Redshift로 로드함으로써 기존 비즈니스 인텔리전스 도구 및 이미 사용하고 있는 대시보드를 통해 거의 실시간으로 분석할 수 있습니다. 또한, ELT 접근 방식을 신속하게 구현하고 스트리밍 데이터의 이점을 빠르게 활용할 수 있습니다.
Amazon Managed Streaming for Apache Kafka(Amazon MSK)
Amazon MSK는 Apache Kafka를 사용하여 스트리밍 데이터를 처리하는 애플리케이션의 구축 및 실행을 간소화하는 완전관리형 서비스입니다. Apache Kafka는 실시간 스트리밍 데이터 파이프라인 및 애플리케이션을 구축하기 위한 오픈 소스 플랫폼입니다. Amazon MSK를 통해 네이티브 Apache Kafka API를 사용하여 데이터 레이크를 채우고, 데이터베이스와 변경 사항을 스트리밍 방식으로 주고받으며, 기계 학습 및 분석 애플리케이션을 지원할 수 있습니다.
Amazon EC2의 스트리밍 솔루션
Amazon EC2와 Amazon EMR에 원하는 스트리밍 데이터 플랫폼을 설치하고 자체 스트림 스토리지와 처리 계층을 구축할 수 있습니다. Amazon EC2와 Amazon EMR상에 스트리밍 데이터 솔루션을 구축하면, 인프라 프로비저닝의 번거로움 없이 다양한 스트림 스토리지와 처리 프레임워크에 액세스할 수 있습니다. 스트리밍 데이터 스토리지 계층으로 Amazon MSK와 Apache Flume을 선택할 수 있고, 스트림 처리 계층으로는 Apache Spark Streaming과 Apache Storm을 선택할 수 있습니다.
다음 단계
- Amazon MSK에 대해 자세히 알아보기
- Amazon Kinesis에 대해 자세히 알아보기
- AWS 빅 데이터 서비스에 대해 알아보기
- Amazon EMR 기반 Apache Spark 페이지 확인하기
- Amazon Kinesis Data Firehose와 Amazon Redshift를 사용하여 클릭 몇 번만으로 스트리밍 데이터를 통찰력으로 변환하기