Share via


IoT 워크로드의 성능 효율성

IoT 솔루션에는 디바이스, 에지 및 클라우드 구성 요소가 포함되며 클라우드에 연결된 수백만 개의 작은 디바이스부터 몇 가지 강력한 서버가 클라우드 연결의 게이트웨이인 산업 솔루션에 이르기까지 다양합니다. 디바이스 수, 물리적 및 지리적 배치, 전송하거나 받는 메시지 수는 IoT 워크로드의 성능 효율성을 정의할 수 있는 몇 가지 요소입니다.

성능 효율성에는 요구 사항에 맞게 효율적으로 스케일링하는 IoT 워크로드의 기능도 포함됩니다. 클라우드의 이점은 애플리케이션 가동 중지 시간이 거의 또는 전혀 없이 지리적 가용성과 요청 시 서비스 크기를 조정할 수 있다는 것입니다.

성능 효율성은 명시된 조건에서 리소스 사용과 관련된 성능을 나타냅니다. 성능 효율성은 제품 또는 시스템이 기능을 수행할 때 다음 요구 사항을 얼마나 잘 충족하는지 측정합니다.

  • 응답 시간, 처리 시간 및 처리량 속도와 같은 시간 동작입니다.

  • 리소스 사용률 또는 사용된 리소스의 양 및 유형입니다.

  • 용량 또는 최대 제한입니다.

IoT 워크로드의 성능 효율성 평가

Well-Architected Framework 성능 효율성 핵심 요소의 렌즈를 통해 IoT 워크로드를 평가하려면 Azure Well-Architected 검토에서 IoT 워크로드에 대한 성능 효율성 질문을 완료합니다. 평가에서 IoT 솔루션에 대한 주요 성능 효율성 권장 사항을 식별한 후 다음 콘텐츠를 사용하여 권장 사항을 구현합니다.

디자인 원칙

아키텍처 우수성의 5가지 핵심 요소는 IoT 워크로드 디자인 방법론을 뒷받침합니다. 이러한 핵심 요소는 주요 IoT 디자인 영역에서 후속 디자인 결정을 내리는 나침반 역할을 합니다. 다음 디자인 원칙은 Azure Well-Architected Framework - 성능 효율성의 품질 핵심 요소를 확장합니다.

디자인 원리 고려 사항
수평 크기 조정을 위한 디자인 IoT 솔루션은 수백 개의 디바이스 또는 메시지로 시작하고 분당 수백만 개의 디바이스 및 메시지로 확장할 수 있습니다. 클라우드 서비스를 부하 증가로 쉽게 확장할 수 있지만 IoT 디바이스 및 게이트웨이의 경우 상황이 더 복잡할 수 있습니다. 솔루션을 완료하기 전에 IoT 디바이스를 설계하거나 배포할 수 있습니다. 산업용 IoT 또는 유사한 산업은 수십 년 동안 디바이스 수명을 측정할 수 있습니다. 디바이스를 대체하여 용량을 업데이트하는 데 비용이 많이 듭니다. 이러한 시나리오에서는 미리 계획하는 것이 특히 중요합니다.
성능 테스트 시 왼쪽 이동 조기에 테스트하고 자주 테스트하여 문제를 조기에 catch합니다. 통신의 특성, 속도 및 안정성이 서로 다른 지리적으로 다른 위치에 센서, 디바이스 및 게이트웨이가 있는 복잡성에 유의하세요. 테스트에서 이러한 복잡성을 계획하고 네트워크 연결 끊기와 같은 실패 시나리오를 테스트해야 합니다. IoT 솔루션의 모든 디바이스, 에지 및 클라우드 구성 요소에 대한 스트레스 및 부하 테스트를 수행합니다.
프로덕션의 성능을 지속적으로 모니터링 여러 지역에서 다양한 유형의 디바이스를 모니터링하려면 분산 모니터링 솔루션을 사용합니다. 모니터링되고 클라우드로 전송되는 정보의 양과 메모리 및 성능 비용의 균형을 조정합니다. 진단 시나리오에 대한 전송을 조정하고 여러 수준 및 계층에서 모니터링합니다. 산업용 또는 게이트웨이 지원 솔루션에 대한 게이트웨이 메트릭을 노출합니다.

IoT 아키텍처 계층

