데이터 저장소를 IoT 파이프라인과 통합

완료됨

이제 Cosmos DB를 성공적으로 구현했으므로 이를 Azure IoT 서비스와 통합할 수 있는 방법을 결정해야 합니다. 핫 경로 및 콜드 경로 옵션의 사용법을 살펴볼 계획입니다. 이 탐색을 통해 클라우드 네이티브 애플리케이션 디자인의 일부인 스마트 어플라이언스 인벤토리 및 디바이스 원격 분석 시나리오를 더 쉽게 설명할 수 있습니다. 또한 디자인에 사용할 수 있는 다른 데이터 저장소를 식별하려고 합니다.

Azure Cosmos DB 관련 디자인 고려 사항은 무엇인가요?

Azure Cosmos DB 데이터베이스 및 컨테이너 계층 구조를 디자인할 때 최적의 성능과 효율성을 보장하려면 파티션 키를 적절하게 선택하는 것이 중요합니다. 이 선택은 일반적으로 대량의 스트리밍 데이터를 수반하는 IoT 시나리오와 관련이 있습니다.

가장 적합한 파티션 키를 선택할 때는 사용 패턴과 개별 논리 파티션 크기에 대한 20GB 제한을 고려해야 합니다. 일반적으로 수백 또는 수천 개의 고유 값으로 파티션 키를 만드는 것이 가장 좋습니다. 이 방법을 사용하면 이러한 파티션 키 값과 연결된 항목 전체에서 스토리지 및 컴퓨팅 리소스가 균형 있게 사용될 수 있습니다. 동시에 동일한 파티션 키 값을 공유하는 항목의 결합된 크기는 20GB를 초과하지 않아야 합니다.

예를 들어 IoT 데이터를 수집하는 경우 이러한 속성이 가장 일반적인 데이터 쿼리의 대상을 나타내면 원격 분석 스트리밍에 /date 속성을 사용하고 디바이스 인벤토리에 /deviceId를 사용하도록 선택할 수 있습니다. 또는 /deviceId/date 값의 연결과 같은 가상 파티션 키를 구성할 수 있습니다. 또 다른 방법은 파티션 키 값 끝에 지정된 범위 내에서 난수를 추가하는 것입니다. 이 접근 방식은 여러 파티션 전반에 워크로드를 균형 있게 분산하는 데 도움이 됩니다. 이렇게 하면 대상 컬렉션에 항목을 로드할 때 여러 파티션에서 병렬 쓰기를 수행할 수 있습니다.

IoT 시나리오에서 데이터 파이프라인이란?

IoT 시나리오에서 일반적으로 발생하는 것은 수집된 데이터 스트림을 분할하거나 데이터 레코드를 여러 파이프라인으로 전달하여 여러 개의 동시 데이터 경로를 구현하는 것입니다. 해당 아키텍처 패턴을 Lambda 아키텍처라고 하며 두 가지 유형의 파이프라인으로 구성됩니다.

빠른(핫) 처리 파이프라인:

  • 실시간 처리를 수행합니다.
  • 데이터를 분석합니다.
  • 데이터 콘텐츠를 표시합니다.
  • 시간이 중요한 단기 정보를 생성합니다.
  • 경고와 같은 해당 동작을 트리거합니다.
  • 데이터를 보관에 저장합니다.

느린(콜드) 처리 파이프라인:

  • 더 복잡한 분석을 수행하여 잠재적으로 여러 소스의 데이터를 장기간에 걸쳐 결합합니다.
  • 보고서 또는 기계 학습 모델과 같은 아티팩트를 생성합니다.

IoT 파이프라인 구현에서 Azure 서비스의 역할은 무엇인가요?

IoT 시스템은 다양한 디바이스에서 생성된 원격 분석을 수집하고 스트리밍 데이터를 처리 및 분석하여 근 실시간으로 인사이트를 이끌어내고 일괄 분석을 위해 데이터를 콜드 스토리지에 보관합니다. 데이터 경로는 초기 처리를 위해 Azure IoT Hub 또는 Azure IoT Central로 전송되는 IoT 디바이스에서 생성된 원격 분석으로 시작됩니다. Azure IoT Hub와 Azure IoT Central은 모두 구성 가능한 시간 동안 수집된 데이터를 저장합니다.

The options for integrating Azure IoT Central with cloud-native applications and Azure services.

Azure IoT Hub는 분할 및 메시지 라우팅을 지원하기 때문에 Azure Logic Apps 및 Azure Functions에서 처리, 경고 및 수정 작업에 대한 특정 메시지를 지정할 수 있습니다. 동일한 기능은 Azure IoT Central에서 사용할 수 있으며 웹후크를 통해 동작을 트리거하는 사용자 지정 구성 규칙을 기반으로 합니다. 웹후크는 Azure Functions, Azure Logic Apps, Microsoft Flow 또는 자체 사용자 지정 앱을 가리킬 수 있습니다. Azure IoT Hub 경로를 사용하면 초기 처리를 위해 원격 분석을 Azure 함수에 전달한 다음, Azure Cosmos DB에 전달할 수도 있습니다. 이러한 처리의 예로는 형식 변환 또는 가상 파티션 키 구성이 있습니다. Azure IoT Hub 경로를 사용할 수 있는 또 다른 경우는 들어오는 데이터를 Azure Blob Storage 또는 Azure Data Lake에 복사하는 경우입니다. 이 방법은 Azure Machine Learning 데이터 과학 작업을 비롯한 일괄 처리를 위해 편리한 액세스와 함께 저렴한 보관 옵션을 제공합니다.

Azure IoT Central은 Azure Event Hubs, Azure Service Bus, 사용자 지정 웹후크에 연속 데이터 내보내기를 제공합니다. Azure Blob Storage에 대한 간격 기반 데이터 내보내기를 구성할 수도 있습니다. Azure Functions는 Azure Event Hubs 및 Azure Service Bus에 대한 바인딩을 지원하므로 Azure Cosmos DB와 통합하는 데 사용할 수 있습니다.

Azure IoT Central을 사용하면 기본 제공 분석 기능을 통해 근 실시간으로 인사이트를 제공할 수 있습니다. 고급 분석이 필요한 경우 또는 Azure IoT Hub를 사용하는 경우 데이터를 Azure Stream Analytics로 유입할 수 있습니다. Azure Stream Analytics는 Azure Cosmos DB SQL API를 출력으로 지원하여 스트림 처리 결과를 Azure Cosmos DB 컨테이너에 JSON 형식의 항목으로 씁니다. 이를 통해 데이터 보관을 구현하고 비정형 JSON 데이터에 대해 대기 시간이 짧은 임시 쿼리를 수행할 수 있습니다. 변경 피드 기능은 새 데이터 및 기존 데이터의 변경 내용을 자동으로 감지합니다. Azure Cosmos DB를 Azure Synapse Analytics에 연결하여 이러한 데이터를 처리할 수 있습니다. 처리가 완료된 후에는 보다 심층적인 보고를 위해 Azure Cosmos DB에 다시 로드할 수 있습니다. Apache Spark 스트리밍과 함께 Azure Databricks를 사용하여 다음을 수행할 수도 있습니다.

  • Azure IoT Hub의 데이터를 로드합니다.
  • 실시간 분석을 제공하도록 처리합니다.
  • 장기 보존 및 Azure 서비스(Azure Cosmos DB, Azure Blob Storage 또는 Azure Data Lake 등)에 대한 추가 보고를 위해 보관합니다.