카프카 인프라를 구축함에 있어서 또 하나 중요한 것이, 토픽의 데이터 스키마를 어떻게 정의하는가 입니다. 카프카는 리액티브한 시스템 내에서 데이터가 흘러다니는 혈관과 같은 역할을 하고, 이를 통해 전체 시스템 내에서 처리하는 데이터의 구조, 즉 스키마를 정의할 수 있고, 이는 향후 데이터 플랫폼을 구축하는 데 있어서 더욱 meaningful한 데이터들을 잘 처리할 수 있는 토대를 제공하기 때문입니다. 이 글에서 가장 핵심적인 부분을 제가 실제 핀테크 시스템 구축에 적용한 내용으로 설명 드리면 다음과 같습니다. 카프카 인프라를 구축하시면서 데이터 관리를 어떻게 할지 고민하시는 분들은 참고하시면 좋을 것 같습니다.^^ 토픽 네이밍 규칙: <domain>.<classification>.<dataset> 첫번째 domain은 비즈니스 도메인 단위 혹은 이를 매핑할 수 있는 서비스 시스템 인스턴스 단위로 정의하면 되고, 향후 이는 시스템이 확장되면서 <domain>.<subdomain>과 같이 2단계로 혹은 3단계로 정의할 수 있습니다. 두번째 classification은 이 데이터를 해석하거나 사용해야 하는 방법을 컨슈머 입장에서 이해할 수 있게 약속된 값을 사용하면 됩니다. 이글의 저자가 추천한 몇가지 구분 값이 있는데 정리하면 다음과 같습니다. - fct : Fact Data, 사실 데이터는 실제 일어난 사건에 대한 정보이며, 불변의 사건임 예를 들어, 사용자 활동 이벤트, 센싱 정보 등이 해당함 - cdc : Change Data Capture, 특정 시점에 변경된 모든 변경 사항에 대한 정보이며, 사용자 데이터베이스의 변경에 따라 이를 처리할 때 사용함 - cmd : Command, 어떤 시스템이 요청-응답 패턴에 따라 특정 작업을 수행해야 할 때 사용함 예를 들어, 시스템에 사용자 정보를 추가하거나 업데이트하는 것 등이 해당함 - sys : System, 이는 시스템 관리용으로 목적성 있게 사용되며, 일반적인 서비스 데이터를 다루지 않음 마지막 dataset은 이 이벤트를 통해 처리하려는 데이터 단위의 이름을 정의하면 되며, 마찬가지로 <dataset>.<subdataset>처럼 확장할 수 있습니다. 그리고 이 글의 저자가 추천한 네이밍 규칙을 보면, 마지막에 version이 있는데, 스키마 레지스트리(Schema Registry)를 붙여서 사용하면 스키마 버전을 관리할 수 있으므로, 스키마 이름에 version을 두는 것 보다는 전체적인 데이터 관리 역량을 높이는 차원에서 스키마 레지스트리까지 함께 사용하는 것을 추천합니다.

Apache Kafka: Topic Naming Conventions

Shawn Seymour

Apache Kafka: Topic Naming Conventions

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2020년 11월 4일 오전 1:06

댓글 0