Schema Registry

김석·2023년 6월 19일
0

Kafka

목록 보기
10/11

1. Kafka 구조와 Schema Registry 등장 배경

  • kafka는 broker를 통해 producer와 consumer의 직접적인 관계를 끊음으로써 구조적인 결합도를 낮춤.
  • 하지만 직접적인 관계가 끊어짐에 따라 발생하는 이슈가 생김.
  • producer는 어떤 consumer가 메시지를 가져갈지 모르고, 더 중요한 것은 consumer는 어떤 producer가 메시지를 보내는지 모름.
  • 또한 Append-Only인 특징에 따라, 중간 수정 작업을 할 수 없음.
  • 따라서 broker는 메시지를 한 번 저장하고 나면 이후 수정할 수 없음.
  • producer는 로직 변경, 단순 오류 등으로 전송하는 메시지의 스키마를 변경할 수 있음.
  • 이러한 경우, consumer는 이 상황을 알지 못하고, 메시지를 읽지 못하고 장애가 발생함.
  • 구조적인 결합도는 낮아졌지만, 이 상황에서 알 수 있듯 producer와 consumer는 내부적인 결합도(의존성)을 가지고 있음.

2. Schema Registry란?

  • kafka 클라이언트 사이에서 메시지의 스키마를 저장, 관리하는 웹 어플리케이션.
  • producer와 consumer 사이 메시지 구조의 의존성을 낮추기 위해 고안됨.
  • schema registry는 kafka 외부에 구성되어 클라이언트와 통신함.
  • topic별 메시지 key, value 스키마 버전 관리 등의 기능이 있지만, 스키마 호환성 규칙을 강제하는 것이 핵심.

3. 스키마 호환성 종류

3-1. backward

  • 과거 스키마의 데이터를 새로운 스키마를 사용해 로딩할 수 있음.
  • 필드를 삭제한 경우
  • 기본 값이 있는 필드를 추가한 경우

3-2. forawrd

  • 새로운 스키마의 데이터를 과거 스키마를 사용해 로딩할 수 있음.
  • 필드를 추가한 경우
  • 기본 값이 있는 필드를 삭제한 경우

3-3. full

과거 스키마의 데이터를 새로운 스키마를 사용해 로딩할 수 있고, 새로운 스키마의 데이터를 과거 스키마를 사용해 로딩할 수 있음.

  • 기본 값이 있는 필드를 추가한 경우
  • 기본 값이 있는 필드를 삭제한 경우

3-4. none

스키마 호환성을 체크하지 않음.


4. 스키마 호환성 예시

4-1. {name, age} -> {name, age, gender}, gender 기본값 O

  • 과거 스키마 데이터를 새로운 스키마를 사용해 로딩 가능(gender는 기본값으로 채워짐): backward 호환성 O
  • 새로운 스키마의 데이터를 과거 스키마를 사용해 로딩 가능: forawrd 호환성 O
  • 따라서 full 호환성 O

4-2. {name, age} -> {name, age, gender}, gender 기본값 X

  • 과거 스키마 데이터를 새로운 스키마를 사용해 로딩 불가능(gender값 X): backward 호환성 X
  • 새로운 스키마의 데이터를 과거 스키마를 사용해 로딩 가능: forawrd 호환성 O
  • full 호환성 X

4-3. {name, age, gender} -> {name, age}, gender 기본값 O

  • 과거 스키마 데이터를 새로운 스키마를 사용해 로딩 가능: backward 호환성 O
  • 새로운 스키마의 데이터를 과거 스키마를 사용해 로딩 가능(gender는 기본값으로 채워짐): forawrd 호환성 O
  • 따라서 full 호환성 O

4-4. {name, age, gender} -> {name, age}, gender 기본값 X

  • 과거 스키마 데이터를 새로운 스키마를 사용해 로딩 가능: backward 호환성 O
  • 새로운 스키마의 데이터를 과거 스키마를 사용해 로딩 불가능(gender값 X): forawrd 호환성 X
  • full 호환성 X

출처

https://always-kimkim.tistory.com/entry/kafka101-schema-registry
사사키 도루, 『실전 아파치 카프카』, 정인식, 한빛미디어(2020)

profile
handsome

0개의 댓글