[LG CNS AM Inspire CAMP 1기] MSA (8) - 장애 처리와 Microservice 분산 추적 (zipkin)

니니지·2025년 3월 12일

LG CNS AM Inspire Camp 1기

목록 보기
40/47

INTRO

안녕하세요, 오늘은 장애 처리 방법과 추적 기술에 대해 학습한 내용을 정리했습니다. 장애 처리 방법 중 하나인 서킷 브레이커의 개념과 시스템 모니터링을 위한 zipkin 활용 방법을 알아보겠습니다.

1. 장애 처리

1) 사용자에게 에러 메세지를 보여준다
2) 사용자에게 에러가 아닌, 대신 처리할 작업을 보여준다 (Fallback method)
-> 성공한 기록 cache 해놓고 이전 데이터를 보여준다

- 회복성

[circuit breaker]

  • 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단
  • 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 / 장애 회피

- 관련 기술

- resilience4j (CircuitBreaker)

[DefaultConfiguration]


[Factory]


  • 내 코드

2. 분산 추적

- zipkin

  • Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈소스)
  • Google Drapper에서 발전하였으며, 분산환경에서의 시스템 병목 현상 파악
  • Collector, Query Service, Databasem WebUI로 구성

- Span vs Trace

  • Span
    • 하나의 요청에 사용되는 작업의 단위
    • 64 bit unique ID
  • Trace
    • 트리 구조로 이뤄진 Span 셋
    • 하나의 요청에 대한 같은 Trace ID 발급

- 예제

코드 추가

[user-service]

[order-service]

[도식화]

- docker 환경의 zipkin 설치


  • 나는 zipkin stop 하고 만들어서 2개 돌아감
  • 도커 zipkin 포트 충돌나지 않게 변경

  • 워크벤치에서 테이블 잘 생성된 것 확인

- zipkin 대시보드 (9411)



- 이 외 서비스 : kiali, grafana

OUTRO

zipkin으로 시스템 모니터링하는 방법을 보며 이 서비스는 신세계라고 느꼈습니다. 회사에서 로그를 뚫어져라 쳐다보며 오류를 찾아가던 기억이 있는데 이렇게 서비스 별 쿼리 내역을 traceID 와 spanID로 구별해 확인하고, 시각화 된 서비스로 모니터링할 수 있음을 확인하며, 생산성을 높이는 툴임을 확실하게 느낄 수 있었습니다. 이 작업은 인프라 팀에서만 관리할 것 같은데, 운영 시 zipkin과 같은 플랫폼을 쓸 수 있다면 유용할 것 같습니다.

profile
지니니

0개의 댓글