성능 효율성 디자인 원칙은 IoT 워크로드가 기본 IoT 아키텍처 계층의 요구 사항을 충족하도록 고려 사항을 명확히 하는 데 도움이 됩니다. 다음 섹션에서는 성능 효율성 핵심 요소에 대한 계층 관련 사항을 다룹니다.

IoT 아키텍처의 레이어 및 교차 절단 작업을 보여주는 다이어그램.

디바이스 및 게이트웨이 계층

IoT 디바이스는 IoT 솔루션에 연결하고 데이터를 수집, 전송 또는 받을 수 있는 컴퓨팅 디바이스입니다. 게이트웨이는 디바이스와 클라우드 간 또는 IoT와 다른 구성 요소 간의 연결점입니다.

하드웨어 기능 최적화

하드웨어 업그레이드 또는 교체는 비용이 많이 들고 시간이 많이 걸립니다. 필요한 용량 및 기능에 대한 IoT 디바이스 크기를 미리 조정합니다.

하드웨어 기능을 최적화하려면 다음을 수행합니다.

  • 특정 하드웨어에서 컴퓨팅 및 입력 출력 집약적인 작업을 실행합니다. 예를 들어 로컬 GPU(그래픽 처리 장치)에서 ML(기계 학습) 알고리즘을 실행합니다.

  • Embedded CRust Embedded와 같은 효율적인 언어 및 프레임워크를 사용하여 기존 하드웨어 기능을 최적화합니다. 제한된 디바이스용으로 개발하거나 디바이스에서 대부분의 보안 및 통신 스택을 이미 사용할 수 있는 경우 Azure IoT Embedded C SDK 를 사용할 수 있습니다.

  • 클라우드 게이트웨이에 연결하는 데 필요한 모든 항목 에 대해 C용 Azure IoT 디바이스 SDK 를 사용합니다. Azure IoT 디바이스 SDK(소프트웨어 개발 키트)는 복원력 있는 연결에 필요한 필수 메시지 변환, 오류 처리 및 재시도 메커니즘을 관리합니다.

크기 조정은 디바이스 및 게이트웨이 계층에 중요합니다. 이 계층의 크기를 조정하려면 다음을 수행합니다.

  • 게이트웨이를 규모 단위로 사용합니다. 솔루션이 시간이 지남에 따라 IoT 디바이스 또는 자산(예: OPC UA 서버)을 추가하는 경우 더 많은 에지 게이트웨이를 사용하여 해당 서버에서 데이터를 수집합니다.

  • 클라우드 게이트웨이 및 클라우드 서비스를 비롯한 모든 업스트림 계층에 대해 규모 평가를 수행합니다. 여러 IoT Hub를 IoT 솔루션의 배율 단위로 사용하는 방법에 대한 자세한 내용은 IoT Hub에서 디바이스를 프로비전하는 방법을 참조하세요.

에지에서 워크로드 실행

네트워크 처리량 또는 대기 시간과 같은 시스템 제약 조건에 따라 에지에서 일부 워크로드를 실행하는 것이 좋습니다. 시간 제약 조건과 필요한 대기 시간 및 응답 시간을 기준으로 워크로드를 구분합니다. 짧은 대기 시간 및 간헐적으로 연결된 시나리오에 로컬 컴퓨팅을 사용합니다. 클라우드에서 대규모 워크로드를 실행합니다.

에지에서 우선 순위 큐를 사용하여 필요한 순서로 다른 데이터 스트림을 보냅니다. 우선 순위가 있는 큐 메시지는 우선 순위에 따라 전송되지만 Azure IoT Hub 여전히 수신 순서에 따라 메시지를 저널합니다.

디바이스 연결 최적화

디바이스 연결을 최적화하려면 다음 사항을 고려하세요.

  • 디바이스에 대한 대기 시간이 가장 짧은 IoT Hub를 사용합니다. 디바이스가 서로 다른 지리적 위치에서 연결해야 하는 경우 여러 지역에 IoT Hub가 필요할 수 있습니다.

  • 디바이스와 IoT 솔루션 간의 양방향 통신에 열려 있는 상태 저장 연결을 사용하여 연결 설정 오버헤드를 최소화합니다.

  • 지역별 정전 후와 같이 모든 디바이스를 한 번에 연결하지 마세요. 재시도할 때 도입된 지터와 함께 잘린 지수 백오프를 사용합니다.

오프라인 시나리오 최적화

