이 개요에서는 일반적인 Azure IoT 솔루션에 연결하는 자산 및 디바이스 개발에 대한 주요 개념을 소개합니다. 각 섹션에는 자세한 내용과 참고 자료를 제공하는 콘텐츠의 링크가 포함되어 있습니다. 일반적으로 디바이스는 IoT Hub와 같은 클라우드 기반 서비스에 직접 연결되지만 자산은 Azure IoT Operations와 같은 환경의 에지 기반 서비스에 연결됩니다. 이 문서에는 자산과 디바이스 모두에 대한 정보가 포함되어 있습니다.
다음 다이어그램은 일반적인 에지 기반 IoT 솔루션의 구성 요소에 대한 개략적인 보기를 보여 줍니다. 이 문서에서는 다이어그램에 표시된 자산 및 커넥터에 중점을 둡니다.
자산에는 일반적으로 표준 프로토콜을 구현하는 기본 제공 펌웨어가 있습니다. 예를 들어 로봇 암은 OPC UA 클라이언트일 수 있으며 보안 비디오 카메라는 ONVIF를 구현할 수 있습니다. Azure IoT Operations에는 이러한 프로토콜을 사용하여 자산과 통신하고 자산의 메시지를 MQTT 메시지로 변환할 수 있는 다양한 커넥터가 포함되어 있습니다. 일부 자산은 다음과 같은 작업을 수행할 수 있도록 메시지를 받을 수 있습니다.
보안 카메라를 이동하거나 기울입니다.
로봇 팔의 로깅 수준을 변경합니다.
펌웨어 업데이트를 시작합니다.
고유한 사용자 지정 커넥터를 만들어 Azure IoT Operations에서 기본적으로 지원되지 않는 프로토콜을 사용하는 자산에 연결할 수 있습니다.
다음 다이어그램에서는 일반적인 클라우드 기반 IoT 솔루션의 구성 요소에 대한 개략적인 보기를 보여 줍니다. 이 문서에서는 다이어그램에 표시된 디바이스 및 게이트웨이에 중점을 둡니다.
Azure IoT에서 디바이스 개발자는 솔루션의 디바이스에서 실행하기 위한 코드를 작성합니다. 이 코드는 일반적으로 다음을 수행합니다.
클라우드 엔드포인트에 대한 보안 연결을 설정합니다.
연결된 센서에서 수집된 원격 분석을 클라우드로 보냅니다.
디바이스 상태를 관리하고 해당 상태를 클라우드와 동기화합니다.
클라우드에서 보낸 명령에 응답합니다.
클라우드에서 소프트웨어 업데이트를 설치할 수 있습니다.
디바이스가 클라우드에서 연결이 끊긴 동안에도 계속 작동할 수 있도록 합니다.
자산 및 디바이스 유형
IoT 솔루션에는 다양한 유형의 자산 및 디바이스가 포함될 수 있습니다. 일반적으로 에지 기반 솔루션의 클라우드 기반 솔루션 및 자산에서 디바이스를 찾습니다. 디바이스와 자산을 모두 포함하는 하이브리드 솔루션을 사용할 수도 있습니다.
이러한 자산에는 일반적으로 표준 프로토콜을 구현하는 기본 제공 펌웨어가 있습니다. 예를 들어 로봇 암은 OPC UA 클라이언트일 수 있으며 보안 비디오 카메라는 ONVIF 프로토콜을 구현할 수 있습니다. 에지 기반 솔루션에서는 특수 커넥터를 사용하여 이러한 자산에 연결하고 해당 자산의 메시지를 일반적인 형식으로 변환합니다.
자산의 경우 디바이스 개발자 역할에 직접 해당하는 것은 없습니다. 대신 운영자는 자산에 연결하도록 커넥터를 구성할 수 있습니다. 그러나 에지 기반 솔루션에서 기본적으로 지원되지 않는 프로토콜을 사용하는 자산에 연결하기 위해 사용자 지정 커넥터를 개발해야 할 수 있습니다.
클라우드 기반 솔루션의 예제 디바이스는 다음과 같습니다.
원격 오일 펌프의 압력 센서
에어컨 장치의 온도 및 습도 센서
엘리베이터의 가속도계
방의 감지 센서
이러한 디바이스는 일반적으로 MCU(마이크로 컨트롤러) 또는 MPU(마이크로프로세서)를 사용하여 빌드됩니다.
MCU는 MPU보다 저렴하고 작동이 더 간단합니다.
MCU는 칩 자체 내에 메모리, 인터페이스, I/O 같은 많은 기능을 포함합니다. MPU는 지원하는 칩의 구성 요소에서 이 기능에 액세스합니다.
MCU는 흔히 RTOS(실시간 OS)를 사용하거나 운영 체제 미설치(OS 없음)로 실행되며, 외부 이벤트에 대한 실시간 응답과 매우 결정론적인 반응을 제공합니다. MPU는 일반적으로 Windows, Linux 또는 macOS와 같은 범용 OS를 실행하여 비결정론적인 실시간 응답을 제공합니다. 일반적으로 작업이 완료되는 시기는 보장되지 않습니다.
특수 하드웨어 및 운영 체제의 예는 다음과 같습니다.
Windows for IoT는 클라우드 연결이 있는 MPU용 Windows의 포함된 버전으로, 간편한 프로비전 및 관리를 통해 보안 디바이스를 만들 수 있습니다.
Eclipse ThreadX는 MCU로 구동되는 IoT 및 에지 디바이스용 실시간 운영 체제입니다. Eclipse ThreadX는 배터리로 구동되고 플래시 메모리가 64KB 미만인 매우 제한된 디바이스를 지원하도록 설계되었습니다.
FreeRTOS 는 포함된 디바이스에 대한 실시간 운영 체제입니다. FreeRTOS용 Azure IoT 미들웨어와 함께 FreeRTOS를 사용하여 디바이스를 Azure IoT에 연결할 수 있습니다. 디바이스 개발을 위한 RTOS 옵션에 대한 개요는 C SDK 및 Embedded C SDK 사용 시나리오를 참조 하세요.
Azure Sphere(통합) 는 인터넷에 연결된 디바이스에 대한 기본 제공 통신 및 보안 기능을 갖춘 안전한 고급 애플리케이션 플랫폼입니다. 안전하고 연결된 교차형 MCU, 사용자 지정 상위 수준 Linux 기반 운영 체제 및 지속적이고 갱신 가능한 보안을 제공하는 클라우드 기반 보안 서비스로 구성됩니다.
디바이스 기본 형식
디바이스 개발자는 일반적으로 클라우드와 상호 작용하기 위해 디바이스 코드에서 다음 기본 형식을 구현합니다.
시계열 원격 분석을 클라우드로 보내는 ‘디바이스-클라우드’ 메시지. 디바이스에 연결된 센서에서 수집된 온도 데이터를 예로 들 수 있습니다.
캡처된 이미지 및 비디오와 같은 미디어 파일에 대한 ‘파일 업로드’. 간헐적으로 연결된 디바이스에서 원격 분석 일괄 처리를 보낼 수 있습니다. 디바이스는 대역폭을 절약하기 위해 업로드를 압축할 수 있습니다.
상태 데이터를 클라우드와 공유하고 동기화하는 ‘디바이스 쌍’. 예를 들어 디바이스는 디바이스 쌍을 사용하여 제어하는 밸브의 현재 상태를 클라우드에 보고하고 클라우드에서 원하는 대상 온도를 받을 수 있습니다.
디지털 세계의 디바이스를 나타내는 '디지털 트윈'. 예를 들어 디지털 트윈은 디바이스의 물리적 위치, 기능 및 다른 디바이스와의 관계를 나타낼 수 있습니다.
클라우드에서 명령을 수신하는 ‘직접 메서드’. 직접 메서드에는 매개 변수가 있으며 응답을 반환할 수 있습니다. 예를 들어 클라우드는 직접 메서드를 호출하여 디바이스를 30초 안에 다시 부팅하도록 요청할 수 있습니다.
클라우드에서 단방향 알림을 수신하는 클라우드-디바이스 메시지. 업데이트를 다운로드할 준비가 되었다는 알림을 예로 들 수 있습니다.
에지 기반 솔루션에서 운영자는 자산에 연결하도록 커넥터를 구성합니다. 이 구성에는 자산의 데이터와 클라우드 스키마 간의 매핑이 포함됩니다. 예를 들어 OPC UA 커넥터를 사용하면 연산자가 MQTT broker와 교환된 JSON 메시지의 태그 및 이벤트에 OPC UA 노드 ID를 매핑할 수 있습니다. 다음 스크린샷은 자산에 대한 두 가지 매핑을 정의하는 디지털 작업 환경 웹 UI의 예를 보여 줍니다.
솔루션의 다른 위치에서 연산자는 OPC UA 노드 ID의 세부 정보를 알 필요 없이 온도 및 태그 10 태그를 직접 참조할 수 있습니다.
클라우드 기반 솔루션에서 IoT 플러그 앤 플레이 솔루션 작성기에서 수동 구성 없이 솔루션과 IoT 디바이스를 통합할 수 있습니다. IoT 플러그 앤 플레이의 핵심은 디바이스가 IoT 플러그 앤 플레이 가능 애플리케이션에 디바이스의 기능을 알리는 데 사용하는 디바이스 모델입니다(예: IoT Central). 이 모델은 다음을 정의하는 요소 세트로 구성됩니다.
속성 - 디바이스 또는 다른 엔터티의 읽기 전용 또는 쓰기 가능 상태를 나타냅니다. 예를 들어 디바이스 일련 번호는 읽기 전용 속성일 수 있으며, 자동 온도 조절기의 목표 온도는 쓰기 가능 속성일 수 있습니다.
원격 분석 - 데이터가 규칙적인 센서 판독 스트림, 가끔 발생하는 오류 또는 정보 메시지인지 여부에 관계 없이 디바이스가 내보내는 데이터입니다.
디바이스에서 수행할 수 있는 함수 또는 작업을 설명하는 명령. 예를 들어 명령으로 게이트웨이를 다시 부팅하거나 원격 카메라를 사용하여 사진을 찍을 수 있습니다.
인터페이스에서 이러한 요소를 그룹화하여 모델 전체에서 재사용하면 협업을 더 쉽게 수행하고 개발 속도를 높일 수 있습니다.
IoT 플러그 앤 플레이, 모델링 및 DTDL의 사용은 선택 사항입니다. IoT 플러그 앤 플레이 또는 모델링을 사용하지 않고 IoT 디바이스 기본 형식을 사용할 수 있습니다. 또한 Azure Digital Twins 서비스는 DTDL 모델을 사용하여 건물이나 공장과 같은 환경의 디지털 모델을 기준으로 트윈 그래프를 만듭니다.
디바이스 개발자는 IoT 플러그 앤 플레이 디바이스를 구현할 때 따라야 할 규칙 집합이 있습니다. 이러한 규칙은 디바이스 SDK에서 사용할 수 있는 기본 형식을 사용하여 코드에서 디바이스 모델을 구현하는 표준 방법을 제공합니다.
컨테이너화는 가볍고 격리된 환경에서 코드를 패키지하고 실행하는 방법입니다. 컨테이너는 이식 가능하며 컨테이너 런타임을 지원하는 모든 플랫폼에서 실행할 수 있습니다. 컨테이너는 코드에 일관된 런타임 환경을 제공하기 때문에 코드를 패키지하고 배포하는 좋은 방법입니다. 런타임 환경에는 일반적으로 코드가 실행되어야 하는 서비스, 라이브러리 및 패키지가 포함됩니다.
Azure IoT Operations는 에지에서 실행되는 모든 커넥터, 브로커 및 기타 구성 요소를 컨테이너화합니다. Azure IoT Operations는 컨테이너 오케스트레이션 플랫폼인 Kubernetes 클러스터에 배포합니다. Kubernetes 클러스터에 만드는 사용자 지정 커넥터 또는 기타 구성 요소를 배포합니다.
IoT Hub에 대한 에지 기반 게이트웨이로 Azure IoT Edge를 사용하는 솔루션을 에지 기반 및 클라우드 기반 솔루션의 요소를 모두 포함하는 하이브리드 솔루션으로 볼 수 있습니다.
Docker와 같은 컨테이너를 사용하여 디바이스 코드를 실행하면 컨테이너 인프라의 기능을 사용하여 디바이스에 코드를 배포할 수 있습니다. 또한 컨테이너를 사용하면 필요한 모든 라이브러리 및 패키지 버전이 설치된 코드에 대한 런타임 환경을 정의할 수 있습니다. 컨테이너를 사용하면 업데이트를 더 쉽게 배포하고 IoT 디바이스의 수명 주기를 관리할 수 있습니다.
Azure IoT Edge는 컨테이너에서 디바이스 코드를 실행합니다. Azure IoT Edge를 사용하여 디바이스에 코드 모듈을 배포할 수 있습니다. 자세한 내용은 고유한 IoT Edge 모듈 개발을 참조하세요.
팁
Azure IoT Edge에서는 여러 시나리오가 허용됩니다. 컨테이너에서 IoT 디바이스 코드를 실행하는 것 외에도 Azure IoT Edge를 사용하여 디바이스에서 Azure 서비스를 실행하고 필드 게이트웨이를 구현할 수 있습니다. 자세한 내용은 Azure IoT Edge란?을 참조하세요.