안녕하세요, 오늘은 장애 처리 방법과 추적 기술에 대해 학습한 내용을 정리했습니다. 장애 처리 방법 중 하나인 서킷 브레이커의 개념과 시스템 모니터링을 위한 zipkin 활용 방법을 알아보겠습니다.
1) 사용자에게 에러 메세지를 보여준다
2) 사용자에게 에러가 아닌, 대신 처리할 작업을 보여준다 (Fallback method)
-> 성공한 기록 cache 해놓고 이전 데이터를 보여준다
[circuit breaker]
- 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단
- 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 / 장애 회피

[DefaultConfiguration]
[Factory]
- 내 코드
- Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈소스)
- Google Drapper에서 발전하였으며, 분산환경에서의 시스템 병목 현상 파악
- Collector, Query Service, Databasem WebUI로 구성
- Span
- 하나의 요청에 사용되는 작업의 단위
- 64 bit unique ID
- Trace
- 트리 구조로 이뤄진 Span 셋
- 하나의 요청에 대한 같은 Trace ID 발급

[user-service]
[order-service]
[도식화]









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