인프런 커뮤니티 질문&답변
이벤트 발행이 불필요한 것은 어떻게 구분하나요?
해결된 질문
작성
·
16
답변 2
0
안녕하세요 지찬님 질문 주셔서 감사합니다.
자 일단 CDC 라는 기법은 DB에 변경되는 이벤트들을 탐지하고 이를 이벤트로 전송하고 다루는 기술을 의미 합니다. 이떄 다룰 수 있는 기술은 CREATE, UPDATE, DELETE 이 3가지를 다룰 수 있을거고요.
여기서 CDC가 불필요하다?? 그러면 지찬님이 생성하시는 CDC Connector ( Kafka Connector )에 해당 기능은 뺴면 됩니다.
즉 예를들어서 A라는 테이블에 발생하는 이벤트만 잡고 싶어. -> A 테이블만 포함
B라는 테이블에 발생하는 이벤트는 잡기 싫어 -> B 테이블을 제외
이러면 끝나는거에요.! 간단한 설정값을 통해서 원하는 테이블만 확인하실 수 있으니 이 부분 참고하시면 질문에 대한 답이 되지 않을까 싶습니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. 한지찬님.
Debezium과 같은 CDC(Change Data Capture) 도구는 데이터베이스의 트랜잭션 로그를 모니터링하여 변경 사항을 캡처하고 이를 이벤트로 Kafka 등으로 발행하는 역할을 합니다. 하지만 Debezium 자체는 데이터 변경에 대한 추가적인 필터링이나 구분을 하지 않고 모든 변경사항을 발행합니다.
주어진 시나리오에서 이벤트 발행이 불필요한 경우를 구분하는 방법
업스트림 필터링:
- API 레벨에서 특정 데이터 변경이 CDC 이벤트로 발행될 필요가 없는 경우 자체적으로 구분하여 DB 변경을 수행할 수 있습니다. 예를 들어, HTTP 요청 핸들러에서 조건에 따라 트랜잭션을 분리할 수 있습니다.
- API 레벨에서 특정 데이터 변경이 CDC 이벤트로 발행될 필요가 없는 경우 자체적으로 구분하여 DB 변경을 수행할 수 있습니다. 예를 들어, HTTP 요청 핸들러에서 조건에 따라 트랜잭션을 분리할 수 있습니다.
카프카 컨슈머에서 필터링:
- 모든 변경사항을 카프카로 발행한 후, 카프카 컨슈머가 불필요한 데이터 변경 이벤트를 필터링하여 적절히 무시할 수 있습니다. 이는 컨슈머 애플리케이션 레벨에서 처리할 수 있습니다.
- 모든 변경사항을 카프카로 발행한 후, 카프카 컨슈머가 불필요한 데이터 변경 이벤트를 필터링하여 적절히 무시할 수 있습니다. 이는 컨슈머 애플리케이션 레벨에서 처리할 수 있습니다.
Debezium 커스텀 로직:
- Debezium 커넥터의 설정을 통해 특정 테이블이나 컬럼에 대한 변경 사항만 캡처하도록 필터링할 수 있습니다. 그러나 이는 이벤트 기준이 아닌 구조적 기준으로 작동하므로 완전한 해결책이 아닙니다.
- Debezium 커넥터의 설정을 통해 특정 테이블이나 컬럼에 대한 변경 사항만 캡처하도록 필터링할 수 있습니다. 그러나 이는 이벤트 기준이 아닌 구조적 기준으로 작동하므로 완전한 해결책이 아닙니다.
특정 API 요청이 CDC 이벤트로 발행되어야 하는지 여부를 결정하는 것은 일반적으로 비즈니스 로직에 따라 달라집니다. 개발팀이 각 API의 중요도와 발행 필요성을 분석하여 디자인해야 합니다.
관련된 내용으로 더 많은 정보를 얻고 싶으시면, 아래의 답변 링크를 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




