Spring Cloud Sleuth는 마이크로서비스 환경에서 분산 트레이싱을 구현하는 핵심 도구로, 서비스 간 요청 흐름을 추적하고 성능 병목 현상을 진단하는 데 활용됩니다.
기본 구성 절차
1. 의존성 추가
<properties>
<spring-cloud.version>2021.0.0</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
</dependencies>
의존성 추가 후 HTTP 요청 추적 기능이 자동으로 활성화됩니다.
2. 핵심 개념
- 트레이스(Trace): 관련 스팬을 포함하는 전체 요청 경로
- 스팬(Span): 시작/종료 시간을 가진 작업 단위
- 트레이스 ID: 전체 요청을 식별하는 고유값
- 스팬 ID: 개별 작업 단위 식별자
핵심 설정 옵션
1. 샘플링 주기 설정
spring:
sleuth:
sampler:
probability: 0.5 # 50% 요청 샘플링
2. 전파 방식 설정
spring:
sleuth:
propagation:
type:
- B3
- W3C
3. 컨텍스트 전달 설정
spring:
sleuth:
baggage:
remote-keys: sessionId,transactionCode
correlation-keys: sessionId
Zipkin 연동
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
spring:
zipkin:
endpoint: http://zipkin-server:9411/api/v2/spans
sender:
type: web
고급 활용 기법
1. 사용자 정의 스팬 생성
@Autowired
private Tracer tracer;
public void executeTask() {
Span customSpan = tracer.spanBuilder("task-execution").start();
try (Scope scope = customSpan.makeCurrent()) {
customSpan.tag("task-type", "batch");
// 비즈니스 로직
} finally {
customSpan.end();
}
}
2. 어노테이션 기반 추적
@NewSpan("order-validation")
public void validateOrder(@SpanTag("order-code") String code) {
// 검증 로직
}
3. 성능 최적화
spring:
sleuth:
async:
enabled: true
redis:
enabled: false # Redis 추적 비활성화
로그 통합
logging:
pattern:
level: "%5p [${spring.application.name},%X{traceId},%X{spanId}]"
문제 해결 전략
- 샘플링 전략: 프로덕션 환경에서는 0.01(1%)로 설정 권장
- 메모리 관리:
spring.sleuth.baggage.max-value-length=512 - 네트워크 최적화:
spring.zipkin.compression.enabled=true
성능 영향 분석
적절한 구성 시 시스템 부하 증가는 1-3% 수준이며, 주요 영향 요소는:
- 샘플링 빈도
- 스팬 데이터 크기
- 저장소 성능
진화 방향
Spring Cloud Sleuth 3.1 이후 버전은 Micrometer Tracing으로 기능 이관되었으며, 최신 프로젝트에서는 Micrometer 적용을 권장합니다.