본문 바로가기

정리/유용 기능

유용한 도구 모음 (1)

Spring Cloud Sleuth + Zipkin

MSA 환경에서 주문 서비스, 수량 관리 서비스, 결제 서비스 등... 여러 서비스간의 통신으로 하나의 기능을 제공할 때, 오류가 발생하거나 느려진다면 어느 서비스의 문제인지 빠르게 찾기 위해서 사용한다. -> 트래픽 추적

 

Sleuth

  • 마이크로 서비스간의 트래픽 흐름을 추적할 수있도록 Trace 기록을 로그에 자동으로 삽입하는 기능을 제공한다.
  • 프로젝트에 Sleuth를 적용한 후, Logback 및 Slf4j 등을 사용하여 로깅하면 자동으로 로그에 Service 명, Trace ID, 트래픽 고유 ID가 삽입된다.
  • 추적을 위한 연관된 ID를 생성한다.
  • Spring에서 제공하는 Zipkin Client Library이다.

 

 Zipkin

  • Zipkin Client Library + Zipkin Server로 구성되어 있다.
    • Zipkin Client Library -> 정보 수집 담당
  • Sleuth의 Trace 기록을 송부받아 Zipkin UI를 통해 트래픽의 흐름을 쉽게 파악할 수 있도록 도와준다.

CircuitBreaker

분산 시스템 환경에서 외부 API 통신의 장애 전파를 막기 위해 사용한다. 장애를 탐지하고 성공/실패 여부를 카운트하여 에러율이 임계치를 넘어섰을 때, 자동으로 외부와의 통신을 차단한다.

제공 라이브러리

  • Netflix Hystrix -> 개발 중단 + 유지 보수 상태
  • Resilience4j -> Java 8 기반, 다른 라이브러리와의 의존성이 없다.

 

흐름

  • 외부 API 요청
  • 외부 API와의 통신이 실패하면, CircuitBreaker가 활성화(Open)
  • 활성화(Open)와 동시에 외부 API 서버에 요청을 날리지 않고, Fail Fast로 빠른 응답 리턴
  • CircuitBreaker가 활성화(Open) 상태이면, 일정 시간 후에 (Half-Open) 상태로 변경
  • (Half-Open) 상태에서 다시 외부 API 서비스로 요청하여 장애를 확인하면 활성화(Open) 상태로 변경, 정상 처리 시 비활성화(Closed) 상태로 변경

 

* CircuitBreaker를 사용함으로써, 장애가 발생한 서버와의 Connection Time, Read Time 등의 시간 낭비를 최소화할 수 있다.

* 쿠버네티스의 Istio를 이용해 인프라 레벨에서 적용이 가능하다.


Prometheus + Grafana

시스템 모니터링 기능을 지원한다.

Prometheus

  • 대상 시스템으로부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 시스템
  • 많은 시스템을 모니터링할 수 있는 다양한 플러그인을 가지고 있다.
  • Grafana를 통한 시각화를 지원한다.

Grafana

  • Prometheus를 비롯한 여러 데이터들을 시각화해주는 모니터링 툴이다.
  • Cpu, 메모리, 디스크의 메트릭 지표를 시각화하는데 특화되어 있다.
  • 다양한 데이터 베이스와 연동하여 사용할 수 있다.

'정리 > 유용 기능' 카테고리의 다른 글

[소프트웨어 분석] Sonarqube  (1) 2022.11.20
Multi Module  (0) 2022.11.13
Android Studio 없이 Emulator 실행하기  (0) 2022.10.20
[IntelliJ] 클래스 생성 시 자동 주석 설정  (0) 2022.09.06