디바이스에 클라우드 연결 없이 작동하고 데이터를 로컬로 저장할 수 있는 충분한 정보와 컨텍스트를 제공하여 연결 끊김 및 다시 부팅에서 복구할 수 있습니다. 다음 전략은 오프라인 작업을 지원합니다.

  • 우선 순위에 따라 로그 및 캐시된 원격 분석을 포함하여 디바이스가 연결되지 않은 경우 디바이스가 데이터를 로컬로 저장할 수 있는지 확인합니다.

  • 만료된 데이터가 자동으로 제거되도록 데이터에 TTL(Time to Live)을 설정합니다.

  • 디바이스가 연결되지 않은 경우 덜 중요한 데이터를 삭제하여 필요한 로컬 스토리지를 줄이고 디바이스가 다시 연결될 때 동기화 시간을 줄입니다.

  • 에지 디바이스 스토리지가 용량에 도달하면 FIFO(첫 번째 마지막 실행), LIFO(마지막 실행) 또는 우선 순위 기반과 같은 캐시 제거 전략을 사용합니다.

  • 스토리지가 부족할 때 디바이스 런타임 또는 애플리케이션이 계속 작동할 수 있도록 별도의 디스크 또는 디스크 컨트롤러를 사용하여 데이터를 저장하는 것이 좋습니다.

디바이스 쌍 및 모듈 쌍을 사용하여 디바이스가 현재 클라우드 게이트웨이에 연결되지 않은 경우에도 디바이스와 클라우드 간에 상태 정보를 비동기적으로 동기화합니다. 디바이스 및 모듈 쌍에는 기록 또는 제거된 정보가 아닌 특정 시점에 현재 상태만 포함됩니다.

수집 및 통신 계층

데이터 수집 및 통신 계층은 디바이스에서 IoT 솔루션으로 데이터를 보냅니다. 디바이스와 IoT 솔루션 간의 통신 패턴은 다음과 같습니다.

  • 디바이스-클라우드 메시지.
  • 클라우드-디바이스 메시지
  • 파일 업로드.
  • 디바이스 쌍.
  • 직접 메서드.

메시징 효율성 최적화

디바이스-클라우드 메시지의 수와 크기는 IoT 솔루션 성능 효율성에 중요한 매개 변수입니다. IoT HubAzure IoT Central과 같은 Azure IoT 서비스는 솔루션 성능과 비용 모두에 영향을 미치는 계층당 메시지 제한을 정의합니다.

다음 메시징 권장 사항을 고려합니다.

  • IoT Hub 및 IoT Central은 4KB 메시지 크기에 따라 일일 할당량 메시지 수를 계산합니다. 더 작은 메시지를 보내면 일부 용량은 사용되지 않습니다. 일반적으로 4KB 경계에 가까운 메시지 크기를 사용합니다. 더 작은 디바이스-클라우드 메시지를 더 큰 메시지로 그룹화하여 총 메시지 수를 줄이지만 메시지를 결합할 때 도입된 대기 시간을 고려합니다.

  • 수다스러운 의사 소통을 피하십시오. 디바이스-디바이스 또는 모듈 간 에지 통신의 경우 많은 작은 메시지를 보내는 상호 작용을 디자인하지 마세요.

  • AMQP(고급 메시지 큐 프로토콜)에 대한 기본 제공 Azure IoT Edge SDK 메시지 일괄 처리를 사용하여 클라우드에 여러 원격 분석 메시지를 보냅니다.

  • 다운스트림 디바이스에서 여러 작은 메시지를 결합하고 더 큰 메시지를 에지 게이트웨이로 전송하여 애플리케이션 수준 일괄 처리를 사용합니다. 이 일괄 처리는 메시지 오버헤드를 제한하고 로컬 에지 디스크 스토리지에 대한 쓰기를 줄입니다.

  • AMQP 연결 멀티플렉싱을 사용하여 SDK 클라이언트당 TCP(Transmission Control Protocol) 연결 제한에 대한 종속성을 줄입니다. AMQP 연결 멀티플렉싱을 사용하면 여러 디바이스가 단일 TCP 연결을 사용하여 IoT Hub 수 있습니다.

  • 사용자가 지정한 시간 제한 후에 즉시 성공하거나 실패할 수 있는 요청-회신 상호 작용에 직접 메서드를 사용합니다. 이 방법은 디바이스가 응답했는지 여부에 따라 작업 과정이 다른 시나리오에 유용합니다.

  • 메타데이터 및 구성을 비롯한 디바이스 상태 정보에 디바이스 쌍을 사용합니다. IoT Hub 연결하는 각 디바이스에 대해 디바이스 쌍을 유지 관리합니다.

