Azure IoT Edge 런타임 및 해당 아키텍처 이해

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

Important

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

IoT Edge 런타임은 디바이스를 IoT Edge 디바이스로 바꾸는 프로그램 컬렉션입니다. 전체적으로 IoT Edge 런타임 구성 요소는 IoT Edge 디바이스를 사용하여 에지에서 실행될 코드를 받고 결과를 전달합니다.

IoT Edge 런타임은 IoT Edge 디바이스에서 다음 기능을 담당합니다.

  • 디바이스에 워크로드를 설치하고 업데이트합니다.

  • 디바이스에서 Azure IoT Edge 보안 표준을 유지합니다.

  • IoT Edge 모듈이 항상 실행되도록 해야 합니다.

  • 원격 모니터링을 위해 모듈 상태를 클라우드에 보고합니다.

  • 다음 간의 통신 관리:

    • 다운스트림 디바이스 및 IoT Edge 디바이스
    • IoT Edge 디바이스의 모듈
    • IoT Edge 디바이스 및 클라우드
    • IoT Edge 디바이스

Screenshot of how runtime communicates insights and module health to I o T Hub.

IoT Edge 런타임의 책임은 모듈 관리와 통신이라는 두 가지 범주로 나뉩니다. 이 두 역할은 IoT Edge 런타임의 일부인 두 가지 구성 요소를 통해 수행됩니다. ‘IoT Edge 에이전트’는 모듈을 배포 및 모니터링하며, ‘IoT Edge 허브’는 통신을 담당합니다.

IoT Edge 에이전트와 IoT Edge 허브는 모두 IoT Edge 디바이스에서 실행되는 다른 모듈과 마찬가지로 모듈입니다. 때로는 ‘런타임 모듈’이라고도 합니다.

IoT Edge 에이전트

IoT Edge 에이전트는 Azure IoT Edge 런타임을 구성하는 두 가지 모듈 중 하나입니다. 모듈을 인스턴스화하고, 모듈을 계속 실행하며, 모듈의 상태를 IoT Hub에 다시 보고합니다. 이 구성 데이터는 IoT Edge 에이전트 모듈 쌍의 속성으로 작성됩니다.

IoT Edge 보안 디먼은 디바이스 시작 시 IoT Edge 에이전트를 시작합니다. 에이전트는 IoT Hub에서 모듈 쌍을 검색하고 배포 매니페스트를 검사합니다. 배포 매니페스트는 시작되어야 하는 모듈을 선언하는 JSON 파일입니다.

배포 매니페스트의 각 항목에는 모듈에 대한 특정 정보가 포함되며, 모듈의 수명 주기를 제어하기 위해 IoT Edge 에이전트에서 사용합니다. IoT Edge 에이전트가 모듈을 제어하는 데 사용하는 모든 속성에 대한 자세한 내용은 IoT Edge 에이전트 및 IoT Edge 허브 모듈 쌍의 속성을 참조하세요.

IoT Edge 에이전트는 IoT Hub에 런타임 응답을 보냅니다. 가능한 응답 목록은 다음과 같습니다.

  • 200 - 확인
  • 400 - 배포 구성이 잘못되었거나 유효하지 않습니다.
  • 417 - 디바이스에 배포 구성 집합이 없습니다.
  • 412 - 배포 구성의 스키마 버전이 잘못되었습니다.
  • 406 - IoT Edge 디바이스가 오프라인 상태이거나 상태 보고서를 전송하지 않습니다.
  • 500 - IoT Edge 런타임에서 오류가 발생했습니다.

배포 매니페스트 생성에 대한 자세한 내용은 IoT Edge에서 모듈을 배포하고 경로를 설정하는 방법 알아보기를 참조하세요.

보안

IoT Edge 에이전트는 IoT Edge 디바이스의 보안에서 중요한 역할을 합니다. 예를 들어 모듈의 이미지를 시작하기 전에 해당 이미지의 확인과 같은 작업을 수행합니다.

Azure IoT Edge 보안 프레임워크에 대한 자세한 내용은 IoT Edge 보안 관리자를 참조하세요.

IoT Edge 허브

IoT Edge 허브는 Azure IoT Edge 런타임을 구성하는 다른 모듈입니다. IoT Hub와 동일한 프로토콜 엔드포인트를 노출하여 IoT Hub에 대한 로컬 프록시 역할을 합니다. 이 일관성은 클라이언트에서 IoT Hub와 마찬가지로 IoT Edge 런타임에 연결할 수 있음을 의미합니다.

IoT Edge 허브는 로컬로 실행되는 IoT Hub의 전체 버전이 아닙니다. IoT Edge 허브는 일부 작업을 IoT Hub에 자동으로 위임합니다. 예를 들어 IoT Edge 허브는 첫 번째 연결에서 IoT Hub의 권한 부여 정보를 자동으로 다운로드하여 디바이스를 연결할 수 있도록 합니다. 첫 번째 연결이 설정되면 IoT Edge 허브에서 권한 부여 정보를 로컬로 캐시합니다. 해당 디바이스에서의 이후 연결은 권한 부여 정보를 클라우드에서 다시 다운로드할 필요 없이 인증됩니다.

