본문으로 건너뛰기

Compatibility Types

호환성 레벨 타입은 크게 BACKWARD | FORWARD | FULL | NONE으로 나뉘며, TRANSITIVE에 따라 최종 버전만 확인할지, 모든 이전 버전을 확인할지 결정해요. 기본값은 BACKWARD 에요.

  • BACKWARD: 새로운 스키마로 만들어진 데이터를 이전 스키마를 사용하는 컨슈머가 문제없이 처리하도록 보장.
  • FORWARD: 이전 스키마로 만들어진 데이터를 새로운 스키마를 사용하는 컨슈머가 문제없이 처리하도록 보장.
  • FULL: 새로운 스키마와 이전 스키마 간 양방향 호환성을 모두 보장.
  • NONE: 새로운 스키마와 이전 스키마의 호환 여부와 관계없이 모든 변경을 허용.

호환성 레벨 목록

호환성 레벨변경 허용호환성 확인 대상스키마 업그레이드 권장 순서
BACKWARD필드 삭제(required, optional), 필드 추가(optional)최종 버전(Last)Consumer 우선
BACKWARD_TRANSITIVE필드 삭제(required, optional), 필드 추가(optional)모든 이전 버전(All Previous)Consumer 우선
FORWARD필드 삭제(optional), 필드 추가(require, optional)최종 버전(latest)Producer 우선
FORWARD_TRANSITIVE필드 삭제(optional), 필드 추가(require, optional)모든 이전 버전(All Previous)Producer 우선
FULL필드 삭제(optional), 필드 추가(optional)최종 버전(latest)상관 없음
FULL_TRANSITIVE필드 삭제(optional), 필드 추가(optional)모든 이전 버전(All Previous)상관 없음
NONE모든 변경 허용확인하지 않음변경 사항에 따라 유연하게 적용
스키마 업그레이드 권장 순서

프로듀서와 컨슈머가 모두 같은 스키마를 사용 중인 상황에서 스키마를 갱신할 때, 해당 스키마의 호환성 레벨에 따라 어느 클라이언트의 스키마를 먼저 업그레이드 할지 순서를 지켜주어야 해요. 만약, 업그레이드 권장 순서를 지키지 않았을 경우 스키마 호환성 문제가 발생할 수 있으며 데이터 일관성이 무너질 수 있어요.