Azure Event Grid 네임스페이스 개념
이 문서에서는 네임스페이스 토픽과 관련된 주요 개념 및 기능을 소개합니다.
이벤트
이벤트는 시스템에서 발생하는 무언가를 완벽히 설명하는 가장 작은 크기의 정보입니다. 이벤트는 개별 이벤트라고 하는데, 이는 실행 가능한 인사이트를 제공하는 시스템에 대한 별개의 자립적인 팩트를 나타내기 때문입니다. 모든 이벤트에는 이벤트의 source
, 이벤트가 발생한 time
, 고유 식별자와 같은 일반적인 정보가 있습니다. 이벤트마다 일반적으로 이벤트가 사용되는 알림의 종류를 설명하는 고유 식별자인 type
도 있습니다.
예를 들어 Azure Storage에서 만드는 새 파일에 대한 이벤트에는 lastTimeModified
값 같은 파일에 대한 세부 정보가 포함되어 있습니다. Event Hubs 이벤트는 캡처 파일의 URL을 갖습니다. Orders 마이크로 서비스의 새 주문에 대한 이벤트에는 주문 상태 표현에 대한 orderId
특성과 URL 특성이 있을 있습니다. 이벤트 유형에는 다음과 같은 몇 가지 예가 더 있습니다. com.yourcompany.Orders.OrderCreated
, org.yourorg.GeneralLedger.AccountChanged
, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached
샘플 이벤트는 다음과 같습니다.
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "/orders/account/123",
"subject" : "O-28964",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"orderId" : "O-28964",
"URL" : "https://com.yourcompany/orders/O-28964"
}
}
다른 종류의 이벤트
또한 사용자 커뮤니티는 단일 디바이스 읽기 또는 웹 애플리케이션 페이지 클릭과 같이 데이터 포인트를 전달하는 메시지에 대한 "이벤트"라고도 합니다. 이러한 종류의 이벤트는 일반적으로 기간에 따라 분석되어 인사이트를 이끌어내고 작업을 수행합니다. Event Grid 설명서에서는 이러한 종류의 이벤트를 데이터 포인트, 스트리밍 데이터 또는 단순히 원격 분석이라고 합니다. 다른 유형의 메시지 중에서 이러한 종류의 이벤트는 Event Grid의 MQTT(메시지 큐 원격 분석 전송) 브로커 기능과 함께 사용됩니다.
CloudEvents에 대한 지원
Event Grid 네임스페이스 토픽은 JSON 형식의 HTTP 프로토콜 바인딩을 사용하여 CNCF(Cloud Native Computing Foundation)의 개방형 표준 CloudEvents 1.0 사양을 준수하는 이벤트를 허용합니다. CloudEvent는 전달되는 내용, 이벤트 데이터, 그에 대한 메타데이터를 포함하는 일종의 메시지입니다. 이벤트 기반 아키텍처의 이벤트 데이터는 일반적으로 시스템 상태 변경을 알리는 정보를 전달합니다. CloudEvents 메타데이터는 메시지의 출처(원본 시스템), 해당 형식 등과 같은 메시지에 대한 컨텍스트 정보를 제공하는 특성 집합으로 구성됩니다.
자세한 내용은 CloudEvents 스키마에 대한 지원을 참조하세요.
게시자
게시자는 Event Grid에 이벤트를 보내는 애플리케이션입니다. 이벤트가 시작된 애플리케이션과 동일한 애플리케이션인 이벤트 원본일 수 있습니다. 네임스페이스 토픽을 사용하는 경우 사용자 고유의 애플리케이션에서 이벤트를 게시할 수 있습니다.
이벤트 원본
이벤트 원본은 이벤트가 발생하는 위치입니다. 각 이벤트 원본은 하나 이상의 이벤트 유형을 지원합니다. 예를 들어 애플리케이션은 시스템에서 정의하는 사용자 지정 이벤트의 이벤트 원본입니다. 네임스페이스 토픽을 사용하는 경우 지원되는 이벤트 원본은 사용자 고유의 애플리케이션입니다.
네임스페이스
Event Grid 네임스페이스는 다음 리소스에 대한 관리 컨테이너입니다.
리소스 | 지원되는 프로토콜 |
---|---|
네임스페이스 토픽 | HTTP |
토픽 공간 | MQTT |
클라이언트 | MQTT |
클라이언트 그룹 | MQTT |
CA Certificates | MQTT |
권한 바인딩 | MQTT |
Azure Event Grid 네임스페이스를 사용하면 관련 리소스를 그룹화하고 Azure 구독에서 단일 단위로 관리할 수 있습니다. 고유한 FQDN(정규화된 도메인 이름)을 제공합니다.
네임스페이스는 두 개의 엔드포인트를 노출합니다.
- 네임스페이스 토픽을 사용하여 일반 메시징 요구 사항을 지원하는 HTTP 엔드포인트입니다.
- MQTT를 사용하는 IoT 메시징 또는 솔루션에 대한 MQTT 엔드포인트입니다.
네임스페이스는 DNS 통합 네트워크 엔드포인트도 제공합니다. 또한 공용 IP 수신 필터링 및 프라이빗 링크와 같은 다양한 액세스 제어 및 네트워크 통합 관리 기능을 제공합니다. 또한 네임스페이스에 포함된 리소스에 사용되는 관리 ID의 컨테이너이기도 합니다.
네임스페이스에 대한 몇 가지 추가 사항은 다음과 같습니다.
- 네임스페이스는
tags
및location
속성을 사용하여 추적된 리소스이며, 만든 후에는resources.azure.com
에서 찾을 수 있습니다. - 네임스페이스의 이름은 3~50자일 수 있습니다. 영숫자와 하이픈(-) 및 공백을 포함할 수 없습니다.
- 이 이름은 지역별로 고유해야 합니다.
처리량 단위
처리량 단위(TU)는 네임스페이스에서 수신 및 송신 이벤트 속도 용량을 정의합니다. 자세한 내용은 Azure Event Grid 할당량 및 제한을 참조하세요.
토픽
토픽에는 Event Grid에 게시된 이벤트가 포함됩니다. 일반적으로 관련 이벤트 컬렉션에 토픽 리소스를 사용합니다. 네임스페이스 내의 토픽을 네임스페이스 토픽이라고도 합니다.
네임스페이스 토픽
네임스페이스 토픽은 Event Grid 네임스페이스 내에서 만들어지는 토픽입니다. 애플리케이션은 게시된 이벤트가 논리적으로 포함된 네임스페이스 토픽을 지정하는 HTTP 네임스페이스 엔드포인트에 이벤트를 게시합니다. 애플리케이션을 설계할 때는 만들려는 토픽 수를 결정해야 합니다. 비교적 큰 솔루션의 경우 관련 이벤트의 각 범주에 대한 네임스페이스 토픽을 만듭니다. 예를 들어 사용자 계정을 관리하는 애플리케이션과 고객 주문을 관리하는 다른 애플리케이션을 고려해 보세요. 모든 이벤트 구독자가 두 애플리케이션의 이벤트를 원할 가능성은 거의 없습니다. 문제를 분리하려면 각 애플리케이션마다 하나씩 두 개의 네임스페이스 토픽을 만듭니다. 이벤트 소비자가 요구 사항에 따라 토픽을 구독하도록 합니다. 소규모 솔루션의 경우 모든 이벤트를 단일 토픽으로 전송할 수도 있습니다.
네임스페이스 토픽은 끌어오기 배달 및 푸시 배달을 지원합니다. 요구 사항에 따라 끌어오기 배달이 올바른 방법인지 결정하려면 끌어오기 또는 푸시 배달을 사용해야 하는 경우를 참조하세요.
이벤트 구독
이벤트 구독은 단일 토픽과 연결된 구성 리소스입니다. 무엇보다도 이벤트 구독을 사용해 이벤트 선택 조건을 설정하여 토픽에서 사용 가능한 총 이벤트 집합 중 구독자가 사용할 수 있는 이벤트 컬렉션을 정의합니다. 구독자의 요구 사항에 따라 이벤트를 필터링할 수 있습니다. 예를 들어, 이벤트 유형을 기준으로 이벤트를 필터링할 수 있습니다. JSON 개체를 데이터 속성의 값으로 사용하는 경우 이벤트 데이터 속성에 대한 필터 조건을 정의할 수도 있습니다. 리소스 속성에 대한 자세한 내용은 Event Grid REST API에서 컨트롤 플레인 작업을 찾습니다.
네임스페이스 토픽에 대한 구독을 만드는 예제는 CLI 및 네임스페이스 토픽을 사용하여 메시지 게시 및 사용을 참조하세요.
참고 항목
네임스페이스 토픽의 이벤트 구독은 사용자 지정, 도메인, 파트너, 시스템 토픽(Event Grid 기본)에 사용되는 것과 비교하여 간소화된 리소스 모델을 제공합니다. 자세한 내용은 이벤트 구독 만들기, 보기 및 관리를 참조하세요.
끌어오기 배달
끌어오기 배달을 사용하면 애플리케이션이 Event Grid에 연결한 다음, 큐와 같은 의미 체계를 사용하여 메시지를 읽습니다. 애플리케이션은 Event Grid에 연결하여 이벤트를 사용하므로 이벤트 사용률 및 타이밍을 제어할 수 있습니다. 소비자 애플리케이션은 Event Grid에 연결할 때 프라이빗 엔드포인트를 사용하여 개인 IP 공간을 통해 이벤트를 읽을 수도 있습니다.
끌어오기 배달은 다음과 같이 메시지를 읽고 메시지 상태를 제어하는 작업을 지원합니다. 수신 승인, 해제, 거부, 잠금 갱신 자세한 내용은 끌어오기 배달 개요를 참조하세요.
끌어오기 배달을 사용하여 이벤트를 수신할 경우 데이터 모양
끌어오기 배달을 사용하여 이벤트를 배달할 때 Event Grid에는 이벤트 및 brokerProperties 개체가 차례로 포함된 개체 배열이 포함됩니다. 이벤트 속성의 값은 구조화된 콘텐츠 모드로 전달되는 CloudEvent입니다. brokerProperties 개체는 배달된 CloudEvent에 연결된 잠금 토큰을 포함합니다. 다음 json 개체는 두 개의 이벤트를 반환하는 수신 작업의 샘플 응답입니다.
{
"value": [
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
"deliveryCount": 2
},
"event": {
"specversion": "1.0",
"id": "A234-1234-1235",
"source": "/mycontext",
"time": "2018-04-05T17:31:00Z",
"type": "com.example.someeventtype",
"data": "some data"
}
},
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
"deliveryCount": 1
},
"event": {
"specversion": "1.0",
"id": "B688-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": {
"somekey" : "value",
"someOtherKey" : 9
}
}
}
]
}
푸시 배달
푸시 배달을 사용하면 Event Grid는 푸시(배달 모드에서) 이벤트 구독으로 구성된 대상으로 이벤트를 보냅니다. 대상에서 이벤트를 수신할 수 없는 경우 강력한 재시도 논리를 제공합니다.
Important
Event Grid 네임스페이스의 푸시 배달은 현재 Azure Event Hubs를 대상으로 지원합니다. 앞으로 Event Grid 네임스페이스는 Event Grid 기본에서 지원하는 모든 대상을 포함하여 더 많은 대상을 지원합니다.
Event Hubs 이벤트 배달
Event Grid는 Event Hubs의 SDK를 사용하여 AMQP를 통해 Event Hubs에 이벤트를 보냅니다. 이벤트는 CloudEvent를 포함하는 배열의 모든 요소와 함께 바이트 배열로 전송됩니다.
푸시 및 끌어오기 배달
Event Grid는 HTTP를 사용하여 푸시 및 풀 이벤트 배달을 지원합니다. 푸시 배달을 사용하면 Event Grid에서 이벤트를 보내는 이벤트 구독, 웹후크 또는 Azure 서비스에서 대상을 정의할 수 있습니다. 풀 배달을 사용하면 구독자 애플리케이션은 Event Grid에 연결하여 이벤트를 사용할 수 있습니다. 풀 배달은 Event Grid 네임스페이스의 토픽을 지원합니다.
Important
Event Hubs는 네임스페이스 토픽에 대한 구독의 대상으로 지원됩니다. 향후 릴리스에서 Event Grid 네임스페이스는 추가 대상과 함께 Event Grid 기본에서 현재 사용할 수 있는 모든 대상을 지원합니다.
푸시 배달과 풀 배달을 사용해야 하는 경우
다음은 풀 또는 푸시 배달을 사용할 시기를 결정하는 데 도움이 되는 일반적인 지침입니다.
풀 배달
- 이벤트를 수신할 시기를 완전히 제어할 수 있어야 합니다. 예를 들어, 애플리케이션은 항상 실행되지 않거나 충분히 안정적이지 않을 수 있고, 특정 시간에 데이터를 처리하는 경우가 있을 수 있습니다.
- 이벤트 사용을 완전히 제어할 수 있어야 합니다. 예를 들어, 소비자 애플리케이션의 다운스트림 서비스나 레이어에는 이벤트를 처리하지 못하게 하는 문제가 있습니다. 이 경우 풀 배달 API를 사용하면 소비자 앱이 이미 읽은 이벤트를 브로커에 다시 릴리스하여 나중에 배달할 수 있습니다.
- 이벤트를 수신할 때 프라이빗 링크를 사용하려고 합니다. 이 링크는 푸시 배달이 아니라 풀 배달에서만 가능합니다.
- 엔드포인트를 노출하고 푸시 배달을 사용할 수 있는 기능은 없지만 Event Grid에 연결하여 이벤트를 사용할 수 있습니다.
푸시 배달
- 시스템 상태 변경이 발생했는지 확인하기 위해 지속적인 폴링을 방지하려고 합니다. 대신 Event Grid를 사용하여 상태 변경이 발생할 때 이벤트를 보냅니다.
- 아웃바운드 호출을 수행할 수 없는 애플리케이션이 있습니다. 예를 들어, 조직에서 데이터 반출을 염려할 수 있습니다. 그러나 애플리케이션은 퍼블릭 엔드포인트를 통해 이벤트를 수신할 수 있습니다.
다음 단계
- Event Grid에 대한 소개는 Event Grid 정보를 참조하세요.
- 네임스페이스 토픽 사용을 시작하려면 네임스페이스 토픽을 사용하여 이벤트 게시를 참조하세요.