클라우드 통신

IoT Edge 허브는 IoT Edge 솔루션에서 사용하는 대역폭을 줄이기 위해 클라우드에 실제로 연결되는 수를 최적화합니다. IoT Edge 허브는 모듈 또는 다운스트림 디바이스에서 논리적 연결을 가져와서 클라우드에 대한 하나의 물리적 연결에 결합합니다. 이 프로세스의 세부 정보는 솔루션의 나머지 부분에 투명합니다. 클라이언트는 모두 동일한 연결을 통해 전송되는 경우에도 클라우드에 대한 자체 연결이 있다고 생각하면 됩니다. IoT Edge 허브는 AMQP 또는 MQTT 프로토콜을 사용하여 다운스트림 디바이스에서 사용하는 프로토콜과 별개로 클라우드와 업스트림 통신할 수 있습니다. 하지만 IoT Edge 허브는 현재 업스트림 프로토콜 및 해당 멀티플렉싱 기능으로 AMQP를 사용하여 논리적 연결을 단일 물리적 연결로 결합하는 것만 지원합니다. AMQP는 기본 업스트림 프로토콜입니다.

Screenshot showing relationships to I o T Edge hub as a gateway between physical devices and I o T Hub.

IoT Edge 허브는 IoT Hub에 연결되어 있는지 여부를 결정할 수 있습니다. 연결이 끊어진 경우 IoT Edge 허브는 메시지 또는 쌍 업데이트를 로컬로 저장합니다. 연결이 다시 설정되면 모든 데이터가 동기화됩니다. 이 임시 캐시에 사용되는 위치는 IoT Edge 허브 모듈 쌍의 속성으로 결정됩니다. 캐시의 크기는 제한되지 않으며, 디바이스에 스토리지 용량이 있는 동안에는 증가합니다. 자세한 내용은 오프라인 기능을 참조하세요.

로컬 통신

IoT Edge 허브는 로컬 통신을 용이하게 합니다. 디바이스 및 모듈을 서로 독립적으로 유지하기 위해 메시지를 중개하여 디바이스 및 모듈, 모듈과 모듈 간의 통신을 지원합니다. IoT Edge 허브는 IoT Hub에서 지원하는 메시지 라우팅 기능을 지원합니다.

라우팅 사용

중개 메커니즘은 IoT Hub와 동일한 라우팅 기능을 사용하여 디바이스 또는 모듈 간에 메시지를 전달하는 방법을 지정합니다. 첫 번째 디바이스 또는 모듈은 메시지를 수락하는 입력과 메시지를 작성하는 출력을 지정합니다. 그런 다음, 솔루션 개발자는 잠재적인 필터를 사용하여 소스(예: 출력)와 대상(예: 입력) 간에 메시지를 라우팅할 수 있습니다.

Screenshot showing how routes between modules go through I o T Edge hub.

라우팅은 AMQP 프로토콜을 사용하여 Azure IoT 디바이스 SDK로 빌드된 디바이스 또는 모듈에서 사용할 수 있습니다. 모든 메시징 IoT Hub 기본 형식(예: 원격 분석), 직접 메서드, C2D, 트윈은 지원되지만 사용자 정의 항목을 통한 통신은 지원되지 않습니다.

경로에 대한 자세한 내용은 IoT Edge에서 모듈을 배포하고 경로를 설정하는 방법 알아보기를 참조하세요.

사용할 수 있는 중개 메커니즘 기능:

기능 라우팅
D2C 원격 분석
로컬 원격 분석
DirectMethods
디바이스에 대한 C2D
주문
필터링
사용자 정의 항목
디바이스 간
로컬 브로드캐스팅

IoT Edge 허브에 연결하기

IoT Edge 허브는 MQTT 프로토콜 또는 AMQP 프로토콜을 통해 디바이스 또는 모듈 클라이언트에서 연결을 허용합니다.

참고 항목

IoT Edge 허브는 MQTT 또는 AMQP를 사용하여 연결되는 클라이언트를 지원합니다. HTTP를 사용하는 클라이언트는 지원하지 않습니다.

클라이언트에서 IoT Edge 허브에 연결하면 다음 작업이 수행됩니다.

  1. TLS(전송 계층 보안)를 사용하는 경우(권장 사항), TLS 채널이 클라이언트와 IoT Edge 허브 간의 암호화된 통신을 설정하도록 빌드됩니다.
  2. 인증 정보가 클라이언트에서 IoT Edge 허브로 전송되어 자신을 식별합니다.
  3. IoT Edge 허브는 권한 부여 정책에 따라 연결을 승인하거나 거부합니다.

