Kafka/Schema-Registry 6

Schema-Registry Naming Strategy

목차 초기에는 1개의 전략밖에 없었으나 현재는 3개가 존재한다. TopicName Strategy(Default) RecordName Strategy TopicRecordName Strategy TopicName Strategy(Default) 아무것도 설정하지 않을 때 설정. subject명이 "토픽명"-key, "토픽명"-value와 같이 구성된다. ex) order-key, order-value 그래서 Schema-Registry가 활성화된 토픽에 넣고자하면 order-value라는 subject를 찾아가서 처리하게 된다. KsqlDB는 아직까지 TopicName Strategy만 지원하고 있다고 한다. Connect는 Connector마다 지원하는 전략이 다 다르기 때문에 확인이 필요하다. 스키마..

Schema-Registry Compatibility

목차 [Compatibility] 호환성은 Schema Evolution이 발생할 때 어떻게 변화할 수 있는가에 대한 것이다. 기본적으로 3가지 전략이 있다. Backward Forward Full Backward Compatibility Consumer V2가 V1을 문제없이 처리가능한 호환성. Consumer 업데이트 → Producer 업데이트 순서로 배포해야한다. 필드추가 (기본값이 있을 때 가능) Consumer가 V2일 때 V1을 처리할 수 있다. #V1 { "Name": "String", "Age": "Int" } #V2 { "Name": "String", "Age": "Int", "Sex": "Char" (Default: M) } 필드 삭제 가능. Consumer가 V2일 때 V1을 문제없..

Schema-Registry + Validation

목차 [Schema-Validation] Confluent 5.4 버전부터 지원하는 기능으로 Kafka에 등록된 토픽이 유효한 Schema Registry ID를 갖고 있는지 확인 할 수 있다. 이를 통해 중앙 집중식 토픽 정책 적용을 하기위한 기반을 마련할 수 있게 되었다. 아래처럼 validation = true로 지정하여 검증할 수 있다. 중앙 집중화된 데이터 거버넌스가 중요한 이유 데이터 거버넌스는 한 기업의 데이터를 공식적이고 적절하게 관리하여 책임성과 전송성을 확보할 수 있도록 한다. 즉, 조직끼리 데이터의 생성, 전송, 해석 등이 동일하게 관리될 수 있다. 이벤트 스트리밍에서는 아래와 같은 뉘앙스를 가질 수 있다. 모든 사람이 이해할 수 있는 하나의 구조를 가질 수 있게 된다. P2 메시지 ..

Schema-Registry : Producer

목차 [주요 Configuration] #schema-registry url spring.kafka.producer.properties.schema.registry.url: http;://localhost:8081 # schema 자동등록 여부 (default: true. 운영에서는 false 권고) spring.kafka.producer.properties.auto.register.schemas: false # 최신버전의 schema만 사용할지 여부 (default: false) spring.kafka.producer.properties.use.latest.version: false # key-serializer spring.kafka.producer.properties.key-serializer: o..

Schema-Registry?

목차 [Overview] Schema Registry는 메타데이터에 대한 서비스를 제공한다. Schema Registry는 Avro, JSON, Protobuf 스키마를 저장하고 검색할 수 있는 RESTful 인터페이스를 제공한다. 특화된 subject name strategy를 기반으로 모든 스키마의 버전을 기록하고, 다양한 compatibility 세팅과 정의된 compatibility를 바탕으로 schema evolution을 허용한다. Schema Registry는 Kafka Broker와는 분리되어 있다. Producer와 Conumer는 메시지를 쓰기위해 여전히 Kafka와 통신하게 된다. 이와 동시에 Schema Registry와 통신하여 메시지의 데이터 모델을 describe하는 스키마를 ..