이 문서에서는 Azure의 실시간 스트림 처리에 대한 기술 선택 사항을 비교합니다.
스트리밍 데이터 개요
조직에는 메시지, 레코드 또는 데이터를 동시에 내보내는 다양한 데이터 원본이 있는 경우가 많습니다. 데이터의 양은 몇 바이트에서 몇 메가바이트(MB)까지 다양할 수 있습니다. 스트리밍 데이터는 거의 실시간으로 처리할 수 있는 연속적인 증분 방식으로 대량으로 내보내집니다. 이러한 유형의 데이터에는 회사에서 실시간 분석에 사용하는 정보와 애플리케이션 로그, 지리적 위치 업데이트, 이벤트 및 센서 판독값과 같은 비즈니스의 다양한 측면에 대한 가시성이 포함됩니다.
스트리밍 데이터에는 다음과 같은 특징이 있는 경우가 많습니다.
불완전한 데이터 무결성: 원본에서 일시적인 오류로 인해 데이터 요소가 누락될 수 있습니다. 스트림의 지속적인 특성으로 인해 데이터 불일치가 발생할 수 있습니다. 따라서 스트림 처리 및 분석 시스템에는 일반적으로 이러한 오류를 완화하기 위한 데이터 유효성 검사 논리가 포함됩니다.
연속 데이터 흐름: 데이터 스트림은 시작 또는 끝이 없으므로 지속적으로 데이터를 수집해야 합니다. 예를 들어 서버 활동 로그는 서버가 실행되는 한 누적됩니다.
다양한 데이터 형식: JSON, Avro 및 CSV와 같은 여러 형식으로 데이터를 스트리밍할 수 있습니다. 또한 문자열, 숫자, 날짜 및 이진 형식과 같은 다양한 데이터 형식을 포함할 수 있습니다. 스트림 처리 시스템은 이러한 데이터 변형을 처리해야 합니다.
시간에 민감한 데이터 순서: 데이터 스트림의 개별 요소에는 타임스탬프가 포함됩니다. 또한 데이터 스트림 자체는 시간에 민감하고 특정 시간 후에 값을 잃을 수 있습니다. 경우에 따라 데이터 처리 순서를 유지해야 합니다.
실시간 처리를 위한 기술 옵션
올바른 기술을 선택할 수 있도록 이 섹션에서는 수집에서 소비에 이르는 Azure의 일반적인 옵션을 간략하게 설명합니다. 각 하위 섹션에서는 스트리밍 처리 흐름 내의 역할에 따라 권장되는 기술을 강조 표시합니다.
고수준 스트림 처리 흐름
이 아키텍처의 Visio 파일을 다운로드합니다.
스트림 제작자
스트림 생산자는 Azure 수집 서비스에 데이터를 생성하고 푸시합니다. IoT(사물 인터넷) 디바이스, 애플리케이션 로그 또는 데이터베이스와 같은 원본에서 데이터를 지속적으로 생성합니다.
스트림 생산자는 다음과 같은 이점을 제공합니다.
거의 실시간 데이터를 캡처합니다. 생산자는 IoT 디바이스, 사용자 상호 작용 및 애플리케이션 로그와 같은 원본에서 데이터를 지속적으로 수집할 수 있습니다. Azure Event Hubs 또는 Azure IoT Hub와 같은 Azure 서비스로 데이터를 스트리밍합니다.
일괄 처리 및 압축을 사용하여 처리량을 최적화합니다. 생산자는 메시지를 일괄 처리하고 압축을 적용하여 전송 중에 데이터 크기를 최소화할 수 있습니다. 이러한 기능은 효율성을 향상시킵니다.
오류 처리 및 재시도를 사용하여 안정적인 전송을 보장합니다. 생산자는 자동 재시도를 통해 네트워크 중단 또는 브로커 오류를 관리하여 신뢰할 수 있는 데이터 배달을 보장할 수 있습니다.
멱등성을 사용하여 데이터 무결성을 보장합니다. 정확히 한 번 배달을 지원하도록 생산자를 구성하여 중복 메시지를 방지하고 일관된 데이터 흐름을 보장할 수 있습니다.
구성 요소
IoT Hub 는 IoT 데이터를 수집합니다. 양방향 통신, 디바이스 인증 및 오프라인 메시지 버퍼링과 같은 기능을 제공합니다. IoT 디바이스 및 해당 데이터 스트림을 관리하는 데 적합합니다.
CDC(변경 데이터 캡처) 생산자에는 Azure SQL Database 및 Azure Cosmos DB와 같은 Azure 데이터베이스가 포함됩니다.
CDC 데이터에 액세스하려면 SQL Database용 Debezium 또는 Azure Cosmos DB 변경 피드와 같은 커넥터를 사용할 수 있습니다. 이러한 커넥터는 종종 Azure Functions 또는 Azure App Service 환경에서 호스트됩니다. Microsoft Fabric 이벤트 스트림 기능을 사용하는 경우 CDC 생산자를 다운스트림 소비자와 연결하기 위해 Debezium과 같은 별도의 애플리케이션이 필요하지 않습니다.
Debezium과 같은 사용자 지정 애플리케이션은 AKS(Azure Kubernetes Service) 또는 App Service 환경과 같은 관리되는 서비스에서 독립 실행형 애플리케이션으로 호스트될 수도 있습니다. 이 방법은 더 많은 제어 또는 사용자 지정을 제공합니다.
일반 기능
능력 | IoT 허브 | 질병 통제 및 예방 센터 제작자 | 사용자 지정 애플리케이션 |
---|---|---|---|
디바이스 원격 분석 | 예 | 아니요 | 아니요 |
관리형 서비스 | 예 | 아니요 | 아니요 |
확장성 | 예 | 예 | 예 |
스트림 수집 및 처리
웹 및 모바일 애플리케이션, IoT 디바이스 및 센서와 같은 생산자는 지속적으로 데이터를 생성합니다. 스트림 처리 파이프라인은 실시간 및 일괄 처리를 위해 이 데이터를 효율적으로 수집해야 합니다.
다음 사항을 고려합니다.
데이터 속도: 여러 원본의 고주파 데이터를 처리하는 방법을 결정합니다. 형식과 크기가 달라지는 경우가 많습니다.
확장성: 데이터 볼륨, 다양성 및 속도가 증가함에 따라 수집 계층이 동적으로 확장될 수 있는지 확인합니다.
데이터 무결성 및 안정성: 전송 중에 데이터 손실 또는 중복을 방지합니다.
구성 요소
Event Hubs 는 초당 수백만 개의 이벤트를 처리할 수 있는 실시간 데이터 수집 서비스이므로 처리량이 높은 시나리오에 적합합니다. 동적으로 크기를 조정하고 대기 시간이 짧은 대량의 데이터를 처리할 수 있습니다.
Event Hubs는 병렬 처리 및 데이터 보존 정책에 대한 분할과 같은 기능을 지원합니다. Azure Stream Analytics, Fabric, Azure Databricks 및 Azure Functions와 같은 Azure 서비스와 통합됩니다. Event Hubs는 Apache Kafka와도 통합되며 코드 변경 없이 기존 Kafka 워크로드를 실행할 수 있습니다.
Event Grid 는 완전히 관리되는 이벤트 라우팅 서비스입니다. 다양한 소스의 이벤트를 수집, 배포 및 반응하므로 실시간 이벤트 기반 아키텍처에 이상적입니다. 이벤트 알림을 효율적으로 처리하고 Azure 서비스, 사용자 지정 애플리케이션 및 파트너 시스템과 통합합니다. Event Grid는 스트림 수집에서 중요한 역할을 합니다.
Azure HDInsight의 Kafka 는 대규모로 실시간 데이터 수집 및 처리를 위한 관리형 Apache Kafka 서비스입니다. 이 서비스를 사용하여 IoT 디바이스, 애플리케이션 로그 및 소셜 미디어 피드와 같은 다양한 원본에서 스트리밍 데이터를 캡처하고 저장합니다. 이 서비스는 관리되는 인프라에서 Kafka 구성을 추가로 제어합니다.
Confluent Cloud의 Apache Kafka 는 실시간 데이터 수집을 위한 완전 관리형 Apache Kafka 서비스입니다. 배포 및 크기 조정을 간소화하기 위해 Azure와 통합됩니다. 이 솔루션에는 스키마 레지스트리, 스트림 쿼리용 ksqlDB 및 엔터프라이즈급 보안과 같은 기능이 포함됩니다. 커넥터 및 스트림 처리 도구의 Confluent 확장 에코시스템을 사용하는 경우 이 옵션을 사용합니다.
일반 기능
능력 | 이벤트 허브 (Event Hubs) | HDInsight의 Kafka | Kafka on Confluent |
---|---|---|---|
메시지 보존 | 예 | 예 | 예 |
메시지 크기 제한 | 1MB | 구성 가능 | 구성 가능 |
관리형 서비스 | 예 | 관리되는 서비스로서의 인프라 | 예 |
오토스케일 | 예 | 예 | 예 |
파트너 제품 | 아니요 | 아니요 | 예 |
가격 책정 모델 | 등급에 따라 | 클러스터 시간당 | 소비 모델 |
스트림 처리
이 단계에는 실시간으로 데이터를 변환하고 수집된 데이터를 필터링, 집계, 보강 또는 분석하는 프로세스가 포함됩니다.
다음 사항을 고려합니다.
상태 저장 및 상태 비지정 처리: 처리가 이전에 본 데이터(상태 저장) 또는 독립 이벤트(상태 비저장)에 종속되는지 여부를 결정합니다.
이벤트 시간 처리: 여러 원본에서 데이터 스트림을 함께 처리해야 하는 시나리오( 특히 늦게 도착하는 레코드의 경우)를 고려합니다.
윈도우: 슬라이딩 또는 연속 창을 사용하여 시간 기반 집계 및 분석을 관리합니다.
내결함성: 시스템이 데이터 손실 또는 재처리 오류 없이 오류로부터 복구할 수 있는지 확인합니다.
구성 요소
Stream Analytics 는 SQL 기반 쿼리 언어를 사용하여 실시간 분석을 사용하도록 설정하는 관리되는 서비스입니다. 데이터 스트림 필터링, 집계 및 조인과 같은 간단한 처리 작업에 이 서비스를 사용합니다. 입력 및 출력을 위해 Event Hubs, IoT Hub 및 Azure Blob Storage와 원활하게 통합됩니다. Stream Analytics는 SQL 기반 쿼리를 사용하는 간단하고 관리되는 솔루션으로 충분한 복잡성이 낮은 실시간 작업에 가장 적합합니다.
Spark 구조적 스트리밍 은 패브릭, Azure Databricks 및 Azure Synapse Analytics와 같은 서비스에서 지원됩니다. 이러한 서비스는 Apache Spark를 기반으로 하며 복잡한 데이터 변환, 기계 학습 파이프라인 및 빅 데이터 워크로드를 처리할 수 있는 통합 분석 플랫폼을 제공합니다. Spark 스트리밍 API는 데이터 버전 관리 및 일관성을 위해 Delta Lake와의 긴밀한 통합을 지원합니다.
패브릭 이벤트 스트림 은 통합 분석 플랫폼인 Fabric 내의 실시간 데이터 스트리밍 기능입니다. Eventstreams를 사용하면 실시간 분석 및 애플리케이션을 위해 스트리밍 데이터를 원활하게 수집, 처리 및 통합할 수 있습니다. 사용자는 최소한의 기술 전문 지식으로 이벤트 스트림에 액세스할 수 있습니다. 데이터 파이프라인을 설정하는 끌어서 놓기 인터페이스를 제공합니다.
Azure Functions 는 이벤트 기반 처리를 위한 서버리스 컴퓨팅 서비스입니다. 데이터 변환 또는 실시간 이벤트를 기반으로 워크플로 트리거와 같은 간단한 작업에 유용합니다. Azure 함수는 기본적으로 상태 비지정입니다. 지속성 함수 기능은 복잡한 이벤트 조정을 위해 상태 저장 워크플로를 지원하도록 기능을 확장합니다.
일반 기능
능력 | 스트림 분석 | Spark 구조적 스트리밍 (Fabric, Azure Databricks, Azure Synapse Analytics) | 패브릭 이벤트 스트림 | Azure Functions (애저 펑션) |
---|---|---|---|---|
마이크로 일괄 처리 | 예 | 예 | 예 | 아니요 |
이벤트 기반 처리 | 아니요 | 아니요 | 예 | 예 |
상태 저장 처리 | 예 | 예 | 예 | 아니요 |
체크포인팅 지원 | 예 | 예 | 예 | 아니요 |
낮은 코드 인터페이스 | 예 | 아니요 | 예 | 아니요 |
가격 책정 모델 | 스트리밍 단위 | 예 | 직물 SKU | 예 |
스트리밍 수신기
시스템이 데이터를 처리한 후 데이터를 적절한 대상 또는 싱크로 보내 스토리지, 추가 분석 또는 실시간 애플리케이션에서 사용하도록 합니다. 이러한 대상에는 시각화를 위한 데이터베이스, 데이터 레이크, 분석 도구 또는 대시보드가 포함될 수 있습니다.
다음 사항을 고려합니다.
데이터 사용량 및 사용량: 실시간 분석 또는 보고 대시보드에 Power BI를 사용합니다. Azure 서비스와 잘 통합되고 데이터 스트림의 실시간 시각화를 제공합니다.
짧은 대기 시간 요구 사항: 시스템에서 디바이스 원격 분석 및 애플리케이션 로그와 같은 실시간 데이터 스트림에 대한 분석을 제공해야 하는지 여부를 결정합니다. 일부 애플리케이션은 읽기 및 쓰기에 매우 짧은 대기 시간이 필요할 수 있으므로 운영 분석 또는 실시간 애플리케이션에 적합합니다.
확장성 및 볼륨: 대량의 데이터를 수집하고, 다양한 데이터 형식을 지원하고, 효율적이고 비용 효율적으로 크기를 조정해야 하는 워크로드의 필요성을 평가합니다.
구성 요소
Azure Data Lake Storage 는 비정형 및 반구조화된 데이터를 저장하기 위한 확장 가능하고 분산되고 비용 효율적인 솔루션입니다. 페타바이트 규모의 스토리지 및 처리량이 많은 워크로드를 지원하여 대량의 스트리밍 데이터를 저장합니다. 또한 스트리밍 데이터 및 실시간 데이터 파이프라인에 대한 분석을 지원하는 빠른 읽기 및 쓰기 작업을 사용할 수 있습니다.
패브릭 이벤트 하우스는 원격 분석 및 로그 데이터, 시계열 데이터 및 IoT 데이터와 같은 환기 기반 데이터에 대한 실시간 분석 및 탐색을 위한 KQL 데이터베이스입니다. 대기 시간이 짧은 초당 수백만 개의 이벤트 수집을 지원합니다. 이 기능을 사용하면 스트리밍 데이터에 거의 즉시 액세스할 수 있습니다. 이벤트하우스는 패브릭 에코시스템과 긴밀하게 통합됩니다. 이를 통해 사용자는 Power BI와 같은 도구를 사용하여 스트리밍 데이터를 즉시 쿼리하고 분석할 수 있습니다.
Azure Cosmos DB 는 대기 시간이 짧고, 전역적으로 분산되고, 확장성이 뛰어난 데이터 스토리지를 위한 NoSQL 데이터베이스입니다. 다양한 애플리케이션에 유연성을 제공하는 SQL, MongoDB, Cassandra, Table 및 Gremlin과 같은 여러 API와 호환됩니다. Azure Cosmos DB는 높은 처리량을 제공하며 일관된 성능으로 대량의 스트리밍 데이터를 처리할 수 있습니다.
SQL Database 는 완전히 관리되는 클라우드 기반 관계형 데이터베이스 서비스입니다. SQL Server 엔진을 기반으로 합니다. 따라서 기존 SQL Server 데이터베이스의 기능을 클라우드 기반 확장성, 안정성 및 관리 오버헤드 감소의 이점을 제공합니다.
일반 기능
능력 | 데이터 레이크 스토리지 | 패브릭 이벤트 하우스 | Azure Cosmos DB (애저 코스모스 DB) | SQL 데이터베이스 |
---|---|---|---|---|
범용 개체 저장소 | 예 | 아니요 | 아니요 | 아니요 |
스트리밍 데이터 집계 | 아니요 | 예 | 아니요 | 아니요 |
JSON 문서에 대한 짧은 대기 시간 읽기 및 쓰기 | 아니요 | 예 | 예 | 아니요 |
Power BI에 대한 구조적 데이터 집계 | 아니요 | 예 | 아니요 | 예 |
가격 책정 모델 | GB 또는 TB당 | 직물 SKU | 요청 단위 | DTU(데이터베이스 트랜잭션 단위) 또는 vCore |
기여자
Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.
주 저자
- 프라티마 발라발라 | 주요 솔루션 설계자
LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.
다음 단계
- 패브릭 이벤트하우스
- 패브릭
- Data Lake Storage
다음 학습 모듈을 살펴봅니다.