보안 연결(TLS)

기본적으로 IoT Edge 허브는 TLS(전송 계층 보안)로 보호되는 연결(예: 제3자가 암호 해독할 수 없는 암호화된 연결)만 허용합니다.

클라이언트가 포트 8883(MQTTS) 또는 5671(AMQPS)에서 IoT Edge 허브에 연결하는 경우 TLS 채널을 빌드해야 합니다. TLS 핸드셰이크 중에 IoT Edge 허브가 클라이언트의 유효성을 검사하는 데 필요한 인증서 체인을 보냅니다. 인증서 체인의 유효성을 검사하려면 IoT Edge 허브의 루트 인증서를 클라이언트에서 신뢰할 수 있는 인증서로 설치해야 합니다. 루트 인증서를 신뢰할 수 없는 경우 클라이언트 라이브러리는 인증서 확인 오류가 발생한 IoT Edge 허브에서 거부됩니다.

디바이스 클라이언트에서 Broker의 해당 루트 인증서를 설치하기 위해 따라야 하는 단계는 투명 게이트웨이다운스트림 디바이스 준비 문서에 설명되어 있습니다. 모듈은 IoT Edge 디먼 API를 사용하여 IoT Edge 허브와 동일한 루트 인증서를 사용할 수 있습니다.

인증

IoT Edge Hub는 IoT Hub ID를 보유한 디바이스 또는 모듈에서의 연결만 허용합니다. 예를 들어 IoT Hub에 등록되어 있으며 IoT 허브에서 지원하는 다음 세 가지 클라이언트 인증 방법 중 하나를 사용하여 ID를 증명할 수 있습니다. 대칭 키 인증, X.509 자체 서명 인증, X.509 CA 서명 인증 해당 IoT Hub ID는 IoT Edge 허브에서 로컬로 확인할 수 있기 때문에 오프라인 상태인 동안에도 연결할 수 있습니다.

IoT Edge 모듈은 현재 대칭 키 인증만 지원합니다.

Authorization

클라이언트가 IoT Hub에 정의된 신뢰할 수 있는 클라이언트 집합에 속하는지 확인합니다. IoT Hub에서 부모/자식 또는 디바이스/모듈 관계를 설정하여 신뢰할 수 있는 클라이언트 집합을 지정합니다. IoT Edge에서 모듈을 만들면 해당 모듈과 해당 IoT Edge 디바이스 간에 트러스트 관계가 자동으로 설정됩니다. 이는 라우팅 중개 메커니즘에서 지원되는 유일한 권한 부여 모델입니다.

원격 구성

IoT Edge 허브는 완전히 클라우드로 제어됩니다. 모듈 쌍을 통해 IoT Hub에서 구성을 가져옵니다. 따라서 트윈은 배포 내에서 메시지가 전달되는 방식을 선언하는 경로라는 desired 속성을 포함합니다. 경로에 대한 자세한 내용은 경로 선언을 참조하세요.

또한 IoT Edge 허브의 환경 변수를 설정하여 몇 가지 구성 작업을 수행할 수 있습니다.

런타임 품질 원격 분석

IoT Edge는 호스트 런타임 및 시스템 모듈에서 익명의 원격 분석을 수집하여 제품 품질을 개선합니다. 이 정보를 런타임 품질 원격 분석이라고 합니다. 수집된 원격 분석은 IoT Edge 에이전트에서 IoT Hub로, 디바이스와 클라우드 간의 메시지 형태로 주기적으로 전송됩니다. 해당 메시지는 고객의 일반 원격 분석에 표시되지 않으며 메시지 할당량을 사용하지 않습니다.

IoT Edge 에이전트 및 허브는 디바이스의 성능을 파악할 수 있도록 수집 가능한 메트릭을 생성합니다. 해당 메트릭의 하위 집합은 런타임 품질 원격 분석의 일부로 IoT Edge 에이전트가 수집합니다. 런타임 품질 원격 분석을 위해 수집된 메트릭은 ms_telemetry 태그로 레이블이 지정됩니다. 사용 가능한 모든 메트릭에 대한 자세한 내용은 기본 제공 메트릭 액세스를 참조하세요.

디바이스 및 모듈 이름과 같이 개인이나 조직이 식별할 수 있는 정보는 런타임 품질 원격 분석의 익명 특성을 보장하기 위해 업로드 전에 제거됩니다.

IoT Edge 에이전트는 1시간마다 원격 분석을 수집하고 24시간마다 메시지 하나를 IoT Hub로 보냅니다.

디바이스에서 런타임 원격 분석을 보내는 것을 옵트아웃하려는 경우 다음 두 가지 방법을 사용할 수 있습니다.

  • SendRuntimeQualityTelemetry환경 변수를 edgeAgent에 대해 false로 설정하거나
  • 배포하는 동안 Azure Portal에서 옵션의 선택을 취소합니다.

다음 단계