일상/IT

스트림 처리 작동 방식 이해

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

스트림 처리의 내부 작동 방식을 알아보고 대용량 실시간 데이터를 효율적으로 처리하는 방법에 대해 알아보십시오. 이 포괄적인 가이드는 스트림 처리에 사용되는 주요 개념과 도구를 이해하는 데 도움이 됩니다.

지속적인 디지털 진화로 IoT, 네트워크 장치, 다양한 종류의 온라인 활동, 서버 로그 파일 등과 같은 스트리밍 데이터의 소스가 증가하고 있습니다. 모든 산업이 데이터 기반 비즈니스 통찰력을 확보하기 위해 이 데이터에 의존하게 되면서 스트리밍 처리 시스템은 실시간 부정 행위 탐지, 주식 거래 플랫폼, 소셜 미디어 피드에서 멀티플레이어 게임 및 GPS 추적에 이르기까지 모든 것을 지원합니다.

그러나 스트리밍 데이터는 많은 데이터 소스에 의해 매우 빠른 속도로 생성됩니다. 따라서 강력한 스트림 처리 솔루션을 구축하는 것은 어려울 수 있습니다. 이 문서에서는 스트림 처리의 작동 방식과 해당 아키텍처의 기본 구성 요소에 대해 설명합니다.

 

 

스트림 처리 작동 방식 이해

 

 

스트림 처리

스트림 처리는 데이터를 즉시 처리하는 데이터 관리 기술입니다. 여기에는 수신 데이터의 지속적인 흐름을 수집하고 데이터가 도착할 때 이를 처리/변환하는 작업이 포함됩니다. 처리된 결과는 즉시 작업을 위해 대상으로 전달되거나 나중에 사용할 수 있도록 저장됩니다.

 

 

작동

스트림 처리 방식을 자세히 살펴보기 전에 다음과 같은 표준 스트림 처리 용어를 살펴보겠습니다:

지속적으로 생성되는 데이터를 스트리밍 데이터라고 하며, 일반적으로 고속, 대용량, 무제한(이론적으로 무한한 크기의 데이터 세트)으로 전송됩니다.

이벤트는 응용 프로그램 메트릭, 웹 사이트의 사용자 활동, 금융 거래 또는 IoT 센서 데이터와 같은 디지털 시스템의 다양한 항목을 나타냅니다.

일반적인 스트림 처리 응용 프로그램에서 이벤트 및 데이터는 하나 이상의 게시자/소스(생산자라고도 함)에 의해 생성됩니다. 그런 다음 데이터를 향상시키고 테스트하며 필요한 경우 변환합니다.

마지막으로, 시스템은 데이터를 가입자/싱크(소비자라고도 함)로 보냅니다. 게시자 및 구독자는 일반적으로 pub/sub라고도 합니다. 공통 소스 및 싱크에는 Apache Kafka Hadoop과 같은 빅 데이터 저장소가 포함됩니다.

참고: 스트림 처리는 실시간 분석의 개념을 의미하지만 상대적으로 의미한다는 점에 유의해야 합니다. "실시간"은 알고리즘 주식 거래 앱의 경우 수백만 분의 1, 물리학 연구원의 경우 수십억 분의 1, 기상 분석 앱의 경우 5분을 의미할 수 있습니다.

이 개념은 스트림 처리 엔진이 서로 다른 응용 프로그램에 대한 데이터 묶음을 패키지화하는 방법을 가리킵니다. 짧은 시간에 도착하는 데이터 이벤트를 정리하여 다른 애플리케이션에 지속적인 피드로 제공합니다. 따라서 서로 다른 시간 척도의 서로 다른 소스의 데이터를 결합하고 재결합하는 개발자의 논리도 단순화됩니다.

 

 

스트림 처리 아키텍처의 구성요소

스트림 처리 시스템은 대부분의 사용 사례를 처리할 수 있는 솔루션을 제공하는 소프트웨어 구성 요소의 프레임워크입니다. 그래서 건축학적으로, 시스템과 같은 복잡한 과정이 될 수 있습니다. 

그렇다면 스트리밍 아키텍처의 구성 요소는 무엇일까요? 아래에서는 각 빌딩 블록 또는 구성 요소 유형이 전체 아키텍처에서 어디에 어떻게 적합한지에 대해 논의하고 검토합니다.

 

1. 데이터를 수집하고 재배포하기 위한 스트림 프로세서 또는 메시지 브로커

스트림 프로세서 또는 메시지 브로커는 API를 사용하여 생산자/소스에서 데이터를 가져옵니다. 프로세서는 데이터를 표준 메시징 형식으로 변환하고 출력을 지속적으로 소비자에게 스트리밍합니다.

