Cosmos DB를 사용한 IoT

Cosmos DB
Databricks
Functions
IoT Hub
Power BI

수집 또는 쿼리 성능을 떨어뜨리지 않으면서 다양하고 예기치 않은 IoT 워크로드를 수용할 수 있도록 크기를 즉각적이고 탄력적으로 조정합니다.

Azure Cosmos DB는 전 세계에 배포된 Microsoft의 멀티모델 데이터베이스입니다. zure Cosmos DB는 처음부터 글로벌 분산과 확장을 목표로 구축되었습니다. 사용자가 어디에 있든 데이터를 투명하게 확장 및 복제하여 원하는 수의 Azure 지역에서 턴키 글로벌 배포를 제공합니다. 전 세계에서 처리량과 스토리지를 탄력적으로 확장하고 필요한 처리량 및 스토리지에 대한 비용만 지불할 수 있습니다.

Cosmos DB는 IoT 솔루션에 가장 적합합니다. Cosmos DB는 높은 속도로 디바이스 원격 분석 데이터를 수집할 수 있으며 짧은 대기 시간 및 고가용성으로 인덱싱된 쿼리를 다시 제공할 수 있습니다.

Cosmos DB는 Jupyter Notebook 파일에 대한 기본 제공 지원과 함께 Cassandra, MongoDB, SQL, Gremlin, Etcd 및 Table에 대한 유선 프로토콜 호환 API 엔드포인트가 있는 다중 모델 데이터베이스입니다.

Architecture

Architecture

데이터 흐름

  1. IoT 디바이스에서 생성된 이벤트는 메시지 스트림으로 Azure IoT Hub를 통해 분석 및 변환 계층으로 전송됩니다. Azure IoT 허브는 구성 가능한 시간 동안 파티션에 데이터 스트림을 저장합니다.
  2. Apache Spark Streaming을 실행하는 Azure Databricks IoT Hub 실시간으로 메시지를 선택하고, 비즈니스 논리에 따라 데이터를 처리하고, 데이터를 스토리지용 서비스 계층으로 보냅니다. Spark 스트리밍은 기간 동안 이동 평균, 최소 및 최대 값 계산과 같은 실시간 분석을 제공할 수 있습니다.
  3. 디바이스 메시지는 Cosmos DB에 JSON 문서로 저장됩니다. 핫 데이터 저장소로 간주됩니다. 여러 디바이스 공급업체를 나타내는 다른 JSON 스키마는 Cosmos DB에 저장하거나 정식 JSON 스키마로 변환할 수 있습니다.
  4. 스토리지 계층은 다음으로 구성됩니다.
    • Azure Blob Storage - IoT Hub 메시지 라우팅은 원시 IoT 디바이스 메시지를 Azure Blob Storage에 저장하여 Blob Storage가 저렴한 장기 콜드 데이터 저장소 역할을 할 수 있도록 합니다.
    • Azure SQL Database - Azure SQL 활용하여 트랜잭션 및 관계형 데이터(예: 청구 데이터, 사용자 역할)를 저장합니다.
    • Azure Synapse Analytics(이전에는 Azure SQL Data Warehouse) - 솔루션 데이터 웨어하우스용입니다. Cosmos DB 및 Azure SQL 집계된 데이터를 사용하여 Azure Data Factory 사용하여 채워집니다.
  5. Microsoft Power BI 사용자가 웨어하우스 데이터를 분석하는 데 사용할 수 있습니다.
  6. 웹, 모바일 및 기타 애플리케이션은 스토리지 계층에서 빌드할 수 있습니다. 예를 들어 타사 사용을 위해 스토리지 계층 데이터를 기반으로 API를 노출할 수 있습니다.
  7. Cosmos DB 변경 피드를 사용하여 디바이스 메시지가 Cosmos DB에서 추가되거나 업데이트할 때마다 Azure Function을 실행합니다.
  8. 일부 디바이스 메시지(예: 오류 코드)는 디바이스에서 작업을 수행해야 할 수 있습니다. azure Function은 Azure IoT Hub 서비스 API를 사용하여 Azure IoT Hub에 연결하고 다음 중 하나를 사용하여 디바이스에서 작업을 수행할 수 있습니다(예: 다시 부팅).
    • 디바이스 쌍
    • 클라우드-디바이스 메시지
    • 직접 메서드

구성 요소

