STK-OBS-09 Kafka 샘플 produce→consume trace 검증

작업 내용

message-consume 추적(R-02)을 입증하기 위해 backend에 검증 전용 최소 샘플 produce→consume 경로를 둔다(ADR-007). 도메인 Kafka 적용은 범위 밖이다.

  • 검증 전용 토픽 1개 + 샘플 이벤트 producer/consumer(@Profile로 격리하거나 trigger 엔드포인트).
  • OTel Java agent(STK-OBS-05)가 Kafka client를 자동계측해 메시지 헤더에 traceparent를 주입·복원, producer span과 consumer span이 동일 trace로 연결되는지 확인.

롤백: 샘플 producer/consumer·토픽 제거. 검증 코드는 @Profile("otel-poc")로 격리해 프로덕션 경로에 영향 없음.

다이어그램

처리 흐름

sequenceDiagram
    participant P as Producer(backend)
    participant K as Kafka
    participant C as Consumer(backend)
    participant COL as Collector
    P->>K: produce(traceparent 헤더)
    K->>C: deliver(헤더 보존)
    C->>C: consume span을 부모 trace에 연결
    P->>COL: producer span
    C->>COL: consumer span

클래스 의존

flowchart LR
    TRIG["sample trigger"]
    PROD["SampleEventProducer"]
    CONS["SampleEventConsumer"]
    AGENT["OTel Java agent"]
    TRIG --> PROD
    PROD --> CONS
    AGENT --> PROD
    AGENT --> CONS

테스트 케이스

  • 샘플 이벤트 produce→consume 1건이 동일 trace에 producer·consumer span으로 연결된다.
  • consumer span의 부모가 producer span이다(traceparent 헤더 전파 확인).
  • consume 지연(latency)이 span에 측정되어 UI에 표시된다.
  • kafka-exporter consumer lag 메트릭이 함께 수집된다.
  • otel-poc 프로파일이 비활성이면 샘플 경로가 로드되지 않는다(프로덕션 격리).