[DataDog] Continuous Profiler

[์›๋ณธ ๋งํฌ]

DataDog์€ ์ง€์†์  ํ”„๋กœํŒŒ์ผ๋ง์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.
๊ธฐ๋ณธ ์—์ด์ „ํŠธ ์„ธํŒ…๋งŒ ํ•ด๋„ ํ”„๋กœํŒŒ์ผ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์ „์†กํ•ด์„œ ์Œ“์•„์ค€๋‹ค.




์—์ด์ „ํŠธ ์ง€์› ์ˆ˜์ค€

๋ฉ”์ด์ €ํ•œ ์–ธ์–ด๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.
Go, Java, Node.js, PHP, Python, Ruby, C#, C/C++, Rust ์ •๋„๋‹ค. (Rust๋Š” ๊ทธ๋ ‡๊ฒŒ ์ž˜ ์ง€์›๋˜์ง„ ์•Š์Œ)





์—์ด์ „ํŠธ ์„ธํŒ…ํ•˜๊ธฐ

๋ฌธ์„œ์—์„œ ๊ฐ€์ด๋“œํ•˜๋Š”๋Œ€๋กœ ์„œ๋ฒ„์— ์„ธํŒ… ์ฝ”๋“œ๋ฅผ ์ ๋‹นํžˆ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.
์ „์šฉ ํŒจํ‚ค์ง€๋ฅผ ์จ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…์‹œ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ Go์˜ ๊ฒฝ์šฐ๋‹ค.

์–ธ์–ด๋ณ„ ์ƒ์„ธํ•œ ์„ธํŒ… ๋ฐฉ๋ฒ•์€ ๋ฌธ์„œ ์ฐธ์กฐ: https://docs.datadoghq.com/ko/profiler/enabling/java?tab=linux




APM์—์„œ ๊ด€์ธกํ•˜๊ธฐ

์„œ๋น„์Šค์˜ ํ”„๋กœํŒŒ์ผ๋ง ํƒญ์œผ๋กœ ์ง„์ž…ํ•˜๋ฉด, CPU/Memory ๋“ฑ์˜ ์‹ค์‹œ๊ฐ„ ํ”„๋กœํŒŒ์ผ๋ง ์ •๋ณด๋ฅผ ๋ฐ”๋กœ ๊ด€์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ณ„ ๋ณด๋“œ์— Dive ๋ฒ„ํŠผ์œผ๋กœ ์ง„์ž…ํ•˜๋ฉด, ๋”์šฑ ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. flamegraph ๊ฐ™์€ ์Šคํƒ€์ผ๋กœ, ํ•จ์ˆ˜ ๋‹จ์œ„์˜ ์‚ฌ์šฉ๋Ÿ‰ ์ง‘๊ณ„๋ฅผ ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ฅผ ์‘์šฉํ•˜๋ฉด ์„ฑ๋Šฅ ์ถ”์ /์ตœ์ ํ™”๋ฅผ ๋”์šฑ ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.




TradeOff

์ด๊ฒŒ ์ˆ˜์ง‘์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ ์†์‹ค์ด ์•„์˜ˆ ์—†๋Š”๊ฑด ์•„๋‹ˆ๋‹ค. ์•„๋ฌดํŠผ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ๋Ÿ‰์„ ์ˆ˜์ง‘ํ•˜๊ณ , ๊ทธ๊ฑธ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”์ŠคํŠธ๊ฐ€ ์žˆ๊ธด ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋Œ€์ฒด๋กœ ์„œ๋ฒ„ ์„ฑ๋Šฅ์˜ 1-5% ์ •๋„๋ฅผ ์žก์•„๋จน์„ ๋ฟ์ด๊ณ , ์ด๋ฅผ ํ†ตํ•ด์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ์ ์ธ ์ด๋“์ด ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์›น์•ฑ์—๋Š” ๊ฐ์ˆ˜ํ• ๋งŒํ•˜๋‹ค.



์ฐธ์กฐ
https://docs.datadoghq.com/ko/profiler/