๐ ๊ฐ์
์๋น์ค๊ฐ ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌ๋ ํ๊ฒฝ์์
์์ฒญ ํ๋ฆ์ด ๋ณต์กํด์ ธ ๋ฌธ์ ์์ธ ํ์
์ด๋ ค์
โ ์์ฒญ ํ๋ฆ์ ํ๋์ ํ์
๊ฐ๋ฅ
-
ํด๊ฒฐ ๋ฌธ์
-
์๋น์ค ๊ฐ ํธ์ถ ๊ด๊ณ ์ถ์
-
์ฑ๋ฅ ๋ณ๋ชฉ ์ง์ ํ์
-
์ฅ์ ์์ธ ๋ถ์
-
ํต์ฌ ํน์ง
-
์์ฒญ ํ๋ฆ ์๊ฐํ
-
์๋น์ค ๊ฐ ๊ด๊ณ ๋ถ์
-
ํธ๋์ญ์
๋จ์ ์ถ์ ๊ฐ๋ฅ
โ๏ธ ํต์ฌ ๊ฐ๋
1๏ธโฃ Trace (ํธ๋ ์ด์ค)
- ํ๋์ ์์ฒญ ์ ์ฒด ํ๋ฆ ํํ
- ์ฌ๋ฌ ์๋น์ค ํธ์ถ ํฌํจ
- ํ๋์ Trace ID ๊ณต์
- ์ ์ฒด ์์ฒญ ๋จ์ ์ถ์ ๊ฐ๋ฅ
2๏ธโฃ Span (์คํฌ)
- ํ๋์ ์์
๋จ์
- ์๋น์ค ๋ด๋ถ ์ฒ๋ฆฌ ๋๋ ์ธ๋ถ ํธ์ถ ๋จ์
- ์์ ์๊ฐ / ์ข
๋ฃ ์๊ฐ ํฌํจ
- ๋ถ๋ชจ-์์ ๊ตฌ์กฐ๋ก ๊ณ์ธต ๊ตฌ์ฑ ๊ฐ๋ฅ
3๏ธโฃ Context (์ปจํ
์คํธ)
- ์๋น์ค ๊ฐ ์ ๋ฌ๋๋ ์ถ์ ์ ๋ณด
- Trace ID / Span ID ํฌํจ
- ์ ์ฒด ํ๋ฆ ์ฐ๊ฒฐ ์ญํ ์ํ
4๏ธโฃ Micrometer
- Spring ๊ธฐ๋ฐ ๋ฉํธ๋ฆญ ์์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Prometheus, Grafana ์ฐ๋ ๊ฐ๋ฅ
- ๋ถ์ฐ ์ถ์ ๊ธฐ๋ฅ ์ ๊ณต
5๏ธโฃ Zipkin
- ํธ๋ ์ด์ค ๋ฐ์ดํฐ ์์ง ๋ฐ ์๊ฐํ ๋๊ตฌ
- ์๋น์ค ํธ์ถ ํ๋ฆ UI ์ ๊ณต
- Trace / Span ๊ธฐ๋ฐ ๊ตฌ์กฐ ํ์ธ ๊ฐ๋ฅ
๐ ๋์ ์๋ฆฌ
Client โ Order Service โ Product Service
- ์์ฒญ ๋ฐ์ ์ Trace ์์ฑ
- ๊ฐ ์๋น์ค ํธ์ถ๋ง๋ค Span ์์ฑ
- Context๋ฅผ ๋ค์ ์๋น์ค๋ก ์ ๋ฌ
- ๋ชจ๋ ๋ฐ์ดํฐ Zipkin์ผ๋ก ์ ์ก
Zipkin
- Trace ์์ง ๋ฐ ์ ์ฅ
- ํธ์ถ ํ๋ฆ ์๊ฐํ
- ์๋น์ค ๊ฐ ๊ด๊ณ ๋ถ์
๐ป ์ฝ๋ ์์
1๏ธโฃ Zipkin ์๋ฒ ์คํ
docker run -d -p 9411:9411 openzipkin/zipkin
2๏ธโฃ ์์กด์ฑ ์ค์
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation 'io.github.openfeign:feign-micrometer'
implementation 'io.zipkin.reporter2:zipkin-reporter-brave'
}
3๏ธโฃ application.yml ์ค์
management:
zipkin:
tracing:
endpoint: "http://localhost:9411/api/v2/spans"
tracing:
sampling:
probability: 1.0
- sampling 1.0 โ ๋ชจ๋ ์์ฒญ ์ถ์
- Zipkin endpoint โ Trace ๋ฐ์ดํฐ ์ ์ก
๐ Zipkin ์ฌ์ฉ ๋ฐฉ๋ฒ
- Zipkin ์ ์
- RUN QUERY ํด๋ฆญ
- Trace ๋ชฉ๋ก ํ์ธ ๊ฐ๋ฅ
- Spans ๊ฐ ํ์ธ
- ์: Spans 3 โ ์๋น์ค 3๋จ๊ณ ํธ์ถ ์๋ฏธ
- SHOW ํด๋ฆญ
โ ์ ์ฒด ํธ์ถ ํ๋ฆ ํ์ธ ๊ฐ๋ฅ
Order Service โ Product Service ํธ์ถ ๊ณผ์ ์๊ฐํ
Zipkin ํ์ฉ ํฌ์ธํธ
- ์ ์ฒด ์๋น์ค ํธ์ถ ํ๋ฆ ํ์ธ ๊ฐ๋ฅ
- ์ด๋ค ์๋น์ค๊ฐ ๋๋ฆฐ์ง ํ์ธ ๊ฐ๋ฅ
- Span๋ณ ์์ ์๊ฐ ๋น๊ต ๊ฐ๋ฅ
๐ ์๋ต ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ Span ํ์ธ
๐ ๋ณ๋ชฉ ์๋น์ค ์์น ํ์
๐ ์ฑ๋ฅ ๊ฐ์ ํฌ์ธํธ ๋์ถ
๐ง TIL (Today I Learned)
- ๋ถ์ฐ ์ถ์ ์ Trace / Span / Context ๊ตฌ์กฐ๋ก ๋์
- Zipkin์ ํตํด ์๋น์ค ํธ์ถ ํ๋ฆ์ ์๊ฐ์ ์ผ๋ก ํ์ธ ๊ฐ๋ฅ
- Spans ๊ฐ์๋ก ํธ์ถ ๋จ๊ณ ํ์
๊ฐ๋ฅ
- ์๋ต ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ Span์ ๊ธฐ์ค์ผ๋ก ๋ณ๋ชฉ ๋ถ์ ๊ฐ๋ฅ
- MSA ํ๊ฒฝ์์ ๋๋ฒ๊น
๋ฐ ์ฑ๋ฅ ๋ถ์์ ํ์ ๋๊ตฌ