IoT 워크로드의 Azure Cosmos DB

Azure Cosmos DB
Azure Databricks
Azure 기능
Azure IoT Hub
Power BI

이 문서에서는 Azure Cosmos DB 데이터베이스 서비스의 여러 기능에 의존하는 IoT(사물 인터넷) 워크로드에 대해 설명합니다. Azure Cosmos DB는 전역 배포 및 수평 확장을 위해 빌드된 다중 모델 데이터베이스입니다.

전역 배포는 Azure 지역 간에 데이터를 투명하게 확장하고 복제합니다. 전 세계적으로 처리량과 스토리지를 확장할 수 있으며 필요한 만큼만 지불할 수 있습니다. 즉각적이고 탄력적인 크기 조정은 수집 또는 쿼리 성능을 희생시키지 않으면서 다양하고 예측 불가능한 IoT 워크로드를 수용합니다.

Azure Cosmos DB는 다음을 수행할 수 있으므로 IoT 워크로드에 적합합니다.

  • 높은 속도로 디바이스 원격 분석 데이터를 수집하고 대기 시간이 짧고 고가용성의 인덱싱된 쿼리를 반환합니다.
  • 페이로드 스키마의 유연성을 제공하는 다양한 디바이스 공급업체의 JSON 형식을 저장합니다.
  • Cassandra, MongoDB, SQL, Gremlin, etcd 및 테이블 데이터베이스에 대한 유선 프로토콜 호환 API 엔드포인트를 사용하고 Jupyter Notebook 파일에 대한 기본 제공 지원을 사용합니다.

잠재적인 사용 사례

  • 전역적으로 분산된 기본 제공 Azure Cosmos DB 기능을 사용하여 응답성이 뛰어난 IoT 애플리케이션에 대해 짧은 대기 시간 읽기-쓰기를 사용하도록 설정합니다.
  • 다양한 디바이스 공급업체 및 데이터 형식의 데이터를 처리합니다.

아키텍처

Azure IoT 솔루션 아키텍처에서 Azure Cosmos DB의 역할을 보여 주는 다이어그램.이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

  1. IoT 센서 및 Edge 디바이스는 분석 및 변환 계층에 Azure IoT Hub를 통해 메시지 스트림으로 이벤트를 보냅니다. IoT Hub는 지정된 기간 동안 파티션에 데이터 스트림을 저장할 수 있습니다.

  2. Apache Spark 구조적 스트리밍을 사용하는 Azure Databricks는 실시간으로 IoT Hub의 메시지를 선택하고, 비즈니스 논리에 따라 데이터를 처리하고, 데이터를 스토리지로 보냅니다. 구조적 스트리밍은 이동 평균 또는 기간별 최솟값 및 최댓값 계산과 같은 실시간 분석을 제공할 수 있습니다.

  3. Azure Cosmos DB는 디바이스 메시지를 핫 데이터 저장소에 JSON 문서로 저장합니다. Azure Cosmos DB는 다른 디바이스 공급업체의 JSON 스키마에 대해 유효성을 검사할 수 있습니다.

    스토리지 계층은 다음으로 구성됩니다.

    • Azure Blob Storage. IoT Hub 메시지 라우팅은 Blob Storage에 원시 디바이스 메시지를 저장하여 저렴한 장기 콜드 데이터 저장소를 제공합니다.
    • 청구 데이터 및 사용자 역할과 같은 트랜잭션 및 관계형 데이터를 저장하는 Azure SQL Database.
    • Azure Cosmos DB 및 Azure SQL DB의 데이터를 집계하는 Azure Data Factory로 채워지는 Azure Synapse Analytics 데이터 웨어하우스.
  4. Microsoft Power BI는 데이터 웨어하우스를 분석합니다.

  5. 프레젠테이션 계층은 스토리지 계층의 데이터를 사용하여 웹, 모바일 및 API 앱을 빌드합니다.

  6. 새롭거나 업데이트된 디바이스 메시지가 도착할 때마다 Azure Cosmos DB 변경 피드는 Azure Functions 함수를 트리거합니다.

  7. 함수는 메시지에 다시 부팅과 같은 디바이스 작업이 필요한지 여부를 결정합니다. 그런 경우 함수는 IoT Hub Service API를 사용하여 IoT Hub에 연결하고 디바이스 작업을 시작합니다. 함수는 디바이스 쌍, 클라우드-디바이스 메시지 또는 직접 메서드를 사용하여 작업을 시작할 수 있습니다.

구성 요소

이 워크로드는 다음과 같은 Azure 구성 요소를 사용합니다.

Azure Cosmos DB

