Azure IoT Edge 모듈 이해

적용 대상:IoT Edge 1.4 checkmark IoT Edge 1.4

Important

IoT Edge 1.4는 지원되는 릴리스입니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

Azure IoT Edge를 사용하면 에지에서 비즈니스 논리를 모듈 형태로 배포하고 관리할 수 있습니다. Azure IoT Edge 모듈은 IoT Edge가 관리하는 계산의 최소 단위이며 Azure 서비스(예: Azure Stream Analytics) 또는 고유한 솔루션별 코드를 포함할 수 있습니다. 모듈을 어떻게 개발, 배포 및 유지 관리해야 하는지 이해하려면 모듈의 네 가지 개념적 요소를 고려하세요.

  • 모듈 이미지는 모듈을 정의하는 소프트웨어가 포함된 패키지입니다.
  • 모듈 인스턴스는 IoT Edge 디바이스에서 모듈 이미지를 실행하는 특정 계산 단위입니다. 모듈 인스턴스는 IoT Edge 런타임에 의해 시작됩니다.
  • 모듈 ID는 각 모듈 인스턴스에 연결된 IoT Hub에 저장된 정보(보안 자격 증명 포함)입니다.
  • 모듈 쌍은 IoT Hub에 저장된 JSON 문서로, 메타데이터, 구성 및 조건 등 모듈 인스턴스의 상태 정보를 포함합니다.

모듈 이미지 및 인스턴스

IoT Edge 모듈 이미지에는 IoT Edge 런타임의 관리, 보안 및 통신 기능을 활용하는 애플리케이션이 포함되어 있습니다. 자신만의 모듈 이미지를 개발하거나 Azure Stream Analytics와 같이 지원되는 Azure 서비스에서 모듈 이미지를 내보낼 수 있습니다. 이미지는 클라우드에 존재하며 다른 솔루션으로 업데이트, 변경 및 배포할 수 있습니다. 예를 들어 기계 학습을 사용하여 생산 라인의 결과를 예측하는 모듈은 컴퓨터 시각을 사용하여 드론을 제어하는 모듈과는 별도의 이미지로 존재합니다.

모듈 이미지가 디바이스에 배포되고 IoT Edge 런타임에서 시작될 때마다 해당 모듈의 새 인스턴스가 만들어집니다. 전 세계의 다른 부분에 있는 두 디바이스가 동일한 모듈 이미지를 사용할 수 있습니다. 그러나 디바이스에서 모듈이 시작될 때 각 디바이스는 고유한 모듈 인스턴스를 갖게 됩니다.

Diagram - Module images in cloud, module instances on devices

구현 시 모듈 이미지는 컨테이너 이미지로 리포지토리에 존재하며 모듈 인스턴스는 디바이스의 컨테이너입니다.

모듈 ID

IoT Edge 런타임 새로운 모듈 인스턴스를 생성하면 해당 모듈 ID를 가져옵니다. 모듈 ID는 IoT Hub에 저장되며 해당 모듈 인스턴스의 모든 로컬 및 클라우드 통신에 대한 주소 지정 및 보안 범위로 사용됩니다.

모듈 인스턴스와 연관된 ID는 인스턴스가 실행 중인 디바이스의 ID와 솔루션의 해당 모듈에 제공한 이름에 따라 다릅니다. 예를 들어 Azure Stream Analytics를 사용하는 insight 모듈을 호출하여 Hannover01이라는 디바이스에 배포하면 IoT Edge 런타임에서 /devices/Hannover01/modules/insight이라는 해당 모듈 ID를 만듭니다.

동일한 디바이스에 하나의 모듈 이미지를 여러 번 배포해야 하는 경우 동일한 이미지를 다른 이름으로 여러 번 배포할 수 있습니다.

Diagram - Module identities are unique within devices and across devices

모듈 쌍

각 모듈 인스턴스에는 모듈 인스턴스를 구성하는 데 사용할 수 있는 해당 모듈 쌍이 있습니다. 인스턴스와 쌍은 모듈 ID를 통해 서로 연결됩니다.

모듈 쌍은 모듈 정보와 구성 속성을 저장하는 JSON 문서입니다. 이 개념은 IoT Hub의 디바이스 쌍 개념과 유사합니다. 모듈 쌍의 구조는 디바이스 쌍과 같습니다. 두 유형의 쌍과 상호 작용하는 데 사용되는 API도 같습니다. 이 둘의 유일한 차이점은 클라이언트 SDK를 인스턴스화하는 데 사용되는 ID입니다.

// Create a ModuleClient object. This ModuleClient will act on behalf of a
// module since it is created with a module’s connection string instead
// of a device connection string.
ModuleClient client = new ModuleClient.CreateFromEnvironmentAsync(settings);
await client.OpenAsync();

// Get the module twin
Twin twin = await client.GetTwinAsync();

오프라인 기능

Azure IoT Edge 모듈은 한 번 이상 IoT Hub와 동기화한 후 오프라인에서 무기한으로 작업할 수 있습니다. IoT Edge 디바이스는 이 오프라인 기능을 다른 IoT 디바이스로 확장할 수도 있습니다. 자세한 내용은 IoT Edge 디바이스, 모듈, 다운스트림 디바이스용 확장 오프라인 기능 이해를 참조하세요.

다음 단계