Azure Event Hubs의 스키마 레지스트리

Azure Event Hubs의 스키마 레지스트리는 스키마 기반 이벤트 스트리밍 시나리오에서 스키마를 사용하고 관리하는 리포지토리를 제공합니다.

스키마 레지스트리 구성 요소

Event Hubs 네임스페이스는 이제 스키마 그룹을 이벤트 허브(또는 Kafka 토픽)와 함께 호스팅할 수 있습니다. 스키마 레지스트리를 호스팅하고 여러 스키마 그룹을 포함할 수 있습니다. Azure Event Hubs에서 호스팅되는 경우에도 스키마 레지스트리는 모든 Azure 메시징 서비스 및 기타 메시지 또는 이벤트 broker와 함께 일반적으로 사용할 수 있습니다. 이러한 각 스키마 그룹은 스키마 세트에 대해 개별적으로 보안이 가능한 리포지토리입니다. 그룹은 특정 애플리케이션 또는 조직 구성 단위에 맞출 수 있습니다.

Diagram that shows the components of Schema Registry in Azure Event Hubs.

스키마 그룹

스키마 그룹은 비즈니스 기준에 따라 비슷한 스키마의 논리적 그룹입니다. 스키마 그룹은 여러 버전의 스키마를 보유할 수 있습니다. 스키마 그룹의 호환성 적용 설정을 사용하면 최신 스키마 버전이 이전 버전과 호환되도록 할 수 있습니다.

그룹화 메커니즘으로 적용되는 보안 경계는 네임스페이스가 여러 파트너 간에 공유되는 상황에서 영업 비밀이 메타데이터를 통해 실수로 누출되지 않도록 하는 데 도움이 됩니다. 또한 애플리케이션 소유자는 동일한 네임스페이스를 공유하는 다른 애플리케이션과 독립적인 스키마를 관리할 수 있습니다.

스키마

스키마는 생산자와 소비자 간의 계약을 정의합니다. Event Hubs 스키마 레지스트리에 정의된 스키마는 이벤트 데이터 외부에서 계약을 관리하는 데 도움이 되므로 페이로드 오버헤드가 제거됩니다. 스키마에는 이름, 유형(예: 레코드, 배열 등), 호환성 모드(없음, 이후 버전, 이전 버전, 전체) 및 직렬화 유형(현재 Avro만 해당)이 있습니다. 여러 버전의 스키마를 만들고, 특정 버전의 스키마를 검색하여 사용할 수 있습니다.

스키마 형식

스키마 형식은 스키마가 구조화되고 정의된 방식을 결정하는 데 사용되며, 각 형식에는 이벤트 스트리밍에 사용할 이벤트의 구조를 정의하기 위한 특정 지침 및 구문이 요약되어 있습니다.

Avro 스키마

Avro는 압축 이진 형식을 사용하고 스키마 진화 기능을 제공하는 인기 있는 데이터 직렬화 시스템입니다.

Event Hubs 스키마 레지스트리에서 Avro 스키마 형식을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.

JSON 스키마(미리 보기)

JSON 스키마는 이벤트의 구조 및 데이터 형식을 정의하는 표준화된 방법입니다. JSON 스키마를 사용하면 이벤트 스트리밍에서 JSON 데이터 형식을 신뢰할 수 있고 안정적으로 사용할 수 있습니다.

Event Hubs 스키마 레지스트리에서 JSON 스키마 형식을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.

스키마 진화

스키마는 생산자 및 소비자의 비즈니스 요구 사항에 따라 진화해야 합니다. Azure 스키마 레지스트리는 스키마 그룹 수준에서 호환성 모드를 도입하여 스키마 진화를 지원합니다. 스키마 그룹을 만들 때 해당 스키마 그룹에 포함하는 스키마의 호환성 모드를 지정할 수 있습니다. 스키마를 업데이트 하는 경우 변경 내용은 할당된 호환성 모드를 준수해야 하며, 이 경우에만 스키마의 새 버전을 만듭니다.

참고 항목

스키마 진화는 Avro 스키마 형식에 대해서만 지원됩니다.

Event Hubs에 대한 Azure 스키마 레지스트리는 다음과 같은 호환성 모드를 지원합니다.

이전 버전과의 호환성

이전 버전과의 호환성 모드에서는 소비자 코드가 새 버전의 스키마를 사용할 수 있지만, 이전 버전의 스키마를 사용하여 메시지를 처리할 수도 있습니다. 스키마 그룹에서 이전 버전과의 호환성 모드를 사용하면 스키마에 대해 다음과 같은 변경 작업을 수행할 수 있습니다.

  • 필드 삭제.
  • 선택적 필드 추가

이후 버전과의 호환성

다음 버전과의 호환성 모드에서는 소비자 코드가 이전 버전의 스키마를 사용할 수 있지만 새 스키마를 사용하여 메시지를 읽을 수도 있습니다. 다음 버전과의 호환성 모드를 사용 하면 스키마에 대해 다음과 같은 변경 작업을 수행할 수 있습니다.

  • 필드 추가
  • 선택적 필드 삭제

호환성 없음

None 호환성 모드를 사용하면 스키마를 업데이트할 때 스키마 레지스트리에서 호환성 검사를 수행하지 않습니다.

클라이언트 SDK

다음 라이브러리 중 하나를 사용하여 Avro 직렬 변환기를 포함할 수 있습니다. 이를 통해 스키마 레지스트리 스키마 식별자 및 Avro 인코딩 데이터가 포함된 페이로드를 직렬화 및 역직렬화할 수 있습니다.

제한

Event Hubs 한도(예: 네임스페이스의 스키마 그룹 수)는 Event Hubs 할당량 및 한도를 참조하세요.

Azure 역할 기반 액세스 제어

프로그래밍 방식으로 스키마 레지스트리에 액세스하려면 다음 단계를 수행합니다.

  1. Microsoft Entra ID에 애플리케이션 등록
  2. 네임스페이스 수준에서 다음 Azure RBAC(Azure 역할 기반 액세스 제어) 역할 중 하나에 애플리케이션의 보안 주체를 추가합니다.
역할 설명
소유자 스키마 레지스트리 그룹 및 스키마를 읽고, 쓰고, 삭제합니다.
참가자 스키마 레지스트리 그룹 및 스키마를 읽고, 쓰고, 삭제합니다.
스키마 레지스트리 판독기 스키마 레지스트리 그룹 및 스키마를 읽고 나열합니다.
스키마 레지스트리 기여자 스키마 레지스트리 그룹 및 스키마를 읽고, 쓰고, 삭제합니다.

Azure Portal을 사용하여 애플리케이션 등록을 만드는 방법에 대한 지침은 Microsoft Entra ID로 앱 등록을 참조하세요. 코드에서 사용할 클라이언트 ID(애플리케이션 ID), 테넌트 ID 및 비밀을 적어 둡니다.

다음 단계