메시징 할당량 및 제한 이해

IoT Hub 계층은 단위당 클라우드 게이트웨이 제한을 설정합니다. 메시징 할당량 은 계층에 대한 지속적인 처리량 및 지속적인 전송 속도를 정의합니다. IoT Hub 버스트 또는 부하 오버슈트를 탄력적으로 처리하기 위해 짧은 기간 동안 이러한 할당량 이상의 부하를 처리할 수 있습니다.

또 다른 중요한 제한은 시간별 또는 일일 서비스 부하 또는 제한 제한입니다. 제한 제한은 너무 오랫동안 너무 많은 부하로부터 IoT Hub를 보호합니다.

다음 다이어그램은 부하, 할당량 및 제한 제한 간의 관계를 보여 줍니다. 왼쪽 다이어그램은 IoT Hub IoT Hub 계층의 할당량 수준까지 지속되거나 일정한 높은 부하를 처리할 수 있음을 보여줍니다. 오른쪽 다이어그램은 IoT Hub 제한 한도에 도달하지 않고 평균적으로 IoT Hub 계층의 할당량을 초과하지 않는 한 시간이 지남에 따라 변경되는 부하를 처리할 수 있음을 보여줍니다.

할당량보다 지속적으로 높은 부하를 보여 주는 왼쪽 다이어그램 가끔 급증하는 낮은 부하를 보여 주는 올바른 다이어그램과 비교됩니다.

메시지 처리 최적화

디바이스 또는 게이트웨이의 메시지는 스토리지 전에 자세한 정보를 사용하여 변환, 처리 또는 보강해야 할 수 있습니다. 이 단계는 시간이 오래 걸릴 수 있으므로 성능에 미치는 영향을 평가하는 것이 중요합니다. 데이터 전송을 최적화하기 위해 압축을 사용하는 것과 메시지 암호 해독에서 클라우드 처리를 방지하는 것과 같은 일부 권장 사항이 충돌합니다. 이러한 권장 사항은 다른 아키텍처 핵심 요소 및 솔루션 요구 사항에 대해 균형을 맞추고 평가해야 합니다.

클라우드 데이터 처리 성능을 최적화하려면 다음을 수행합니다.

  • 클라우드로 데이터를 보내는 데 사용되는 데이터 형식을 최적화합니다. 필요한 클라우드 데이터 처리가 적은 대역폭의 성능(및 비용)과 성능 향상을 비교합니다. IoT Hub 메시지 보강을 사용하여 디바이스 메시지에 컨텍스트를 추가하는 것이 좋습니다.

  • 처리되지 않은 데이터를 저장하고 데이터를 획득하기 위해 복잡한 쿼리를 요구하는 대신 수집된 데이터가 도착할 때 시간이 중요한 이벤트 처리를 수행합니다. 시간이 중요한 이벤트 처리의 경우 지연 도착 및 창의 영향을 고려합니다. 사용 사례(예: 중요 경보 처리 및 메시지 보강)에 따라 평가합니다.

  • 솔루션 요구 사항에 따라 올바른 IoT Hub 계층인 Basic 또는 Standard를 선택합니다. 기본 계층에서 지원하지 않는 기능에 유의하세요.

  • 올바른 IoT Hub 계층 크기, 1, 2 또는 3 및 데이터 처리량, 할당량 및 작업 제한에 따라 인스턴스 수를 선택합니다. IoT Central의 경우 디바이스에서 클라우드로 전송되는 메시지 수에 따라 표준 0, 표준 1 또는 표준 2의 올바른 계층을 선택합니다.

  • 게시-구독 이벤트 라우팅에 Azure Event Grid 사용하는 것이 좋습니다. 자세한 내용은 Event Grid를 사용하여 이벤트를 IoT Hub React 작업을 트리거하고 IoT Hub 대한 메시지 라우팅 및 Event Grid 비교를 참조하세요.

데이터 우선 순위 지정

디바이스가 클라우드로 보내는 일부 데이터는 다른 데이터보다 더 중요할 수 있습니다. 우선 순위에 따라 데이터를 분류하고 처리하는 것은 성능 효율성을 위한 좋은 방법입니다.