소셜 미디어 네트워크, 클릭 스트림, 게임 내 플레이어 활동, 전자 상거래 구매 등과 같은 다양한 소스에서 데이터 스트림을 수집합니다. 또한 다양한 형식(JSON과 같은 비정형 또는 반정형 형식)으로 데이터를 전송할 수 있습니다.

1세대 메시지 브로커(: Apache ActiveMQ Rabbit)MQ) MOM(Message Oriented Middleware) 패러다임에 의존했습니다. 그러나 나중에 스트림 프로세서라고 하는 고성능 메시징 플랫폼이 등장하여 스트리밍 패러다임에 더 적합한 것으로 입증되었습니다. 오늘날 인기 있는 스트림 처리 도구는 Apache Kafka, Azure Event Hub, Amazon Kinesis Data Streams Google Cloud PubSub입니다.

 

2. 스트리밍 처리 및 데이터 변환 도구(ETL, ELT )를 통해 데이터를 쿼리할 수 있습니다

메시지 브로커가 데이터를 보관한 후, 스트림 처리 또는 데이터 변환 도구를 사용하여 데이터를 변환, 집계 및 구조화하여 분석할 준비가 되었는지 확인합니다. 변환에는 정규화, 관련 필드를 열에 매핑, 압축, 농축(데이터 포인트를 다른 데이터 소스와 결합하여 더 많은 컨텍스트와 의미를 생성), 분할 등이 포함될 수 있습니다.

결과는 작업, 경고, API 호출, 시각화 또는 (경우에 따라) 새 데이터 스트림일 수 있습니다.

 

3. 비즈니스 가치를 추출하기 위한 분석 및 쿼리 엔진

데이터가 소비를 위해 준비되는 즉시 가치를 잠금 해제하기 위해 분석됩니다. 스트리밍 데이터 분석에는 사용 사례에 따라 다양한 접근 방식이 있습니다. 도구와 기술의 예로는 쿼리 엔진(아마존 아테나, 아마존 적색편이), 텍스트 검색 엔진(탄성 검색) 등이 있습니다.

또한, 처리된 데이터는 분석 데이터 저장소에 기록되는 경우가 많으며, 여기서 시각화 및 분석에 최적화됩니다. 또는 분석, BI(비즈니스 인텔리전스) 및 실시간 대시보드 시각화를 위해 분석 및 보고 계층으로 직접 수집됩니다.

 

4. 데이터 스토리지

대용량 및 스트리밍 데이터의 다중 구조 특성을 위한 비용 효율적인 스토리지(파일 및 객체 스토리지)를 포함할 수 있습니다. 또는 데이터 저장소는 나중에 사용할 수 있도록 처리 후 출력 데이터를 저장하는 데도 사용됩니다.

예를 들어 스트리밍 데이터를 Snowflake에 저장하는 경우 대시보드 및 BI 도구를 사용하여 실시간 분석을 수행할 수도 있습니다. 이러한 데이터 저장소는 스트리밍 에코시스템 외부의 도구가 데이터에 액세스할 수 있는 유연한 통합 지점 역할도 할 수 있습니다. 또한 Amazon S3와 같은 저렴한 스토리지 기술이 등장함에 따라 오늘날 대부분의 조직은 스트리밍 이벤트 데이터를 저장하거나 아카이브합니다.

 

 

무상태 대 상태 스트림 처리

스트림 처리는 상태 저장 또는 상태 비저장일 수 있습니다. 상태 비저장 스트림 처리에서 현재 데이터/이벤트는 이전 데이터/이벤트와 독립적으로 처리됩니다. 데이터는 이전 상태나 지식을 고려하지 않고 도착할 때 평가됩니다.

반대로 상태 저장 스트림 처리는 전체 데이터 상태와 관련이 있습니다. 그것은 과거와 현재의 사건들이 하나의 상태를 공유한다는 것을 의미합니다. 따라서 이전 이벤트의 컨텍스트는 현재 이벤트의 처리를 구성하는 데 도움이 됩니다.

예를 들어 상태 비저장 처리는 산업용 시스템의 온도에 대한 실시간 피드가 필요할 때 적용됩니다. 그러나 상태 저장 스트림 처리 시스템은 시간이 지남에 따라 온도가 어떻게 변화하는지에 따라 미래의 온도를 예측하려는 경우 이상적입니다.

 

 

결론

빠르고 확장 가능하며 안전하고 안정적인 스트림 처리 시스템을 구축하는 것은 어려울 수 있습니다. 또한 오늘날의 시장에서는 수많은 현대적이고 유연한 툴과 관리형 서비스를 이용할 수 있습니다. 이 기사를 통해 효율적인 스트림 처리 엔진을 개발하는 데 적합한 기술을 선택하는 데 필요한 필수 구성 요소와 고려 사항을 이해할 수 있기를 바랍니다.

반응형