이 아키텍처는 다음 Azure 구성 요소를 사용합니다.

  • Azure IoT Hub는 클라우드 게이트웨이 역할을 하며, 디바이스 원격 분석을 대규모로 호스팅합니다. 또한 IoT Hub 디바이스로의 양방향 통신을 지원하여 클라우드 또는 Azure IoT Edge에서 디바이스로 작업을 보낼 수 있습니다. Azure IoT Edge를 사용하여 에지에서 기계 학습 모델과 같은 애플리케이션을 실행할 수 있습니다.
  • Apache Spark 스트리밍을 Azure Databricks 변환 및 분석 계층에 있습니다. Databricks는 azure-eventhubs-spark_2.11:2.3.6 Maven 라이브러리를 사용하여 IoT Hub Event Hub 호환 엔드포인트에 연결합니다. Apache Spark 스트리밍은 기본적으로 일괄 처리 및 스트리밍 워크로드를 모두 지원하는 확장 가능한 내결함성 스트리밍 처리 시스템입니다.
  • Azure Cosmos DB는 전 세계에 배포된 다중 모델 데이터베이스입니다.
    • 일관성 수준 - Cosmos DB는 5개의 일관성 수준(강력, 제한된 부실, 세션, 일관성 접두사, 최종)을 지원하여 읽기 일관성과 가용성, 대기 시간 및 처리량 간의 절충을 할 수 있습니다.
    • TTL - Azure Cosmos DB는 특정 기간 후에 컨테이너에서 항목을 자동으로 삭제하는 기능을 제공합니다. 이렇게 하면 Cosmos DB가 Azure Blob 콜드 스토리지에 저장된 장기 데이터와 함께 최근 데이터의 핫 데이터 저장소 역할을 할 수 있습니다.
    • 변경 피드 - 수정된 순서대로 변경된 정렬된 문서 목록을 출력합니다. Azure Cosmos 컨테이너의 변경 피드에서 새 이벤트마다 자동으로 트리거되는 작은 반응형 Azure Functions를 만들 수 있습니다. JSON 문서의 내용에 따라 Azure Function은 Azure IoT Hub 서비스 API에 연결하고 디바이스 쌍, 클라우드-디바이스 메시징 또는 직접 메서드를 사용하여 디바이스에서 작업을 실행할 수 있습니다.
    • RU(요청 단위) - Azure Cosmos DB의 처리량 측정값입니다. RUS는 성능 및 비용 모두에 대한 컴퓨팅 단위입니다. RUS를 사용하면 가용성을 유지하면서 동적으로 확장 및 축소하고 비용, 성능 및 가용성을 동시에 최적화할 수 있습니다.
    • 분할 - 파티션 키는 DB를 Cosmos 다양한 파티션에서 데이터를 라우팅하는 방법을 결정하며 특정 시나리오의 컨텍스트에서 의미가 있어야 합니다. IoT 디바이스 ID는 일반적으로 IoT 애플리케이션의 "자연" 파티션 키입니다.
  • Azure SQL Database 트랜잭션 및 기타 비 IoT 데이터에 대한 관계형 데이터베이스입니다.
  • Azure Synapse Analytics Azure SQL 및 Cosmos DB의 집계된 데이터를 포함하는 데이터 웨어하우스 및 보고 플랫폼입니다. 엔터프라이즈 데이터 웨어하우징 및 빅 데이터 분석의 경우
  • Azure Cosmos DB용 Azure Synapse Link를 사용하면 Azure Synapse 작업 영역에서 사용할 수 있는 두 가지 분석 엔진인 SQL 서버리스 및 Spark 풀을 사용하여 트랜잭션 워크로드에 성능이나 비용에 영향을 주지 않고 Azure Cosmos DB의 운영 데이터에 대해 거의 실시간으로 분석을 실행할 수 있습니다.
  • Power BI 데이터를 분석하고 인사이트를 공유하는 비즈니스 분석 도구 모음입니다. Power BI Azure Analysis Services 저장된 의미 체계 모델을 쿼리하거나 Azure Synapse 직접 쿼리할 수 있습니다.
  • Azure 앱 Services를 사용하여 웹 및 모바일 애플리케이션을 빌드할 수 있습니다. Azure API 앱을 사용하여 서비스 계층에 저장된 데이터를 기반으로 제3자에게 데이터를 노출할 수 있습니다.
  • Azure Functions 사용하여 IoT 메시지 페이로드(예: 이진에서 JSON으로)를 변환하거나 Cosmos DB 변경 피드에 연결된 경우 작업을 트리거할 수 있습니다. Azure Functions 이벤트 기반 서버리스 컴퓨팅 플랫폼입니다. 추가 설정 없이 로컬에서 빌드 및 디버그하고, 클라우드에서 대규모로 배포 및 운영하며, 트리거 및 바인딩을 사용하여 서비스를 통합합니다.

대안

고려 사항

  • Cosmos DB에는 단일 논리 파티션에 대한 20GB 제한(과거에는 10GB)이 있습니다. 대부분의 IoT 솔루션에서는 이 크기로 충분합니다. 그렇지 않은 경우 다음 중 하나를 권장합니다.
    • 파티션 키를 인공 필드로 설정하고 복합 값(예: 디바이스 ID + 현재 월 및 연도)을 할당합니다. 이렇게 하면 값의 카디널리티가 매우 높습니다.
    • TTL 조합을 사용하여 이전 Cosmos DB 데이터를 콜드 스토리지(예: Azure Blob Storage)로 계층화하여 Cosmos DB에서 데이터를 자동으로 정리하고 피드를 변경하여 데이터를 콜드 스토리지로 복제합니다.

다음 단계

IoT 및 Cosmos DB에 대한 다음 문서를 검토합니다.