예를 들어 온도 조절기 센서는 온도, 습도 및 기타 원격 분석을 전송하지만 온도가 정의된 범위를 벗어나면 경보를 보냅니다. 시스템은 경보 메시지를 더 높은 우선 순위로 분류하고 온도 원격 분석과 다르게 처리합니다.

데이터 분류 및 처리에 대한 다음 권장 사항을 고려합니다.

  • IoT Edge 우선 순위 큐를 사용하여 IoT Hub 보내는 동안 중요한 데이터의 우선 순위를 지정합니다. IoT Edge 연결이 없는 경우 메시지를 버퍼링하지만 연결이 복원된 후 먼저 버퍼링된 모든 메시지를 우선 순위 순서로 보낸 다음 새 메시지를 보냅니다.

  • IoT Hub 메시지 라우팅을 사용하여 사용 사례에 따라 다른 데이터 우선 순위에 대한 경로를 구분합니다. IoT Hub 메시지 라우팅은 약간의 대기 시간을 추가합니다.

  • 더 긴 간격으로 또는 일괄 처리 또는 파일 업로드를 사용하여 낮은 우선 순위 데이터를 저장하고 보냅니다. 업로드된 파일에 대한 맬웨어 검색은 대기 시간을 증가합니다.

  • 시간 제약 조건에 따라 메시지를 구분합니다. 예를 들어 시간 제약 조건이 있을 때 IoT Hub 직접 메시지를 보내고 시간 제약 조건이 없는 경우 Azure Data Factory 같은 IoT Hub 또는 일괄 처리 데이터 전송을 통해 파일 업로드를 활용합니다. 파일 업로드에 IoT Edge Blob 모듈을 사용할 수 있습니다.

장치 관리 및 모델링 계층

다양한 유형의 디바이스가 IoT 솔루션에 연결할 수 있으며 IoT 솔루션은 동시에 많은 디바이스 및 게이트웨이에 연결할 수 있습니다. 디바이스 및 게이트웨이 연결 및 구성 외에도 IoT 솔루션은 디바이스 및 게이트웨이가 캡처하고 수집하는 데이터를 이해해야 하며 해당 데이터를 전송하고 컨텍스트화해야 합니다.

IoT 구성 요소는 다양한 프로토콜, 연결, 데이터 수집 빈도 및 통신 패턴을 사용할 수 있습니다. IoT 솔루션은 연결된 디바이스 및 게이트웨이 및 구성 방법을 관리할 수 있어야 합니다.

성능 효율성을 위해 디바이스 및 구성을 관리하려면 다음을 수행합니다.

  • 디바이스 및 메시지 로드에 따라 크기 조정을 최적화합니다.

  • 계층 및 단위 수에 따라 클라우드 게이트웨이에서 처리할 수 있는 메시지 수를 파악합니다.

  • 데이터 배포, 계절성 및 버스팅으로 인한 지속적인 처리량의 변칙을 고려합니다.

  • IoT 솔루션이 수백만 개의 디바이스를 관리해야 하는 경우 여러 클라우드 게이트웨이를 사용합니다. DPS를 사용하여 IoT Hub에 디바이스를 할당합니다.

DPS를 사용하여 디바이스 프로비전

DPS를 사용하여 프로비전 중, IoT Hub 연결을 더 이상 사용할 수 없거나 디바이스를 다시 부팅하는 동안 IoT Hub에 대한 연결을 설정합니다.

  • DPS 균등 가중 배포 정책을 사용하여 사용 사례에 따라 프로비전 가중치를 조정합니다. 자세한 내용은 할당 정책이 IoT Hub에 디바이스를 할당하는 방법을 참조하세요.

  • DPS 부하와 할당량의 균형을 맞추기 위해 배포되거나 더 작은 일괄 처리로 일정 기간 동안 IoT 솔루션에 디바이스를 프로비전하는 것이 좋습니다. 일괄 처리로 온보딩할 때 일괄 처리 및 전체 마이그레이션 타임라인 계획합니다. 작업 수, 디바이스 등록 및 대기 시간 및 재시도를 포함하여 분당 최대 연결 수의 DPS 제한을 고려합니다.

  • DPS를 사용하여 대기 시간에 따라 다른 지역의 IoT Hub에 디바이스를 할당합니다.

  • DPS 연결 문자열 대한 캐싱 전략을 사용하여 DPS 다시 연결 작업을 줄입니다.

다운스트림 디바이스 관리

