Spring์์ traceId์ spanId๋ ์ฝ๊ฒ ๋งํด, ๋ถ์ฐ์ถ์ ์์คํ ์ ํต์ฌ ๊ฐ๋ ์ด๋ค.
๋ถ์ฐ ์์คํ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ ๋ถ๋ถ์ด ๋์์ ์คํ๋๋ฉฐ, ์ด๋ฌํ ์คํ์ ์ฌ๋ฌ ์๋น์ค ๊ฐ์ ํธ์ถ ๋ฐ ํต์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
์ด๋ฌํ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ์ถ์ ํ๊ณ ์ดํดํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํ๋ฉฐ,
์ด๋ฌํ ๋์์ ํด์ค ์ ์๋๊ฒ TraceID์ SpanID๋ผ๊ณ ํ ์ ์๋ค.
TraceID์ SpanID๋?
- TraceID
: ๋ถ์ฐ ์์คํ ์์ ์ ์ฒด ํธ๋์ญ์ ์ ์ถ์ ํ๊ธฐ ์ํ ๊ณ ์ ์๋ณ์
์ฌ๋ฌ ์๋น์ค๊ฐ์ ํธ์ถ ์ฌ์ด์์ ํ๋ฆ์ ์ถ์ ํ๋๋ฐ ์ฌ์ฉ๋๋ค. ๋ชจ๋ ๋ก๊ทธ ๋ฐ ์ด๋ฒคํธ์๋ ๋์ผํ TraceID๊ฐ ์์ด์ผ ํ๋ค. - SpanID
: TraceID ๋ด์์ ๊ฐ๋ณ ์์ ๋๋ ๋จ๊ณ๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๊ฐ ์๋น์ค ํธ์ถ์ด Span์ผ๋ก ๋ํ๋๋ค. ์ฌ๋ฌ Span์ด ํ๋์ Trace์ ์ํ ์ ์๋ค.
Spring์์ TraceID์ SpanID ์ฌ์ฉํ๊ธฐ
Spring์์๋ ์ฃผ๋ก Spring Cloud Sleuth ์ ํจ๊ป TraceId์ SpanId๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ์ฐ ์ถ์ ์ ๊ตฌํํ๋ค.
Spring Cloud Sleuth๋ ๊ฐ ์์ฒญ์ ๊ณ ์ ํ TraceID์ SpanID๋ฅผ ์๋์ผ๋ก ๋ถ์ฌํ์ฌ ์๋น์ค ๊ฐ์ ํธ์ถ์ ์ถ์ ํ๋ค.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@Autowired
private SomeService someService;
@GetMapping("/hello")
public String hello() {
logger.info("Processing hello request");
someService.doSomething();
return "Hello world!";
}
}
@Service
public class SomeService {
private static final Logger logger = LoggerFactory.getLogger(SomeService.class);
public void doSomething(){
logger.info("Doing something...");
}
}
์ค์ ํ๋ก๋์ ํ๊ฒฝ์์์ ํ์ฉ ๋ฐฉ๋ฒ
1. ์ฅ์ ํ์ง ๋ฐ ๋๋ฒ๊น
: TraceID์ SpanID๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ํ ์ฅ์ ๋ฅผ ์ ์ํ๊ฒ ํ์
ํ๊ณ ๋๋ฒ๊น
ํ ์ ์๋ค.
๋ฌธ์ ๊ฐ ๋ฐ์ํ ์์ฒญ์ TraceID๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์์ฒญ์ด ์ด๋ค ์๋น์ค์์ ์คํจํ๋์ง ์ฝ๊ฒ ์ถ์ ํ ์ ์๋ค.
2. ์ฑ๋ฅ ์ต์ ํ
: ๊ฐ ์๋น์ค ํธ์ถ์ ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค.
๊ฐ Span์๋ ์คํ ์๊ฐ๊ณผ ์์ฒญ ๋ฐ ์๋ต ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ด, ์ด๋ฅผ ํตํด ์๋น์ค ๊ฐ์ ํธ์ถ์ ๋ถ์ํ ์ ์๋ค.
3. ์๋น์ค ์งํ ์์ง
: TraceID์ SpanID๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ฐ์ ํธ์ถ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ๊ณ ๊ฐ ํธ์ถ์ ์งํ๋ฅผ ์์งํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์๋น์ค ๊ฐ์ ํ๊ท ์๋ต์๊ฐ, ์ฑ๊ณต๋ฅ , ์ค๋ฅ ๋ฐ์๋ฅ ๋ฑ์ ์ถ์ ํ์ฌ ์๋น์ค์ ๊ฑด๊ฐ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค.
4. ๋ถ์ฐ ์์คํ
๋ชจ๋ํฐ๋ง
: Zipkin๊ณผ ๊ฐ์ ๋ถ์ฐ ์ถ์ ์์คํ
๊ณผ ํตํฉํ์ฌ ์ถ์ ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ง์ค์์ผ๋ก ์์งํ๊ณ ์๊ฐํํ ์ ์๋ค.
์ด๋ฅผ ํตํด ์ ์ฒด ์์คํ ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋ณต์กํ ์๋น์ค ๊ฐ์ ์ํธ์์ฉ์ ์ดํดํ ์ ์๋ค.
์ฆ, TraceID์ SpanID๋ ๋ถ์ฐ ์์คํ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ ์ถ์ ํ๊ณ ์ดํดํ๋๋ฐ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์ด๋ค.
์ด๋ฌํ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ์๋น์ค๊ฐ์ ํธ์ถ์ ์ถ์ ํ๊ณ ๋ชจ๋ํฐ๋งํ์ฌ ์์ ์ ์ด๊ณ ์ฑ๋ฅ์ด ์ฐ์ํ ๋ถ์ฐ ์์คํ ์ ๊ตฌ์ถํ ์ ์๋ค.
'๐ฉ๐ปโ๐ป Developer > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์คํ๋ง์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์์กดํ๋ ๊ฒ์? (0) | 2024.03.23 |
---|---|
[Spring] ์คํ๋ง ๋ถํธ์์ auto-configuration์ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ (0) | 2024.03.21 |
[Spring] ์ด๋ ธํ ์ด์ ์ ์ฉ๋ (0) | 2024.03.19 |
[spring boot] Spring Boot ์์ํ๊ธฐ (0) | 2024.03.02 |
[spring] Spring ๊ณผ Spring Boot ์ ์ฐจ์ด (0) | 2024.03.01 |
๋๊ธ