[BE-02] application.yml — registry·tracing·env 태그 config
작업 내용 (설계 의도)
근거 TDD: ../TDD.md “인터페이스·엔드포인트 계약”, ADR-001, ADR-005.
변경 사항
backend/src/main/resources/application.yml의 management 블록을 관측 스택에 맞게 재구성한다. Datadog export 블록을 제거하고, Prometheus 노출·100% 샘플링 tracing·OTLP 발신·env 태그 매핑을 설정한다.
- 제거:
management.datadog.metrics.export.*(application.yml:160-167) - 유지:
management.endpoints.web.exposure.include의prometheus,metrics(registry가 생겨 실제 동작) - 유지:
management.metrics.tags.env: ${APP_ENV:local}(신규 키 미도입 — ADR-005) - 추가:
management.tracing.sampling.probability: 1.0 - 추가:
management.otlp.tracing.endpoint: ${MANAGEMENT_OTLP_TRACING_ENDPOINT:http://localhost:4318/v1/traces}(Spring Boot 3.3.5는 OTLP tracing HTTP 전용 — Collector HTTP 포트 4318 +/v1/traces.transport프로퍼티는 3.4+ 전용이라 두지 않는다 — 구현 중 확정, ADR-003 참조) - 추가: exemplar 옵션(P2, best-effort):
management.prometheus.metrics.exportexemplar 관련 프로퍼티 — 무리하면 생략(구현에서 생략)
무중단: MANAGEMENT_OTLP_TRACING_ENDPOINT 미주입 시 로컬 기본값으로 사실상 no-op → Collector 준비 전에도 앱 정상(플래그 등가). 롤백: management 블록 revert.
파일 소유는 application.yml 단독 — BE-03(kt config)·BE-04(logback)와 파일 교집합 없음.
의존
- BE-01 (tracing 의존성이 있어야
management.tracing/management.otlp가 바인딩됨)
다이어그램
처리 흐름
sequenceDiagram participant A as App participant Y as application.yml participant C as OTel Collector A->>Y: management config 로드 A->>A: PrometheusMeterRegistry 활성 (/actuator/prometheus 200) A->>C: OTLP trace 발신 (sampling 1.0) Note over A,C: endpoint 미설정 시 no-op
클래스 의존
flowchart LR YML["application.yml"] --> MET["management.metrics.tags.env"] YML --> TR["management.tracing.sampling"] YML --> OTLP["management.otlp.tracing.endpoint"]
테스트 케이스
- 앱 부팅 후
GET /actuator/prometheus가 200을 반환하고jvm_memory_used_bytes를 포함한다. - 노출된 메트릭에
env="local"태그가 부착돼 있다(APP_ENV 미설정 기본값). management.datadog프로퍼티가 application.yml에 존재하지 않는다(회귀 감지).OTEL_EXPORTER_OTLP_ENDPOINT미설정 상태에서도 앱이 정상 부팅한다(export no-op, 요청 처리 무영향).management.tracing.sampling.probability가 1.0으로 로드된다.