Share via


Event Grid 및 안정성

Azure Event Grid를 사용하면 이벤트 기반 아키텍처를 사용하여 애플리케이션을 쉽게 빌드할 수 있습니다. 이 솔루션은 기본적으로 스토리지 Blob 및 리소스 그룹과 같은 Azure 서비스의 이벤트를 지원합니다. 또한 Event Grid는 사용자 지정 토픽을 사용하여 사용자 고유의 이벤트를 지원합니다.

Event Grid 사용에 관한 자세한 내용은 Azure Event Grid를 사용하여 사용자 지정 이벤트 만들기 및 라우팅을 참조하세요.

Event Grid를 사용하여 더 안정적인 워크로드를 만드는 방법을 이해하려면 Azure Event Grid에서 서버 쪽 지역 재해 복구를 참조하세요.

다음 섹션은 Azure Event Grid 및 안정성과 관련이 있습니다.

  • 디자인 고려 사항
  • 구성 검사 목록
  • 권장 구성 옵션
  • 원본 아티팩트

디자인 고려 사항

Azure Event Grid는 작동 시간 SLA를 제공합니다. 자세한 내용은 Event Grid에 대한 SLA를 참조하세요.

검사 목록

안정성을 염두에 두고 Azure Event Grid를 구성했나요?

  • 다중 지역 Azure 솔루션의 경우 지역별로 Event Grid 인스턴스를 배포합니다.
  • Event Grid에서 실패한 이벤트 전송을 모니터링합니다.
  • 일괄 처리된 이벤트를 사용합니다.
  • 이벤트 일괄 처리의 크기는 1MB를 초과할 수 없습니다.
  • 부하 테스트 중에 일괄 처리 크기 선택을 구성하고 최적화합니다.
  • 사용자 지정 코드를 포함하는 엔드포인트에 전송하는 경우에만 Event Grid 메시지가 HTTP200-204 응답과 함께 수락되는지 확인합니다.
  • Event Grid에서 실패한 이벤트 게시를 모니터링합니다.

구성 권장 사항

Azure Event Grid를 구성할 때 안정성을 최적화하려면 다음 권장 사항을 고려하세요.

권장 Description
Event Grid에서 실패한 이벤트 전송을 모니터링합니다. 이벤트 처리기에 메시지를 배달할 수 없을 때마다 Delivery Failed 메트릭이 증가합니다(시간 제한 또는 200-204 HTTP가 아닌 상태 코드). 이벤트가 손실되면 안 되는 경우에는 DLQ(배달하지 못한 편지 큐) 스토리지 계정을 설정합니다. 최대 재시도 횟수에 도달하면 더 이상 전송할 수 없는 이벤트는 DLQ 계정에 배치됩니다. 필요에 따라 Event Grid를 통해 새 파일 이벤트를 처리하여 DLQ 스토리지 계정에서 알림 시스템을 구현합니다.
처리량이 높은 시나리오에서는 일괄 처리된 이벤트를 사용합니다. 이 서비스는 하나의 이벤트가 있는 배열 대신 여러 이벤트가 있는 json 배열을 구독자에게 전달합니다. 사용 애플리케이션은 이 배열을 처리할 수 있어야 합니다.
이벤트 일괄 처리의 크기는 1MB를 초과할 수 없습니다. 메시지 페이로드가 큰 경우 하나 또는 몇 개의 메시지만 일괄 처리에 적합합니다. 사용 서비스는 더 많은 이벤트 일괄 처리를 처리해야 합니다. 이벤트에 큰 페이로드가 있는 경우 Blob 스토리지와 같은 다른 곳에 저장하고 참조를 이벤트에 전달하는 것이 좋습니다. CloudEvents 스키마를 통해 타사 서비스와 통합하는 경우 64KB 이벤트를 초과하지 않는 것이 좋습니다.
부하 테스트 중에 일괄 처리 크기 선택을 구성하고 최적화합니다. 일괄 처리 크기 선택은 페이로드 크기와 메시지 볼륨에 따라 달라집니다.
Event Grid에서 실패한 이벤트 게시를 모니터링합니다. Unmatched 메트릭은 게시되었지만 구독과 일치하지 않는 메시지를 표시합니다. 애플리케이션 아키텍처에 따라 후자는 의도적일 수 있습니다.

원본 아티팩트

사용 가능한 모든 Event Grid 토픽에 대한 입력 스키마 형식을 확인하려면 다음 쿼리를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']

Event Grid 도메인에 대한 기존 프라이빗 엔드포인트의 리소스 ID를 검색하려면 다음 쿼리를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/domains' and notnull(properties['privateEndpointConnections']) 
| mvexpand properties['privateEndpointConnections'] 
| project-rename privateEndpointConnections = properties_privateEndpointConnections 
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']

사용 가능한 모든 Event Grid 도메인의 공용 네트워크 액세스 상태를 식별하려면 다음 쿼리를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/domains' 
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']

모든 퍼블릭 Event Grid 도메인의 방화벽 규칙을 식별하려면 다음 쿼리를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/domains' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']

모든 퍼블릭 Event Grid 토픽의 방화벽 규칙을 식별하려면 다음 쿼리를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/topics' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']

Event Grid 토픽에 대한 기존 프라이빗 엔드포인트의 리소스 ID를 검색하려면 다음 쿼리를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/topics' and notnull(properties['privateEndpointConnections']) 
| mvexpand properties['privateEndpointConnections'] 
| project-rename privateEndpointConnections = properties_privateEndpointConnections 
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']

사용 가능한 모든 Event Grid 도메인에 대한 입력 스키마 형식을 확인하려면 다음 스키마를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']

사용 가능한 모든 Event Grid 토픽의 공용 네트워크 액세스 상태를 식별하려면 다음 쿼리를 사용합니다.

Resources 
| where type == 'microsoft.eventgrid/topics' 
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']

다음 단계