IoT 솔루션은 이러한 게이트웨이 또는 에지 디바이스에 연결할 수 있는 사이트 또는 위치 및 다운스트림 디바이스당 여러 게이트웨이 또는 에지 디바이스가 있는 경우 수평적으로 확장할 수 있습니다.

  • 다운스트림 디바이스의 수, 메시지 및 메시지 크기가 시간이 지남에 따라 변경되고 프로토콜 또는 메시지를 번역해야 하는 경우 변환 모드에서 여러 게이트웨이 및 에지 디바이스를 사용합니다. 변환 모드의 게이트웨이 및 에지 디바이스는 프로토콜 또는 메시지를 다운스트림 디바이스 간에 변환할 수 있지만 다운스트림 디바이스가 연결된 게이트웨이를 찾으려면 매핑이 필요합니다. 번역 모드를 사용할 때 게이트웨이 또는 에지 디바이스에서 추가된 메시지 번역 및 버퍼링 오버헤드를 고려합니다.

  • 여러 게이트웨이 및 에지 디바이스를 투명 모드로 사용하여 사이트 또는 위치별로 시간이 지남에 따라 번호가 변경될 수 있는 경우 다운스트림 MQTT(메시지 큐 원격 분석 전송) 또는 AMQP 디바이스를 연결합니다. 투명 모드의 게이트웨이 및 에지 디바이스는 양방향 통신을 위해 MQTT/AMQP 디바이스를 연결할 수 있습니다. 투명 모드를 사용할 때 게이트웨이 또는 에지 디바이스에서 추가된 메시지 버퍼링, 스토리지 및 구성 오버헤드를 고려합니다.

전송 계층

전송 계층은 디바이스와 IoT 솔루션 간의 연결을 처리하여 IoT 메시지를 네트워크 패키지로 변환하고 실제 네트워크를 통해 보냅니다. IoT 솔루션은 일반적으로 AMQP 및 MQTT 연결 프로토콜을 사용합니다.

리소스 사용 최적화

디바이스와 클라우드 간의 연결은 대상 디바이스 및 메시지 수를 처리하기 위해 안전하고 안정적이며 확장성이 있어야 합니다.

  • 디바이스에서 클라우드 게이트웨이로의 개방형 상태 저장 연결을 사용합니다. IoT Hub MQTT, AMQP 또는 WebSocket 프로토콜을 사용하여 수백만 개의 열린 상태 저장 연결을 관리하는 데 최적화되어 있습니다. 디바이스에 대한 열린 연결을 유지하여 보안 핸드셰이크, 인증 및 권한 부여의 오버헤드를 최소화합니다. 이 방법은 성능을 향상시키고 필요한 대역폭을 크게 줄입니다.

  • 단일 연결에서 여러 채널의 멀티플렉싱을 지원하는 AMQP 프로토콜을 사용하여 클라우드 게이트웨이에 필요한 열린 연결 수를 최소화합니다. 투명 게이트웨이는 멀티플렉싱을 사용하여 단일 연결을 통해 자체 채널을 사용하여 여러 리프 디바이스를 연결할 수 있습니다.

  • 디바이스 및 모듈 쌍 클라우드 게이트웨이 패턴을 사용하여 디바이스와 클라우드 간에 상태 정보를 비동기적으로 교환합니다.

  • 디바이스가 다른 클라우드 게이트웨이에 연결할 때 디바이스 상태를 이동하도록 DPS를 구성합니다.

데이터 통신 최적화

디바이스-클라우드 메시지의 수와 크기는 성능 및 비용에 영향을 줍니다. 데이터 통신 평가는 IoT 워크로드의 성능 효율성의 핵심입니다.

  • 광범위한 대역폭을 사용하여 클라우드로 데이터를 보내지 않는 효율적인 데이터 형식 및 인코딩을 사용합니다. 낮은 대역폭 네트워크의 경우 압축 또는 이진 형식을 사용하는 것이 좋지만 클라우드에서 데이터를 압축 해제하거나 변환하는 오버헤드를 이해합니다.

  • 대용량 데이터를 로컬로 저장하고 매시간 또는 매일 업로드하는 것이 좋습니다.

  • 많은 작은 디바이스-클라우드 메시지를 더 적은 수의 더 큰 메시지로 그룹화하여 총 수를 줄입니다. 그러나 큰 메시지만 보내지 않고 평균 메시지 크기와 처리량 간에 균형을 이루도록 합니다.

