← 학습 카테고리

Learn

Kafka

84개 모듈 · 현재 47번째

Kafka 모듈 47/84 kafka-learn-47

Kafka Connect SMT(Single Message Transform)와 헤더 활용

Kafka Connect SMT 공식 문서 및 KRaft 컨트롤러 쿼럼 사이징 가이드 종합 (웹 리서치, 2026) — Confluent 공식 문서(kafka-connectors/transforms) + Apache Kafka 공식 문서(operations/kraft) Confluent 공식 문서 kafka-connectors/transforms/overview

이 모듈을 다 읽으면

  • SMT가 어떤 문제를 해결하고, 별도 스트림 처리 애플리케이션과 무엇이 다른지 설명할 수 있다
  • SMT 체인에서 순서와 predicate가 왜 중요한지 판단할 수 있다

kafka-learn-14에서 다룬 Kafka Connect를 전제로, 커넥터를 거치는 개별 레코드를 가볍게 변형하는 SMT(Single Message Transform)의 동작 원리와 체이닝·조건부 적용 방식을 정리한다.

SMT — 커넥터 파이프라인 위의 가벼운 레코드 변형

SMT(Single Message Transform)는 Kafka Connect 커넥터를 거치는 개별 레코드 하나하나를 그 자리에서 가볍게 변형(필드 추가/삭제/이름변경, 마스킹, 라우팅 변경 등)하는 기능이다. 별도의 Kafka Streams나 Spark Structured Streaming 애플리케이션을 새로 띄우지 않고도, 커넥터 설정 파일에 몇 줄만 추가해 간단한 변형을 처리할 수 있다는 게 핵심 이점이다 — 다만 SMT는 레코드 하나 단위로만 동작하므로(다른 레코드와 조인하거나 상태를 유지하는 복잡한 처리는 불가능), 그 이상의 로직이 필요하면 결국 별도 스트림 처리 애플리케이션이 필요하다.

핵심 포인트

  • SMT = 커넥터를 거치는 개별 레코드를 그 자리에서 가볍게 변형(필드 추가/삭제/마스킹 등)하는 기능
  • 별도 스트림 처리 앱 없이 커넥터 설정만으로 간단한 변형 처리 가능 — 단, 레코드 단위 처리만 가능(조인/상태 유지 불가)

체인, 순서, 그리고 조건부 적용(predicate)

transforms 설정에 여러 SMT를 콤마로 나열하면 그 순서 그대로 레코드가 순차적으로 통과한다 — 순서가 결과에 영향을 준다(예: 필드 이름을 바꾸는 변형 다음에 그 필드를 참조하는 변형을 두면 옛 이름으로는 못 찾는다). Kafka Connect 2.6부터는 predicates 설정으로 '이 변형은 특정 조건을 만족하는 레코드에만 적용'하도록 조건을 걸 수 있다(negate=true로 조건 반전도 가능) — 예를 들어 특정 토픽에서 온 레코드에만 마스킹을 적용하고 나머지는 그대로 두는 식이다. predicate 없이 무조건 전체 레코드에 SMT를 적용하면, 정작 그 변형이 필요 없는 레코드까지 매번 처리 비용을 치르게 된다.

핵심 포인트

  • transforms에 나열한 순서대로 레코드가 순차 통과 — 순서가 결과에 영향을 준다
  • predicates(2.6+)로 특정 조건을 만족하는 레코드에만 SMT를 조건부 적용(negate=true로 반전 가능)