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