728x90
모니터링
기존 모니터링 시스템으로는 5%가 부족해!
MSA 환경에서의 흔한 API 호출
API 호출에 지연/문제가 생긴 경우 어떤 서버가 문제의 원인을 제공했는가를 찾는 어려움
분산 Tracing의 필요
서버간 Trace 정보의 전달
서버간의 Trace 정보의 전달은 사용 Protocol의 헤더를 통해 전달 가능
- ex) HTTP Header
서버 내의 Trace 정보의 전달
Thread Local 등을 사용하여 Trace 정보를 전달
요즘 Java 서버 내의 Trace 정보의 전달 문제
다양한 Library에 의한 Thread 변경으로 인한 Trace 정보의 전달이 어려움
- Hystrix, RxJava,
@Async
...
Spring Cloud Sleuth
Spring Cloud에서 제공하는 Distributed Tracing 솔루션
- 대부분의 내외부 호출 구간에서 Trace 정보를 생성 및 전달
- Log에 남기거나 수집 서버(Zipkin)에 전송하여 검색/시각화
Spring Cloud Sleuth는 어떻게 Trace 정보를 전달하는가?
- 각 라이브러리, 솔루션별로 Trace 정보를 넘기기 위한 구현이 자동으로 구성되어 동작
- Zuul, Servlet, RestTemplate, Hystrix, Feign, RxJava
Spring Cloud Sleuth - Logging
Spring Cloud Sleuth 사용시 Application 로그에 Trace ID(UUID)가 함께 출력
Trace ID - 하나의 Request에 대해 서버 전체에 걸쳐 동일한 UUID
로그 수집 / 검색 시스템이 있다면 동일 요청에 해당하는 전체 서버의 로그 분석 가능
Spring Cloud Sleuth with Zipkin
DB 호출 구간을 위한 간단한 확장
Spring Cloud Sleuth로는 DB 호출 구간은 표현 안됨
- Spring AOP를 사용하여 Sleuth API로 Trace 정보를 직접 생성
Hystrix 모니터링 with Turbine
Hystrix 모니터링
Hystrix 모니터링 추가 구현
InfluxDB에 일주일치의 Hystrix Metrics 보관
Grafana를 통해 Dashboard 구성
Spring Boot Admin
회고
Open Source를 사용한다는 것
- 당연히 Bug도 있고, 문서도 부실하지만...
- Source Code가 주어졌기에 무엇이든 할 수 있다는 자신감
- Bug Report, 수정과 문서의 보강은 사용자의 몫
- 문제를 부딪히고 해결해가는 과정에서 개발팀 스스로 성장하고 있는 모습을 발견
Spring Cloud 덕분에 빠른 시간안에 최소의 인원으로 프로젝트를 진행할 수 있었다는 것
728x90
'SpringCloud' 카테고리의 다른 글
AWS 기반 Spring Cloud Config + Cloud Bus Kafka + Config Monitor 구성 (0) | 2021.07.23 |
---|---|
[11번가 Spring Cloud 기반 MSA로의 전환] 7. Appendix (0) | 2021.02.08 |
[11번가 Spring Cloud 기반 MSA로의 전환] 5. 11번가 MSA 환경 구성 (0) | 2021.02.08 |
[11번가 Spring Cloud 기반 MSA로의 전환] 4. 장애 시나리오 (0) | 2021.02.08 |
[11번가 Spring Cloud 기반 MSA로의 전환] 3. Hystrix, Ribbon, Eureka 적용 in 11st (0) | 2021.02.08 |
댓글