이 IoT 워크로드는 전역적으로 분산된 다중 모델 데이터베이스인 Azure Cosmos DB를 집중 조명합니다. 이 워크로드는 다음과 같은 Azure Cosmos DB 기능을 사용합니다.

  • 일관성 수준. Azure Cosmos DB는 가장 강한 수준부터 가장 약한 수준까지 5가지 읽기 일관성 수준(강력, 제한된 부실, 세션, 일관된 접두사 및 최종)을 지원합니다. 일반적으로 일관성이 강하면 가용성이 낮아지고 대기 시간이 길어지고 처리량이 낮아질 수 있습니다. 워크로드 요구 사항에 따라 일관성 수준을 선택할 수 있습니다.

  • TTL(Time to Live). Azure Cosmos DB는 일정 기간이 지난 후 컨테이너에서 항목을 자동으로 삭제할 수 있습니다. 이 기능을 통해 Azure Cosmos DB는 Azure Blob 콜드 스토리지에 저장된 장기 데이터를 사용하여 최근 데이터에 대한 핫 데이터 저장소 역할을 수행합니다.

  • 변경 피드. 변경 피드 기능은 변경된 문서가 수정된 순서대로 정렬된 목록을 출력합니다. Azure Cosmos DB 컨테이너의 변경 피드에 있는 각 새 이벤트는 작은 반응형 Azure Functions 함수를 자동으로 트리거합니다. JSON 문서의 내용에 따라 함수는 Azure IoT Hub Service API에 연결하고 디바이스에서 작업을 실행할 수 있습니다.

  • RU(요청 단위). RU는 Azure Cosmos DB 처리량을 측정하는 컴퓨팅 단위입니다. RU를 사용하여 가용성을 유지하고 비용 및 성능을 최적화하면서 Azure Cosmos DB를 동적으로 확장 및 축소할 수 있습니다.

  • 분할. 파티션 키는 Azure Cosmos DB가 파티션의 데이터를 라우팅하는 방법을 결정합니다. IoT 디바이스 ID는 IoT 애플리케이션의 일반적인 파티션 키입니다.

기타 Azure 구성 요소

솔루션은 다음과 같은 Azure 구성 요소를 사용합니다.

  • Azure IoT Edge는 기계 학습 모델과 같은 에지에서 애플리케이션을 실행합니다.

  • Azure IoT Hub는 클라우드 게이트웨이 역할을 하며 대규모로 디바이스 원격 분석을 수집합니다. IoT Hub는 디바이스로의 통신을 다시 지원하여 클라우드에서 IoT Edge로 전송된 작업을 디바이스로 전송할 수 있습니다.

  • Spark 구조적 스트리밍이 포함된 Azure Datbricks는 배치 및 스트리밍 워크로드를 기본적으로 지원하는 확장 가능한 내결함성 스트림 처리 시스템입니다. Azure Databricks는 변환 및 분석 계층이며 azure-eventhubs-spark_2.11:2.3.6 Maven 라이브러리를 사용하여 IoT Hub 이벤트 허브 호환 엔드포인트에 연결합니다.

  • Azure Blob Storage는 비정형 데이터에 대해 확장 가능하고 저렴하며 장기적인 콜드 데이터 스토리지를 제공합니다.

  • Azure SQL Database는 트랜잭션 및 기타 비IoT 데이터에 대한 관계형 데이터베이스입니다.

  • Azure Synapse Analytics는 엔터프라이즈 데이터 웨어하우징 및 빅 데이터 분석을 위한 데이터 웨어하우스 및 보고 플랫폼입니다. Synapse Analytics에는 Azure SQL Database 및 Azure Cosmos DB의 집계된 데이터가 포함되어 있습니다.

    Azure Cosmos DB용 Azure Synapse Link는 트랜잭션 워크로드에 대한 성능 또는 비용 영향 없이 Azure Cosmos DB 운영 데이터에 대해 거의 실시간 분석을 사용할 수 있습니다. Synapse Link는 Azure Synapse 작업 영역의 SQL 서버리스Spark 풀이라는 두 가지 분석 엔진을 사용합니다.

  • Power BI는 데이터를 분석하고 인사이트를 공유하는 비즈니스 분석 도구 제품군입니다. Power BI는 Azure Analysis Services에 저장된 의미 체계 모델을 쿼리하거나 Synapse Analytics를 직접 쿼리할 수 있습니다.

  • Azure App Service는 웹 및 모바일 애플리케이션을 빌드합니다. Azure API 앱은 타사 앱이 서비스 계층의 데이터를 기반으로 API를 사용할 수 있도록 합니다.

  • Azure Functions는 클라우드에서 대규모로 작동하고 트리거 및 바인딩을 사용하여 서비스를 통합할 수 있는 이벤트 기반 서버리스 컴퓨팅 플랫폼입니다. Azure Functions는 IoT 메시지 형식을 변환하거나 Azure Cosmos DB 변경 피드에 연결된 경우 작업을 트리거할 수 있습니다.

대안

  • 변환 및 분석 계층은 Azure Databricks 대신 HDInsight Storm, HDInsight Spark 또는 Azure Stream Analytics를 사용하여 스트리밍 분석을 수행하고 Azure Functions를 사용하여 메시지 페이로드를 변환할 수 있습니다.

  • 서비스 스토리지 계층은 Azure Data Explorer를 사용하여 IoT 메시지를 저장할 수 있습니다. 이 서비스에는 풍부한 분석 기능도 있습니다.

고려 사항

Azure Cosmos DB에는 단일 논리 파티션에 대한 20GB 제한이 있습니다. 대부분의 IoT 솔루션에서는 이 크기로 충분합니다. 그렇지 않은 경우 다음을 수행할 수 있습니다.

  • 파티션 키를 인공 필드로 설정하고 디바이스 ID + 현재 월 및 연도와 같은 복합 값을 필드에 할당합니다. 이 전략은 좋은 파티션 디자인을 위해 높은 가치의 카디널리티를 보장합니다. 자세한 내용은 파티션 키 선택을 참조하세요.

  • 데이터 수명 주기에 따라 이전 Azure Cosmos DB 데이터를 콜드 스토리지(예: Azure Blob Storage)로 이동할 수 있습니다. 변경 피드의 조합을 사용하여 데이터를 콜드 스토리지에 복제하고 TTL을 사용하여 특정 기간 후에 컨테이너에서 자동으로 데이터를 삭제할 수 있습니다.

다음 단계