24.04.14 13:09 작성
·
181
0
안녕하세요, 늘 양질의 강의 제공해 주심에 감사합니다.
강의를 듣다가 알쏭달쏭한 부분이 있어 질문드립니다.
Schema Registry 를 활용하여 하위(Backward) 호환성 유지 시, 새로운 스키마를 설정되게 되면 Worker Conenct 를 강제로
실행시켜 줘서 Sink Connector 가 새로운 스키마가 갱신되도록 해줘야하는 절차가 꼭 필요한가요?
(Consumer 가 새로운 버전으로 스키마 업데이트가 되도록 강제하기 위한 수동 절차가 꼭 필요한 것인지 궁금합니다. 아님 이러한 부분도 자동으로 Schema registry 에서 Sink 쪽으로 콜백을 주어 캐시된 스키마에 대한 정보 업데이트가 되도록 되는건지,,)
(Forward 호환성인 경우) Source Connector 에서 V1 버전 스키마로 메세지를 발행하다가, 어느 순간 신규 스키마 버전 V2 로 메세지를 발행하게 되어 Schema registry 에 V2 가 등록이 된 상태에서, Sink 쪽에서는 이 메세지를 받게 되면 schema id : v2 인 정보를 카프카 메세지 내에 정보를 통해 알게 될텐데,
그럼에도 아직 워커 커넥트 내부 캐시된 스키마 정보엔 v2 가 없더라도, Forward 호환성인 경우에는 Sink Connector(Consumer) 입장에선 Schema registry 를 새로이 호출하여 스키마 업데이트를 하지 않는걸까요 ?
보통 운영환경에서 스키마 관리 자체를 DB source connector 에서 자동으로 만들어주는 스키마가 아니라 Schema registry 에 직접 새로운 스키마를 등록하여 운영환경에서 활용하시는지, 혹은 SOurce connector 의 자동 스키마 완성으로 사용하시는지 궁금 합니다.
양질의 강의에 다시한번 감사드리며 답변 부탁드리겠습니다.
좋은 하루 되세요.
감사합니다.
답변 1
0
2024. 04. 15. 08:26
안녕하십니까,
강의 칭찬해 주셔서 넘 감사드립니다.
1, 2번 모두에 대한 답변은 아래와 같습니다.
Schema Registry에 Schema가 변경되어도 기존에 기동되는 Producer와 Consumer는 여전히 이전 버전 Schema를 바라보고 있기 때문에 자동으로 Producer와 Consumer에 반영되지 않습니다. 때문에 신규 버전 Schema를 반영하려면 Producer/Consumer는 재기동이 되어야 반영이 됩니다.
자동 반영이 되지 않는 이유로는 (개인적인 생각으로)
첫번째로, Schema Registry를 사용하는 분산 데이터 처리 솔루션들은 각자 고유한 영역이 있습니다. 빅데이터 솔루션들은 일반적으로 느슨한 형태로 다른 라이브러리들을 참조해 왔지만, 일체형으로 Schema Registry를 포함하려는 노력은 하지 않습니다. 마찬가지로 Schema Registry 역시 느슨한 협력을 원하지, 직접적으로 다른 분산 처리 솔루션들을 통제하려 하지 않습니다.
두번째로는 Producer/Consumer를 수동으로 내리지 않고, 자동으로 반영하는 절차는 위험을 가져올 요소도 많습니다. 분산 데이터 처리 솔루션들이 연결되어 작업하는 환경에서는 특정 스키마의 변경이 반드시 일관적으로 모두가 이를 다 반영하지 않을 수도 있습니다. 때문에 신규 스키마의 버전 반영은 Producer 또는 Consumer 재 기동이라는 사용자 수동 개입이 더 나은 운영 편리성을 제공할 수 있습니다.
3번 질문의 경우, 제가 많은 사이트를 확인해 본건 아니지만,
Connector의 자동 스키마 변경은 적용하지 않습니다. 이유는 강의에서 계속 말씀드리지만, 자동 스키마 적용은
오류를 발생 시킬 여지가 많습니다. 때문에 스키마의 변경이 발생하면 Source Connector, Sink Connector Down 후 Source DB의 Schema, Target DB의 스키마를 모두 변경 후 다시 재기동합니다.
감사합니다.