Azure Event Grid를 사용하면 MQTT(메시지 큐 원격 분석 전송) 클라이언트가 서로 통신하고 Azure 서비스와 통신하여 IoT(사물 인터넷) 솔루션을 지원할 수 있습니다. Event Grid MQTT broker 기능을 사용하여 다음 시나리오를 수행할 수 있습니다. 이러한 시나리오를 보여 주는 코드 샘플은 이 리포지토리를 참조하세요.
- 다대일 메시징 패턴을 사용하여 원격 분석을 수집합니다. 이 패턴을 사용하면 애플리케이션이 디바이스와의 높은 수의 연결을 관리하는 부담을 Event Grid에 오프로드할 수 있습니다.
- 요청 응답(일대일) 메시징 패턴을 사용하여 MQTT 클라이언트를 제어합니다. 이 패턴을 사용하면 모든 클라이언트가 클라이언트의 역할에 관계없이 자유롭게 다른 클라이언트와 통신할 수 있습니다.
- 일대다 메시징 패턴을 사용하여 여러 클라이언트에 경고를 브로드캐스트합니다. 이 패턴을 사용하면 애플리케이션이 관심 있는 모든 클라이언트에 대해 서비스가 복제하는 메시지를 하나씩만 게시할 수 있습니다.
- HTTP 푸시 배달 기능을 통해 MQTT 메시지를 Azure 서비스 및 웹후크로 라우팅하여 MQTT 클라이언트의 데이터를 통합합니다. Azure 서비스와의 통합을 사용하여 IoT 디바이스에서 데이터 수집으로 시작하는 데이터 파이프라인을 빌드할 수 있습니다.
MQTT 브로커는 자동차, 이동성 및 제조 시나리오를 구현하는 데 이상적입니다. Azure 메시징 및 데이터 분석 서비스를 사용하여 수백만 MQTT 클라이언트를 클라우드에 연결하기 위한 안전하고 확장 가능한 솔루션을 빌드하는 방법을 알아보려면 자동차 및 제조 참조 아키텍처 를 참조하세요.
주요 개념
Event Grid MQTT broker 기능에는 다음과 같은 주요 개념이 포함됩니다.
MQTT
MQTT는 제한된 환경을 위해 설계된 게시-구독 메시징 전송 프로토콜입니다. 효율성, 확장성 및 안정성으로 인해 IoT 시나리오에 널리 사용되는 통신 표준입니다. MQTT 브로커를 사용하면 클라이언트가 WebSocket을 통해 MQTT v3.1.1, MQTT v3.1.1을 통해 WebSocket, MQTT v5 및 MQTT v5를 통해 메시지를 게시하고 구독할 수 있습니다. 다음 목록에서는 MQTT broker의 몇 가지 기능 하이라이트를 보여 줍니다.
MQTT v5 기능:
- 마지막 의지와 성약: MQTT 클라이언트에 다른 MQTT 클라이언트의 갑작스러운 연결 끊김을 알 수 있습니다. 이 기능을 사용하여 예기치 않은 연결 끊김 중에 MQTT 클라이언트 간에 예측 가능하고 안정적인 통신 흐름을 보장할 수 있습니다.
- 사용자 속성: 메시지 헤더에 사용자 지정 키/값 쌍을 추가하여 메시지에 대한 자세한 컨텍스트를 제공할 수 있습니다. 예를 들어 수신자가 메시지를 효율적으로 처리할 수 있도록 메시지의 목적 또는 원본을 포함합니다.
- 요청-응답 패턴: 클라이언트가 이전 구성 없이 응답하도록 요청에서 응답 토픽 및 상관 관계 ID를 지정하여 표준 요청-응답 비동기 패턴을 활용할 수 있습니다.
- 메시지 만료 간격: 더 이상 관련이 없거나 유효하지 않은 메시지를 무시할 때 MQTT broker에 선언할 수 있습니다. 예를 들어 부실 명령 또는 경고 무시가 있습니다.
- 토픽 별칭: 클라이언트가 토픽 필드의 크기를 줄이면 데이터 전송 비용이 절감됩니다.
- 최대 메시지 크기: 클라이언트가 서버에서 처리할 수 있는 최대 메시지 크기를 제어할 수 있습니다.
- 최대 수신: 클라이언트가 처리 속도 또는 스토리지 기능과 같은 기능에 따라 메시지 속도를 제어할 수 있습니다.
- 시작 및 세션 만료 정리: 클라이언트가 구성 가능한 시간 간격 동안 클라이언트의 구독 정보 및 메시지를 유지하여 세션의 안정성과 보안을 최적화할 수 있습니다.
- 부정 승인: 클라이언트가 다른 오류 코드에 효율적으로 대응할 수 있습니다.
- 서버에서 보낸 연결 끊기 패킷: 클라이언트에서 연결 끊기를 효율적으로 처리할 수 있습니다.
- MQTT 보존: 브로커가 토픽에 마지막으로 게시된 메시지를 저장하고 새 구독자에게 자동으로 배달하도록 합니다. 이 기능을 사용하면 디바이스가 다음 업데이트를 기다리지 않고 알려진 최신 상태를 즉시 받을 수 있습니다. 이 기능을 사용하면 IoT 시스템에서 더 빠르고 안정적인 상태 동기화를 수행할 수 있습니다.
MQTT v3.1.1 기능:
- 마지막 의지와 성약: MQTT 클라이언트에 다른 MQTT 클라이언트의 갑작스러운 연결 끊김을 알 수 있습니다. 이 기능을 사용하여 예기치 않은 연결 끊김 중에 MQTT 클라이언트 간에 예측 가능하고 안정적인 통신 흐름을 보장할 수 있습니다.
- 영구 세션: 클라이언트의 연결이 끊어질 때 클라이언트의 구독 정보 및 메시지를 유지하여 안정성을 보장합니다.
- QoS(서비스 품질) 0 및 1: 클라이언트가 통신의 효율성과 안정성을 제어할 수 있도록 합니다.
- MQTT 보존: 브로커가 토픽에 마지막으로 게시된 메시지를 저장하고 새 구독자에게 자동으로 배달하도록 합니다. 이 기능을 사용하면 디바이스가 다음 업데이트를 기다리지 않고 알려진 최신 상태를 즉시 받을 수 있습니다. 이 기능을 사용하면 IoT 시스템에서 더 빠르고 안정적인 상태 동기화를 수행할 수 있습니다.
다음 섹션에서는 MQTT broker에서 지원하는 기능과 MQTT v5 사양 간의 현재 차이점을 설명합니다. QoS 2는 지원되지 않습니다.
MQTT 브로커 및 현재 제한 사항에 대해 자세히 알아봅니다.
메시징 모델 게시-구독
게시-구독 메시징 모델은 클라이언트에 확장 가능하고 비동기적인 통신을 제공합니다. 이를 통해 클라이언트는 서비스에서 많은 수의 연결 및 메시지를 처리하는 부담을 없앨 수 있습니다. 게시-구독 메시징 모델을 통해 클라이언트는 일대다, 다대일 및 일대일 메시징 패턴을 사용하여 효율적으로 통신할 수 있습니다.
- 일대다: 클라이언트가 관심 있는 모든 클라이언트에 대해 서비스에서 복제하는 메시지를 하나만 게시할 수 있습니다.
- 다 대 일: 클라이언트가 MQTT 브로커에 대한 높은 수의 연결을 관리하는 부담을 오프로드할 수 있습니다.
- 일대일: 클라이언트의 역할에 관계없이 모든 클라이언트가 제한 없이 다른 클라이언트와 통신할 수 있습니다.
네임스페이스
Event Grid 네임스페이스는 끌어오기 배달 기능을 지원하는 리소스와 함께 MQTT broker 기능을 지원하는 리소스에 대한 관리 컨테이너입니다. MQTT 클라이언트는 MQTT 브로커에 연결하고 메시지를 게시-구독할 수 있습니다. MQTT 브로커는 클라이언트를 인증하고, 게시-구독 요청에 권한을 부여하고, 관심 있는 클라이언트에 메시지를 전달합니다. 네임스페이스 개념에 대해 자세히 알아봅니다.
클라이언트
클라이언트는 MQTT 메시지를 게시하고 구독하는 IoT 디바이스 또는 애플리케이션을 말합니다.
IoT 디바이스는 원격 분석을 전송하고 명령을 수신하기 위해 인터넷에 연결된 물리적 개체입니다. 이러한 디바이스는 센서, 어플라이언스, 컴퓨터 또는 내장 센서 및 소프트웨어가 장착된 기타 개체입니다. 센서와 소프트웨어를 사용하면 서로 그리고 주변 환경과 통신하고 상호 작용할 수 있습니다. IoT 디바이스의 가치는 실시간 데이터와 인사이트를 제공하는 능력에 있으며, 이를 통해 기업과 개인이 정보에 입각한 의사 결정을 내리고 효율성과 생산성을 향상시킬 수 있습니다.
IoT 애플리케이션은 IoT 디바이스의 데이터와 상호 작용하고 처리하도록 설계된 소프트웨어입니다. 일반적으로 데이터 수집, 처리, 스토리지, 시각화, 분석과 같은 구성 요소가 포함됩니다. 이러한 애플리케이션을 사용하면 사용자가 연결된 디바이스를 모니터링 및 제어하고, 작업을 자동화하고, IoT 디바이스에서 생성된 데이터로부터 인사이트를 얻을 수 있습니다.
클라이언트 인증
Event Grid에는 연결할 수 있는 클라이언트에 대한 정보를 저장하는 클라이언트 레지스트리가 있습니다. 클라이언트를 연결하려면 먼저 클라이언트 레지스트리에 해당 클라이언트에 대한 항목이 있어야 합니다. 클라이언트가 MQTT broker에 연결되면 ID 레지스트리에 저장된 자격 증명을 기반으로 MQTT broker로 인증해야 합니다. MQTT 브로커는 다음과 같은 클라이언트 인증 메커니즘을 지원합니다.
- X.509 인증서 인증 은 IoT 디바이스의 업계 인증 표준입니다.
- Microsoft Entra ID 인증 은 애플리케이션에 대한 Azure 인증 표준입니다. MQTT 클라이언트 인증에 대해 자세히 알아봅니다.
- 유연한 인증:
- OAuth 2.0 JWT(JSON Web Token) 인증 은 Azure에서 프로비전되지 않은 MQTT 클라이언트에 가볍고 안전하며 유연한 옵션을 제공합니다.
- 사용자 지정 웹후크 인증 을 사용하면 외부 HTTP 엔드포인트(웹후크)가 MQTT 연결을 동적으로 인증할 수 있습니다. Microsoft Entra ID JWT 유효성 검사를 사용하여 보안 액세스를 보장합니다.
Access Control
액세스 제어는 엄청난 IoT 환경 규모와 제한된 디바이스의 고유한 보안 문제를 고려할 때 IoT 시나리오에 매우 중요합니다. Event Grid는 토픽을 게시하거나 구독할 클라이언트의 권한 부여를 관리하는 데 사용할 수 있는 유연한 액세스 제어 모델을 통해 역할 기반 액세스 제어를 제공합니다.
IoT 환경의 규모가 엄청나게 크기 때문에 각 토픽에 각 클라이언트에 대한 권한을 할당하는 것은 매우 지루합니다. Event Grid의 유연한 액세스 제어는 클라이언트 및 토픽을 클라이언트 그룹 및 토픽 공간으로 그룹화하여 이러한 규모 문제를 해결합니다. 클라이언트 그룹 및 토픽 공간을 만든 후에는 토픽 공간을 게시하거나 구독하도록 클라이언트 그룹에 대한 액세스 권한을 부여하도록 권한 바인딩을 구성할 수 있습니다.
토픽 공간은 또한 클라이언트 그룹 내에서 각 클라이언트의 권한 부여를 제어하여 자체 토픽을 게시하거나 구독할 수 있도록 세분화된 액세스 제어를 제공합니다. 이 세분화된 액세스 제어는 토픽 템플릿에서 변수를 사용하여 수행됩니다. 액세스 제어에 대해 자세히 알아봅니다.
라우팅
Event Grid를 사용하면 추가 처리를 위해 MQTT 메시지를 Azure 서비스 또는 웹후크로 라우팅할 수 있습니다. 따라서 다른 사용 사례 중에서 데이터 분석, 스토리지, 시각화에 IoT 데이터를 사용하여 엔드투엔드 솔루션을 빌드할 수 있습니다. 라우팅 구성을 사용하여 클라이언트에서 Event Grid 네임스페이스 토픽 또는 Event Grid 사용자 지정 토픽으로 모든 MQTT 메시지를 보낼 수 있습니다. 메시지가 토픽에 있으면 토픽의 메시지를 사용하도록 이벤트 구독을 구성할 수 있습니다. 예를 들어 이 기능을 사용하면 Event Grid를 사용하여 IoT 디바이스에서 Event Hubs로 원격 분석을 라우팅한 다음 Azure Stream Analytics로 라우팅하여 디바이스 원격 분석에서 인사이트를 얻을 수 있습니다. 라우팅에 대해 자세히 알아봅니 다.
Microsoft Fabric 이벤트 스트림에 대한 MQTT 이벤트
IoT 데이터의 실시간 분석, 스토리지 및 시각화를 위해 Event Grid 네임스페이스에서 Microsoft Fabric 이벤트 스트림으로 MQTT 메시지 및 클라우드 이벤트를 라우팅합니다.
Edge MQTT 브로커 통합
Event Grid는 Azure IoT Operations 와 통합되어 에지의 MQTT broker 기능을 클라우드의 Event Grid MQTT broker 기능과 연결합니다. Azure IoT Operations는 Azure Arc 지원 Kubernetes 클러스터에서 실행되는 에지 컴퓨팅을 위한 새로운 분산 MQTT 브로커를 제공합니다. 시스템 할당 관리 ID를 사용하여 Microsoft Entra ID 인증을 사용하여 Event Grid MQTT Broker에 연결할 수 있으므로 자격 증명 관리가 간소화됩니다. MQTT 브로커는 IoT 디바이스 및 애플리케이션에 대한 고가용성, 확장성 및 보안을 제공합니다. Azure IoT Operations MQTT Broker를 Event Grid MQTT Broker에 연결하는 방법에 대해 자세히 알아봅니다.
MQTT 클라이언트 수명 주기 이벤트
클라이언트 수명 주기 이벤트를 사용하면 애플리케이션이 클라이언트 연결 상태 또는 클라이언트 리소스 작업에 대한 이벤트에 반응할 수 있습니다. 클라이언트의 연결 상태를 추적하고, 클라이언트 연결 끊김에 대한 완화 작업으로 대응하고, 자동화된 장애 조치 중에 클라이언트가 연결된 네임스페이스를 추적할 수 있습니다. MQTT 클라이언트 수명 주기 이벤트에 대해 자세히 알아봅니다.
사용자 지정 도메인 이름
사용자 지정 도메인 이름 지원을 사용하면 사용자가 Event Grid 네임스페이스의 MQTT 및 HTTP 엔드포인트에 자신의 도메인 이름을 할당할 수 있으므로 보안이 향상되고 클라이언트 구성이 간소화됩니다. 이 기능은 엔터프라이즈가 보안 및 규정 준수 요구 사항을 충족하는 데 도움이 되며 이미 도메인에 연결된 클라이언트를 수정할 필요가 없습니다. 여러 네임스페이스에 사용자 지정 도메인 이름을 할당하면 가용성을 향상하고, 용량을 관리하고, 지역 간 클라이언트 모바일을 처리하는 데도 도움이 될 수 있습니다. 사용자 지정 도메인 이름에 대해 자세히 알아봅니다.
MQTT 보존
MQTT 보존 메시지는 브로커에 토픽의 마지막으로 알려진 좋은 값을 저장하는 데 사용되므로 새 구독자가 다음 게시를 기다리지 않고 가장 최근의 메시지를 즉시 받을 수 있습니다. 이 기능은 디바이스 상태 보고, 제어 신호 또는 연결 시 클라이언트가 항상 최신 메시지를 사용할 수 있어야 하는 구성 데이터와 같은 시나리오에서 특히 유용합니다. 자세한 내용은 Azure Event Grid에서 MQTT 보존 지원을 참조하세요.
HTTP 게시
HTTP 게시를 사용하면 애플리케이션이 활성 MQTT 세션을 유지하지 않고 간단한 HTTPS POST 요청을 통해 Event Grid MQTT Broker에 MQTT 메시지를 게시할 수 있습니다. 서버리스 함수, 클라우드 서비스 또는 백 엔드 애플리케이션과 같이 MQTT 클라이언트가 불가능하거나 필요한 시나리오에 가장 적합합니다. HTTP 게시를 사용하면 이벤트 기반 아키텍처가 MQTT 메시지를 안정적이고 안전하게 삽입할 수 있습니다. 일반적인 사용 사례에는 Azure Functions, Azure Logic Apps 또는 API 통합에서 디바이스 명령, 경고 또는 제어 신호 게시가 포함됩니다. 자세한 내용은 Azure Event Grid에서 MQTT 메시지의 HTTP 게시를 참조하세요.
개념
Event Grid의 MQTT 브로커 개념에 대해 자세히 알아봅니다.
관련 콘텐츠
MQTT 브로커 및 주요 개념에 대해 자세히 알아봅니다.