Spring 계측 방식 선택 (OTel Java agent 자동계측)
상태
승인
후보군
| 방안 | 설명 |
|---|---|
| OTel Java agent | -javaagent로 바이트코드 자동계측. HTTP server/client·JDBC·Kafka client·JVM 무코드 수집 |
| Micrometer Tracing + OTLP bridge | Spring 라이브러리 의존성 추가 + 설정 코드로 계측 |
| 수동 OTel SDK 계측 | 코드에서 직접 span 생성·전파 |
결정
backend·aggregator는 OTel Java agent 자동계측을 적용한다. 컨테이너 실행 시 -javaagent와 OTEL_* 환경변수만 주입한다.
결정 이유
- backend·aggregator에 계측 코드가 0이다. Java agent는 코드 변경 없이 Spring MVC·RestClient·HikariCP·Kafka client·JVM 메트릭을 자동 수집한다.
- aggregator의 RestClient reverse-proxy 호출(Reverse Proxy 구현 방식 선택)에 traceparent가 자동 주입돼 분산 trace가 코드 수정 없이 연결된다.
- 끄고 켜기가 env(
OTEL_SDK_DISABLED)로 즉시 가능 → 롤백 비용 0.
검토 대안
| 방안 | 기각 이유 |
|---|---|
| Micrometer Tracing + OTLP | 의존성·설정 코드 추가 필요. 자동계측 대비 초기 작업량 큼 |
| 수동 OTel SDK | span 생성·전파를 코드로 관리 → 누락·유지보수 비용 큼 |
트레이드 오프
- (득) 무코드 자동계측, 즉시 롤백, 광범위한 라이브러리 커버리지.
- (실) agent가 JVM 시작에 관여 → 약간의 기동 오버헤드, 커스텀 span은 별도 API 필요.