스토리지 계층

IoT 솔루션에서 수집 및 참조되는 다양한 유형의 데이터에는 디바이스, 게이트웨이 및 클라우드의 다양한 시나리오에 맞게 특수화되고 최적화된 스토리지 유형이 필요한 경우가 많습니다. 전역 또는 로컬로 여러 지역에서 사용할 수 있어야 하고 경우에 따라 대기 시간을 최적화하기 위해 복제해야 하는 데이터는 IoT 스토리지 복잡성을 증가합니다.

  • 타임스탬프와 값이 있는 시계열 데이터를 저장하려면 시계열 데이터베이스를 사용합니다. 필터링을 위한 열(예: CustomerID, RoomID 또는 기타 사용 사례별 열)을 사용하여 시계열 데이터 원격 분석을 보강합니다.

  • 디바이스 및 게이트웨이 스토리지를 사용하여 데이터를 캐싱하거나 연결이 끊긴 경우 데이터를 유지합니다. 필요한 스토리지 공간을 고려합니다. 모든 데이터를 유지하지 말고 다운샘플링을 사용하거나, 집계만 저장하거나, 제한된 기간 동안 데이터를 저장합니다.

  • 데이터 수집 및 이벤트 처리 스토리지를 보고 및 통합 스토리지 요구 사항과 분리하는 것이 좋습니다.

  • 필요한 처리량, 크기, 보존 기간, 데이터 볼륨, CRUD 요구 사항 및 지역 복제의 필요성에 맞는 데이터 스토리지 형식을 사용합니다. 몇 가지 예는 Azure Data Lake Storage, Azure Data Explorer, Azure SQL 및 Azure Cosmos DB입니다.

이벤트 처리 및 분석 계층

디바이스에서 생성하는 데이터를 IoT 솔루션으로 보내기 전에 처리할 수 있습니다. 데이터 처리에는 변환, 컨텍스트화, 필터링 및 라우팅 또는 추세 분석 또는 변칙 검색과 같은 고급 분석이 포함될 수 있습니다.

에지 및 클라우드 처리 최적화

로컬 컴퓨팅을 사용하여 디바이스 또는 에지에서 시간 제약 조건을 사용하여 실시간 및 거의 실시간 워크로드 또는 작고 최적화된 짧은 대기 시간 처리를 실행합니다. 클라우드에서 더 큰 워크로드 또는 추가된 다른 워크로드 또는 외부 데이터 또는 컴퓨팅 종속성을 실행합니다.

예를 들어 에지에서 기계 학습 알고리즘을 실행하여 비디오 스트림의 사용자 수를 계산하고 개수가 포함된 이벤트를 클라우드로 보냅니다. 클라우드를 사용하여 여러 공장 간의 추세를 비교합니다.

Stream Analytics Edge 모듈을 사용하여 에지에서 분석 워크로드를 실행합니다. 예를 들어 에지에서 변칙 검색을 실행하고 검색된 변칙을 사용하여 클라우드로 전송된 이벤트에 레이블을 지정할 수 있습니다. 에지에서 분석을 실행할 때 추가 대기 시간, 지연 도착 및 창에 미치는 영향을 고려합니다.

연결된 다운스트림 디바이스가 많은 에지 워크로드의 오버헤드에 유의하세요. 에지 노드는 모든 메시지를 전달하거나 처리하고 일시적인 클라우드 연결이 있는 경우 모든 데이터 캐싱을 처리해야 합니다. 에지 노드당 계획된 최대 다운스트림 디바이스 및 메시지를 테스트하여 솔루션에 미치는 성능 영향의 유효성을 검사합니다. 메시지 변환 또는 보강이 에지, IoT Hub 또는 클라우드 이벤트 처리에 미칠 수 있는 성능 영향에 유의하세요.

개별 워크로드 분류

시간 제약 조건과 필요한 대기 시간 및 응답 시간(예: 시간당 일괄 처리와 초 내 응답)을 기준으로 워크로드를 구분합니다. SoC(하이브리드 하드웨어 시스템-온-어-칩)는 디바이스 수준에서 워크로드를 지원할 수 있습니다.

에지에서 우선 순위 큐를 사용하여 서로 다른 우선 순위 및 TTL을 사용하여 서로 다른 데이터 스트림을 구분합니다. 예를 들어 알람은 항상 먼저 전송되어야 하지만 원격 분석보다 TTL이 낮아야 합니다.

