Zipkin 정리

한소연·2026년 4월 18일

내일배움캠프

목록 보기
21/21
post-thumbnail

1. Zipkin이란?

Zipkin은 분산 시스템에서 발생하는 요청의 흐름을 추적하기 위한 분산 트레이싱 시스템(Distributed Tracing System)이다.
마이크로서비스 아키텍처(MSA) 환경에서 서비스 간 호출 관계를 시각화하고, 병목 지점이나 장애 원인을 빠르게 파악하는 데 사용된다.


2. 왜 필요한가?

MSA 환경에서는 하나의 요청이 여러 서비스를 거치며 처리된다.

예시:

클라이언트 → API Gateway → 회원 서비스 → 결제 서비스 → 알림 서비스

이때 문제가 생기면:

  • 어디서 지연이 발생했는지 알기 어려움
  • 어떤 서비스가 실패했는지 추적 어려움

👉 Zipkin을 사용하면:

  • 요청 흐름을 한눈에 확인 가능
  • 각 서비스의 처리 시간 확인 가능
  • 장애 발생 지점 빠르게 파악 가능

3. 핵심 개념

3.1 Trace

  • 하나의 요청 전체 흐름
  • 여러 서비스 호출을 하나로 묶은 것

3.2 Span

  • 하나의 작업 단위 (예: API 호출, DB 쿼리)
  • Trace 안에 여러 개 존재

3.3 Annotation

  • 이벤트 기록 (예: 요청 시작, 응답 완료)

3.4 Tag

  • 추가 정보 (예: HTTP URL, 상태 코드)

4. 동작 구조

[Client]
   ↓
[Service A] → [Service B] → [Service C]
   ↓              ↓              ↓
 Trace 데이터 생성 및 전송
   ↓
[Zipkin Server]
   ↓
[UI에서 시각화]

흐름 설명

  1. 요청이 들어오면 Trace ID 생성
  2. 각 서비스에서 Span 생성
  3. 데이터 수집 (Collector)
  4. 저장 (Storage: MySQL, Elasticsearch 등)
  5. UI에서 시각화

5. 주요 기능

5.1 요청 흐름 시각화

  • 서비스 호출 관계를 트리 형태로 표시

5.2 지연 시간 분석

  • 각 서비스의 처리 시간 확인 가능

5.3 병목 구간 파악

  • 어디서 시간이 오래 걸리는지 확인

5.4 장애 추적

  • 실패한 서비스 및 에러 확인 가능

6. 아키텍처 구성 요소

구성 요소설명
Collector트레이스 데이터 수집
Storage데이터 저장
Query Service데이터 조회
UI시각화

7. Spring Boot에서 Zipkin 사용

7.1 의존성 추가 (Gradle)

implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'

7.2 application.yml 설정

spring:
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      probability: 1.0
  • probability: 트레이싱 샘플링 비율 (1.0 = 100%)

7.3 실행 방법 (Docker)

docker run -d -p 9411:9411 openzipkin/zipkin

👉 접속: http://localhost:9411


8. Zipkin + Sleuth

Sleuth 역할

  • Trace ID, Span ID 자동 생성
  • 로그에 자동으로 포함

로그 예시

[traceId-spanId] INFO 로그 내용

👉 이를 통해 로그만 봐도 요청 흐름 추적 가능


9. 장점

  • MSA 환경에서 필수적인 관찰 도구
  • 요청 흐름을 직관적으로 파악 가능
  • 장애 분석 속도 향상
  • 성능 병목 지점 확인 가능

10. 단점

  • 트래픽이 많으면 데이터 증가
  • 저장소 비용 발생 가능
  • 샘플링 설정 필요

11. 언제 사용하면 좋은가?

  • 마이크로서비스 아키텍처
  • 서비스 간 호출이 많은 시스템
  • 장애 추적이 중요한 서비스
  • 성능 최적화가 필요한 경우

12. 정리

Zipkin은 단순 로그를 넘어서
👉 "요청의 흐름 자체를 시각화" 하는 도구다.

특히 MSA에서는:

  • 로그만으로는 부족
  • 트레이싱이 필수

👉 Zipkin + Sleuth 조합은
Spring 기반 MSA에서 거의 표준적인 선택이다.


13. 한 줄 요약

Zipkin은 "요청이 어디서 느려지고 어디서 실패했는지 한눈에 보여주는 분산 추적 도구"다.

profile
안 되면 될 때까지

0개의 댓글