1.2. 서비스 레지스트리의 스키마 및 API 아티팩트
이벤트 스키마 및 API 설계와 같은 서비스 레지스트리에 저장된 항목은 레지스트리 아티팩트 라고 합니다. 다음은 간단한 공유 가격 애플리케이션에 대한 JSON 형식의 Apache Avro 스키마 아티팩트의 예를 보여줍니다.
Avro 스키마 예
서비스 레지스트리에서 스키마 또는 API 설계가 아티팩트로 추가되면 클라이언트 애플리케이션에서 해당 스키마 또는 API 설계를 사용하여 런타임 시 클라이언트 메시지가 올바른 데이터 구조를 준수하는지 확인할 수 있습니다.
스키마 및 API 그룹
아티팩트 그룹은 스키마 또는 API 아티팩트의 선택적 이름이 지정된 컬렉션입니다. 각 그룹에는 일반적으로 특정 애플리케이션 또는 조직에 속하는 단일 엔티티에 의해 관리되는 논리적으로 관련된 스키마 또는 API 설계 세트가 포함되어 있습니다.
스키마 및 API 설계를 추가할 때 선택적 아티팩트 그룹을 생성하여 Service Registry에서 구성할 수 있습니다. 예를 들어 개발
및 프로덕션
애플리케이션 환경 또는 영업
및 엔지니어링
조직과 일치하도록 그룹을 생성할 수 있습니다.
스키마 및 API 그룹은 여러 아티팩트 유형을 포함할 수 있습니다. 예를 들어 Protobuf, Avro, JSON Schema, OpenAPI 또는 AsyncAPI 아티팩트가 모두 동일한 그룹에 있을 수 있습니다.
Service Registry 웹 콘솔, REST API, 명령줄, Maven 플러그인 또는 Java 클라이언트 애플리케이션을 사용하여 스키마 및 API 아티팩트 및 그룹을 생성할 수 있습니다. 다음 간단한 예제에서는 Core Registry REST API 사용 방법을 보여줍니다.
curl -X POST -H "Content-type: application/json; artifactType=AVRO" \ -H "X-Registry-ArtifactId: share-price" \ --data '{"type":"record","name":"price","namespace":"com.example", \ "fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}' \ https://my-registry.example.com/apis/registry/v2/groups/my-group/artifacts
$ curl -X POST -H "Content-type: application/json; artifactType=AVRO" \
-H "X-Registry-ArtifactId: share-price" \
--data '{"type":"record","name":"price","namespace":"com.example", \
"fields":[{"name":"symbol","type":"string"},{"name":"price","type":"string"}]}' \
https://my-registry.example.com/apis/registry/v2/groups/my-group/artifacts
이 예제에서는 my-group
이라는 아티팩트 그룹을 생성하고 공유 가격
의 아티팩트 ID를 사용하여 Avro 스키마를 추가합니다.
그룹 지정은 서비스 레지스트리 웹 콘솔을 사용할 때 선택 사항이며 기본
그룹은 자동으로 생성됩니다. REST API 또는 Maven 플러그인을 사용하는 경우 고유한 그룹을 생성하지 않으려면 API 경로에 default
그룹을 지정합니다.
다른 스키마 및 API에 대한 참조
일부 Service Registry 아티팩트 유형에는 한 아티팩트 파일에서 다른 아티팩트 파일로의 아티팩트 참조 가 포함될 수 있습니다. 재사용 가능한 스키마 또는 API 구성 요소를 정의한 다음 여러 위치에서 참조할 수 있습니다. 예를 들어, $ref
문을 사용하여 JSON 스키마 또는 OpenAPI에서 또는 가져오기
문을 사용하여 Google Protobuf 또는 중첩된 네임스페이스를 사용하여 Apache Avro에서 참조를 지정할 수 있습니다.
다음 예제에서는 중첩된 네임스페이스를 사용하여 Exchange
라는 다른 스키마에 대한 참조를 포함하는 tradeKey
라는 간단한 Avro 스키마를 보여줍니다.
중첩된 교환 스키마를 사용하는 tradeKey 스키마
교환 스키마
아티팩트 참조는 아티팩트 유형별 참조에서 내부 서비스 레지스트리 참조에 매핑되는 아티팩트 메타데이터의 컬렉션으로 서비스 레지스트리에 저장됩니다. 서비스 레지스트리의 각 아티팩트 참조는 다음으로 구성됩니다.
- 그룹 ID
- 아티팩트 ID
- 아티팩트 버전
- 아티팩트 참조 이름
Service Registry 코어 REST API, Maven 플러그인 및 Java serializers/deserializers(SerDes)를 사용하여 아티팩트 참조를 관리할 수 있습니다. 서비스 레지스트리는 아티팩트 콘텐츠와 함께 아티팩트 참조를 저장합니다. 또한 서비스 레지스트리는 모든 아티팩트 참조 컬렉션을 유지 관리하므로 이를 검색하거나 특정 아티팩트에 대한 모든 참조를 나열할 수 있습니다.
지원되는 아티팩트 유형
서비스 레지스트리는 현재 다음 아티팩트 유형에 대한 아티팩트 참조를 지원합니다.
- Avro
- Protobuf
- JSON 스키마