클라우드에서는 Azure Event Hubs 소비자 그룹을 사용하여 서로 다른 데이터 스트림을 분리하고 원격 분석과 다르게 알람을 처리하고 스케일링할 수 있습니다. IoT Hub 경로를 사용하여 필터링 및 별도의 엔드포인트를 사용하여 서로 다른 데이터 스트림을 구분할 수도 있습니다. IoT Hub 메시지 라우팅은 약간의 대기 시간을 추가합니다. Event Hubs, Azure Event Grid 또는 Azure Service Bus 사용하여 클라우드의 역압으로부터 보호하면서 워크로드를 분산합니다.

지나치게 복잡한 IoT Hub 라우팅 규칙은 처리량, 특히 모든 메시지를 역직렬화하고 검사해야 하는 메시지 본문 JSON 필터를 사용하는 라우팅 규칙에 영향을 줄 수 있습니다.

대용량 클라우드 데이터 처리

대용량 클라우드 데이터에 대한 성능 효율성을 최적화하려면 다음을 수행합니다.

  • 고성능 처리량에 이미 최적화된 Azure Data Lake Storage 및 Azure Data Explorer 같은 데이터 대상과 IoT Hub 간의 기본 서비스 통합을 사용합니다.

  • Event Hubs SDK를 사용하여 포함된 이벤트 프로세서를 사용하여 IoT Hub에서 사용자 지정 수집을 개발합니다. 이벤트 프로세서는 디바이스 및 호스트의 균형을 조정할 수 있습니다.

  • 동시 데이터 판독기 수 및 필요한 처리량에 적합한 수의 IoT Hub 파티션 및 소비자 그룹을 사용합니다.

  • 데이터 수집 및 이벤트 처리에 필요한 스토리지를 보고 및 통합에 필요한 스토리지와 분리합니다.

  • 필요한 처리량, 크기, 보존 기간, 데이터 볼륨, CRUD 요구 사항 및 지역 복제에 따라 요구 사항에 맞는 데이터 스토리지를 사용합니다. 예를 들어 Azure Data Lake Storage, Azure Data Explorer, Azure SQL 또는 Azure Cosmos DB가 있습니다. 자세한 내용은 애플리케이션에 대한 Azure 데이터 저장소 선택을 참조하세요.

통합 계층

통합 계층은 IoT 솔루션을 다른 서비스 및 비즈니스 애플리케이션에 연결합니다.

  • 통합 처리에서 IoT 솔루션 수집 파이프라인을 분리합니다. 통합 계층의 복잡한 쿼리 또는 로드가 데이터 수집 성능에 영향을 주지 않는지 확인합니다.

  • IoT 데이터 및 명령에 액세스하려면 잘 정의되고 버전이 지정된 API를 사용합니다.

  • 최종 사용자가 IoT 데이터 스토리지에 대해 사용자 정의 쿼리를 만들 수 있는 도구는 사용하지 않습니다. 통합 및 보고에 별도의 데이터 저장소를 사용하는 것이 좋습니다.

DevOps 계층

다음 DevOps 메커니즘을 사용하여 성능 효율성을 최대화합니다.

  • 컨테이너 이미지의 로컬 캐싱 및 배포를 위한 연결된 레지스트리 입니다.

  • IoT Hub 디바이스 및 게이트웨이를 포함하여 한 번에 여러 디바이스로 배포를 업데이트합니다.

  • 디바이스 쌍 및 모듈 쌍을 사용하여 확장 가능하고 효율적인 방식으로 디바이스 구성을 업데이트합니다.

  • 위치 및 다른 유형의 디바이스와 같은 프로덕션 환경을 복제하기 위한 스트레스 및 부하 테스트를 포함한 성능 테스트.

모니터링

Azure Monitor를 사용하여 중요한 메트릭에 대한 경고와 함께 IoT Hub 메트릭을 수집합니다. 초당 전송되는 디바이스-클라우드 메시지와 같은 현재 크기 제한에 따라 Azure Monitor 경고를 설정합니다. 예정된 확장성 제한에 대한 사전 알림을 위해 경고를 제한의 백분율(예: 75%)로 설정합니다. 또한 제한 오류 수와 같은 로그 및 메트릭에 대한 Azure Monitor 경고를 설정합니다.

IoT Hub 상태 변경 시 알림을 트리거하도록 Azure Service Health 서비스 경고를 설정합니다.

다음 단계