Azure Event Grid는 메시지 배포를 위해 확장성이 뛰어나고 완전히 관리되는 게시 구독 서비스입니다. Event Grid는 유연한 메시지 사용 패턴을 제공하고 MQTT(메시지 큐 원격 분석 전송) 및 HTTP 프로토콜을 사용합니다. Event Grid를 사용하면 디바이스 데이터를 사용하여 데이터 파이프라인을 빌드하고, 애플리케이션을 통합하고, 이벤트 기반 서버리스 아키텍처를 빌드할 수 있습니다.
클라이언트는 사물인터넷(IoT) 솔루션을 지원하기 위해 MQTT v3.1.1 및 v5.0 프로토콜을 통해 메시지를 게시하고 구독할 수 있습니다. HTTP를 통해 Event Grid를 사용하여 게시자 서비스가 구독자 애플리케이션에 대한 시스템 상태 변경(이벤트)을 알리는 이벤트 기반 솔루션을 빌드할 수 있습니다. Event Grid를 구성하여 구독자에게 이벤트를 보내거나(푸시 배달) 구독자가 Event Grid에 연결하여 이벤트를 읽을 수 있습니다(끌어오기 배달). Event Grid는 CloudEvents 1.0 사양을 지원하여 시스템 간 상호 운용성을 제공합니다.
Azure Event Grid 핵심 기능
Event Grid에는 다음 두 가지 주요 기능이 있습니다.
MQTT 메시징: IoT 디바이스 및 애플리케이션은 MQTT를 통해 서로 통신할 수 있습니다. Event Grid를 사용하여 추가 데이터 분석, 시각화 또는 스토리지를 위해 MQTT 메시지를 Azure 서비스 또는 사용자 지정 엔드포인트로 라우팅할 수도 있습니다. Azure 서비스와의 통합을 사용하여 IoT 디바이스에서 데이터 수집으로 시작하는 데이터 파이프라인을 빌드할 수 있습니다.
푸시 및 끌어오기 배달 모드를 사용하여 데이터 배포: 데이터 파이프라인의 어느 지점에서든 HTTP 애플리케이션은 푸시 또는 끌어오기 API를 사용하여 메시지를 사용할 수 있습니다. 데이터 원본에는 MQTT 클라이언트의 데이터가 포함될 수 있지만 HTTP를 통해 이벤트를 보내는 다음 데이터 원본도 포함됩니다.
- Azure 서비스
- 사용자 지정 애플리케이션
- 외부 파트너 서비스형 소프트웨어(SaaS) 시스템
Event Grid 푸시 배달 메커니즘은 사용자 고유의 애플리케이션 웹후크 및 Azure 서비스를 포함하는 대상으로 데이터를 보냅니다. 다음 섹션에서는 각 기능에 대해 설명합니다.
MQTT 메시징
클라이언트는 게시-구독 메시징 모델을 사용하여 맞춤형 MQTT 주제 이름 으로 소통할 수 있습니다. Event Grid는 MQTT v3.1.1, MQTT v3.1.1 over WebSocket, MQTT v5, 및 MQTT v5 over WebSocket을 통해 메시지를 게시하고 구독하는 클라이언트를 지원합니다.
또한 Event Grid는 MQTT가 아닌 클라이언트와의 통합을 간소화하는 HTTPS를 통해 MQTT 메시지를 보내는 디바이스 및 서비스를 지원합니다. 데이터 분석, 저장, 시각화 등 다양한 용도로 MQTT 메시지를 클라우드로 보낼 수 있습니다. 이 기능은 프리뷰 상태입니다.
Event Grid는 Azure IoT 작업와 통합되어 에지에서 MQTT 브로커 역할을 클라우드의 Event Grid MQTT 브로커 역할과 연결합니다. Azure IoT MQTT 브로커는 Azure Arc 지원 Kubernetes 클러스터에서 실행되는 분산 MQTT 엣지 컴퓨팅 브로커로, Azure IoT 작업의 일부로 제공됩니다.
Event Grid의 MQTT 브로커 기능은 자동차, 이동성 및 제조 시나리오에 이상적입니다. Azure 메시징 및 데이터 분석 서비스를 사용하여 수백만 MQTT 클라이언트를 클라우드에 연결하는 안전하고 확장 가능한 솔루션을 빌드하는 방법을 알아보려면 자동차 및 제조 참조 아키텍처 를 참조하세요.
Event Grid에서 MQTT 메시징 지원의 주요 내용:
- MQTT v3.1.1 및 MQTT v5.0지원: 오픈 소스 MQTT 클라이언트 라이브러리를 사용하여 서비스와 통신합니다.
- 와일드카드가 지원되는 사용자 지정 토픽: 고유한 토픽 구조를 사용합니다.
- 게시-구독 메시징 모델: 일대다, 다대일 및 일대일 메시징 패턴을 사용하여 효율적으로 통신합니다.
- 기본 제공 클라우드 통합: 추가 처리를 위해 MQTT 메시지를 Azure 서비스 또는 사용자 지정 웹후크로 라우팅합니다.
- 유연하고 세분화된액세스 제어 모델: 액세스 제어 관리를 간소화하기 위해 클라이언트 및 항목을 그룹화합니다. 세분화된 액세스 제어를 위해 토픽 템플릿의 변수 지원을 사용합니다.
- MQTT 브로커 인증 방법: IoT 디바이스에 대한 업계 인증 표준인 X.509 인증서 인증을 사용합니다. 애플리케이션에 대한 Azure 인증 표준인 Microsoft Entra ID 인증을 사용합니다. Azure에서 프로비전되지 않은 MQTT 클라이언트에 대해 가볍고 안전한 OAuth 2.0 JWT(JSON Web Token) 인증과 같은 유연한 인증 패턴을 사용합니다. 외부 HTTP 엔드포인트(웹후크)가 MQTT 연결을 동적으로 인증할 수 있도록 하는 사용자 지정 웹후크 인증을 사용합니다. 이 메서드는 Microsoft Entra ID JWT 유효성 검사를 사용하여 안전한 액세스를 보장합니다.
- TLS(전송 계층 보안) 1.2 및 TLS 1.3 지원: 강력한 암호화 프로토콜을 사용하여 클라이언트 통신을 보호합니다.
- 다중 세션 지원: 애플리케이션을 여러 활성 세션과 연결하여 안정성과 확장성을 보장합니다.
- WebSocket을 통한 MQTT: 방화벽 제한 환경에서 클라이언트에 대한 연결을 가능하게 합니다.
- 커스텀 도메인 이름: 이벤트 그리드 네임스페이스의 MQTT 엔드포인트에 자신의 도메인 이름을 할당할 수 있어 보안을 강화하고 클라이언트 구성을 단순화합니다.
- 클라이언트 라이프사이클 이벤트: 클라이언트 연결 상태나 클라이언트 리소스 연산에 관한 이벤트에 반응하는 애플리케이션을 지원합니다.
- HTTP Publish: HTTPS를 통해 이벤트 그리드로 MQTT 메시지를 전송하는 장치 및 서비스를 지원하며, 비-MQTT 클라이언트와의 통합을 단순화합니다.
- MQTT 보존: 토픽에서 마지막으로 알려진 메시지가 새 구독자에게 자동으로 전달되어 즉시 상태 동기화가 가능하도록 합니다.
- 공유 구독: 단일 구독의 메시지를 그룹으로 소비하는 여러 클라이언트를 지원하며, 브로커가 이를 통해 메시지를 분산하고 확장 가능한 처리를 수행합니다.
- 구독 식별자: 각 구독에 고유한 숫자 ID를 부여하는 MQTT 5 클라이언트를 지원하여, 클라이언트가 여러 구독을 관리할 때 수신 메시지가 어떤 구독과 일치하는지 쉽게 식별할 수 있습니다.
MQTT 브로커에 대한 자세한 내용은 다음 문서를 참조하세요.
- 개요
- MQTT 메시지 게시 및 구독
- 자습서: 네임스페이스 항목을 사용하여 Azure Event Hubs에 MQTT 메시지 라우팅
- 자습서: 사용자 지정 항목을 사용하여 Azure Functions에 MQTT 메시지 라우팅
이벤트 메시징(HTTP)
Event Grid는 HTTP를 사용하여 푸시 및 끌어오기 이벤트 배달을 지원합니다. 푸시 딜리버리에서는 이벤트 구독에서 목적지를 정의하고, 이벤트 그리드가 그 목적지로 이벤트를 전송합니다. 풀 디리버리를 사용하면 구독자 애플리케이션이 Event Grid에 연결하여 이벤트를 소비할 수 있습니다. 이벤트 그리드는 네임스페이스 내 주제에 대한 풀 딜리버리를 지원합니다.
이벤트 처리기
푸시 전달에서 이벤트 구독은 이벤트 핸들러나 이벤트 그리드가 이벤트를 보내는 목적지를 정의하는 데 사용하는 일반적인 구성 자원입니다. 예를 들어 웹후크, Azure 함수 또는 이벤트 허브로 데이터를 보낼 수 있습니다. 지원되는 이벤트 핸들러의 전체 목록은 다음을 참조하세요:
돌려주기 전달 및 당겨받기 전달 비교
다음 일반 지침은 끌어오기 또는 푸시 배달을 사용할 시기를 결정하는 데 도움이 됩니다.
당겨받기 전달
- 이벤트를 수신할 시기를 완전히 제어해야 합니다. 예를 들어 애플리케이션이 항상 실행되지 않거나 충분히 안정적이지 않을 수 있습니다. 특정 시간에만 데이터를 처리할 수도 있습니다.
- 이벤트 사용을 완전히 제어할 수 있어야 합니다. 예를 들어 소비자 애플리케이션의 다운스트림 서비스 또는 계층에 이벤트를 처리하지 못하는 문제가 있을 수 있습니다. 이 경우 소비자 앱은 풀 딜리버리 API를 사용해 이미 읽힌 이벤트를 브로커에게 반환하여 나중에 배달할 수 있습니다.
- 푸시 배달이 아닌 끌어오기 배달에서만 가능한 이벤트를 수신할 때 프라이빗 링크를 사용하려고 합니다.
- 엔드포인트를 노출하고 푸시 딜리버리를 사용할 수는 없지만, 이벤트 그리드에 연결해 이벤트를 소비할 수는 있습니다.
푸시 전송
- 상습적인 폴링을 방지하여 시스템 상태 변경이 일어났는지 확인하는 것이 바람직합니다. 대신 Event Grid를 사용하여 상태 변경이 발생할 때 이벤트를 보내려고 합니다.
- 아웃바운드 호출을 수행할 수 없는 애플리케이션이 있습니다. 예를 들어, 조직에서 데이터 반출을 염려할 수 있습니다. 그러나 애플리케이션은 퍼블릭 엔드포인트를 통해 이벤트를 수신할 수 있습니다.
HTTP 모델 강조 표시:
- 유연한 이벤트 사용 모델: HTTP를 사용할 때 끌어오기 또는 푸시 배달 모드를 사용하여 이벤트를 사용합니다.
- 시스템 이벤트: 내장된 Azure 서비스 이벤트로 바로 실행하세요.
- 사용자 고유의 애플리케이션 이벤트: Event Grid를 사용하여 앱에서 사용자 지정 이벤트를 라우팅, 필터링 및 안정적으로 제공합니다.
- 파트너 이벤트: 파트너 SaaS 공급자 이벤트를 구독하고 Azure에서 처리합니다.
- 고급 필터링: 이벤트 유형 또는 기타 이벤트 특성을 필터링하여 이벤트 처리기 또는 소비자 앱이 관련 이벤트만 수신하도록 합니다.
- 안정성: 푸시 배달은 이벤트가 배달되도록 하기 위해 지수 백오프가 있는 24시간 재시도 메커니즘을 제공합니다. 풀 배달을 사용하는 경우 애플리케이션은 이벤트 사용량을 완전히 제어할 수 있습니다.
- 높은 처리량: Event Grid를 사용하여 대용량 통합 솔루션을 빌드합니다.
- 커스텀 도메인 이름: 이벤트 그리드 네임스페이스의 HTTP 엔드포인트에 자신의 도메인 이름을 할당하면 보안을 강화하고 클라이언트 구성을 단순화할 수 있습니다.
자세한 내용은 다음 문서를 참조하세요.
사용 사례
Event Grid를 사용할 수 있는 사용 사례 목록은 사용 사례를 참조하세요.
지원되는 지역
MQTT 브로커 및 네임스페이스 주제 기능은 다음 지역에서 제공됩니다.
| 지역 | 지역 | 지역 | 지역 |
|---|---|---|---|
| 오스트레일리아 동부 | Australia Southeast | 오스트레일리아 중부 | 오스트레일리아 중부 2 |
| 브라질 남부 | 브라질 남동부 | 캐나다 중부 | 캐나다 동부 |
| 인도 중부 | 미국 중부 | 동아시아 | 미국 동부 |
| 미국 동부 2 | 미국 서부 | 프랑스 중부 | 프랑스 남부 |
| 독일 북부 | 독일 중서부 | 이스라엘 중부 | 이탈리아 북부 |
| 일본 동부 | 일본 서부 | 한국 중부 | 한국 남부 |
| 멕시코 중부 | 미국 중북부 | 북유럽 | 노르웨이 동부 |
| 폴란드 중부 | 남아프리카 공화국 서부 | 남아프리카 공화국 북부 | 미국 중남부 |
| 인도 남부 | 동남 아시아 | 스페인 중부 | 스웨덴 중부 |
| 스웨덴 남부 | 스위스 북부 | 스위스 서부 | 아랍에미리트 북부 |
| 아랍에미리트 중부 | 영국 남부 | 영국 서부 | 서유럽 |
| 미국 서부 2 | 미국 서부 3 | 미국 중서부 | 벨기에 중부 |