스키마 레지스트리

이찬우·2025년 5월 24일

Kafka

목록 보기
2/5

스키마 레지스트리

스키마 레지스트리란?

Apache Kafka를 기반으로 데이터 스트리밍 플랫폼에서 스키마 관리를 위한 중앙 집중화된 서비스

즉, 메시지의 구조(스키마)를 중앙에서 관리하고, 데이터의 일관성과 호환성을 보장하는 독립적인 애플리케이션

등장 배경

카프카의 topic은 정해진 규정이 없기 때문에 어떤 형태의 메세지라고 Pub/Sub 할 수 있다. 그렇기 때문에 카프카는 2가지 특징을 갖게 되는데,

  • 프로듀서는 어떤 컨슈머가 메세지를 모른다.
  • 컨슈머는 어떤 프로듀서가 메세지를 모냈는지 모른다.

그렇기 때문에 발생하는 문제가 2가지가 있다.

  • 쓰기 작업은 말단에서만 실행된다.
  • 중간 수정을 할 수 없다.

즉, 브로커는 메세지를 한번 저장하고 나면 이후에 수정할 수 없다.

요컨데, 도중에 한 프로듀서가 스키마를 변경해서 새로운 형태의 메세지를 발행했을때, 각 컨슈머는 해당 부분에 알 수 있는 방법이 없다.

이러한 문제를 방지 하기 위해 스키마의 변경을 중앙에서 체계적으로 관리하고 스트림에서 호환성을 보장하기 위해서 등장하게 되었다.

주요 기능

1. 스키마의 저장 및 버전관리

  • Schema Registry를 통해 각 스키마의 버전을 저장하고, 변경된 부분이 있다면 손쉽게 확인할 수 있습니다.

2. 스키마 검증

  • 스키마를 등록할 때 자동으로 유효성을 검증하기 때문에 잘못된 스키마 등록을 방지한다.

3. 안전한 스키마 진화

  • 기존 데이터 스트림에 새로운 필드를 추가하거나 수정하는 등의 스키마를 변경할 때, 업데이트된 스키마를 등록하고 호환성 여부를 확인하기 때문에 안전하게 스키마를 진화시킬 수 있다.

  • 즉, 스키마 변경시, 기존 스키마와의 호환성을 검사하여 데이터 오류 처리를 방지한다.

위의 기능들 중에 가장 중요한 것은 스키마 검증 기능이다. 운영자가 스키마를 등록하여 사용할 수 있지만, 스키마를 버전별로 호환성을 강제함으로써 개발 규칙을 세우기 때문이다.

Schema Evolution 전략

호환성 타입허용되는 변경 사항비교 대상 스키마먼저 업그레이드해야 할 대상설명
BACKWARD- 필드 삭제
- 선택적 필드 추가
직전 버전만 비교Consumer(소비자)새 Producer가 보낸 메시지를 예전 Consumer가 문제없이 읽을 수 있는지 확인합니다. 주로 Consumer 먼저 업그레이드해야 할 때 사용한다.
FORWARD- 필드 추가
- 선택적 필드 삭제
직전 버전만 비교Producer(생산자)예전 Producer가 보낸 메시지를 새 Consumer가 읽을 수 있는지 확인합니다. Producer 먼저 업그레이드할 때 적합하다.
FULL- 선택적 필드 추가 및 삭제직전 버전만 비교순서 상관없음BACKWARDFORWARD를 모두 만족해야 합니다. 즉, 양방향 호환성을 가진다.
NONE- 모든 변경 허용호환성 검사 없음상황에 따라 다름스키마 변경에 대한 제한이 전혀 없습니다. 실험적이거나 일시적인 상황에서만 사용해야 한다

참고

0개의 댓글