Datadog ์—ฐ๋™

๐Ÿ“˜

ํ•ตํด์„ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.

Datadog ๊ณต์‹ ์—ฐ๋™์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”Œ๋žœ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Datadog

Datadog์€ SaaS ๊ธฐ๋ฐ˜ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์ธํ”„๋ผ๋ฅผ ์œ„ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ถ„์„ ํ†ตํ•ฉ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„, ์ปจํ…Œ์ด๋„ˆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹ค์‹œ๊ฐ„ ์ง€ํ‘œ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ•ตํด ๋ฐ์ดํ„ฐ์™€ ํ†ตํ•ฉํ•˜์—ฌ ๋ถ„์„ํ•จ์œผ๋กœ์จ ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ์˜ ์ ์ง„์  ์ถœ์‹œ์— ๋”ฐ๋ฅธ ์„œ๋น„์Šค ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

Datadog ์—ฐ๋™

Datadog ์—ฐ๋™์„ ์œ„ํ•ด์„œ๋Š” Datadog์˜ API Key ์ •๋ณด๋ฅผ ํ•ตํด ๋Œ€์‹œ๋ณด๋“œ์— ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Datadog API Key ๋ณต์‚ฌํ•˜๊ธฐ

Datadog์— ์ ‘์†ํ•˜์—ฌ Organization Settings > API Keys ๋ฉ”๋‰ด์—์„œ API Key๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Organization Settings ๋ฉ”๋‰ด๋Š” ์ขŒ์ธก ํ•˜๋‹จ์˜ ๋‚ด ์ด๋ฉ”์ผ ๊ณ„์ •์— ๋งˆ์šฐ์Šค๋ฅผ ํ˜ธ๋ฒ„ํ•˜๋ฉด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋‰ด -> ์„ค์ • -> ํŒŒํŠธ๋„ˆ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ด๋™

Organization Settings > API Keys

ํ•ตํด ๋Œ€์‹œ๋ณด๋“œ์— Datadog API Key ์ž…๋ ฅ

๋ณต์‚ฌํ•œ Datadog API Key๋ฅผ ํ•ตํด ๋Œ€์‹œ๋ณด๋“œ์— ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ์ธก ์ƒ๋‹จ์— ์œ„์น˜ํ•œ ์„ค์ • ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๊ณ , ์™ธ๋ถ€ ์—ฐ๋™ ๋ฉ”๋‰ด์—์„œ Datadog ์—ฐ๋™์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ด๋ฏธ์ง€์˜ Datadog ์—ฐ๋™ํ™”๋ฉด์—์„œ API Key๋ฅผ ์ž…๋ ฅํ•˜๊ณ  '์—ฐ๋™ํ•˜๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์—ฐ๋™ ์„ค์ •์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

ํŒŒํŠธ๋„ˆ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ด๋™

์„ค์ • (์šฐ์ธก ์ƒ๋‹จ GNB์— ์œ„์น˜) > ์™ธ๋ถ€ ์—ฐ๋™

Datadog ์œผ๋กœ ์ „์†กํ•˜๋Š” ํ•ญ๋ชฉ

Datadog ์—ฐ๋™์ด ์™„๋ฃŒ๋˜๋ฉด ์šด์˜ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•œ ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋…ธ์ถœ ์ด๋ฒคํŠธ๋ฅผ ์ „์†กํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ์™ธ์˜ ์ด๋ฒคํŠธ๋„ ์ „์†ก ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์„ค์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ตํด ํŒ€์— ๋ฌธ์˜ ๋ถ€ํƒ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ตฌ๋ถ„๊ธฐ๋ณธ๊ฐ’์„ ํƒ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ
์ด๋ฒคํŠธ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ์ด๋ฒคํŠธ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ, A/B ํ…Œ์ŠคํŠธ, ์›๊ฒฉ๊ตฌ์„ฑ, ์‚ฌ์šฉ์ž ํ–‰๋™ ์ด๋ฒคํŠธ
์„ค์ •๋ณ€๊ฒฝ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ์ถœ์‹œ ๋น„์œจ(Rollout %), ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ์ƒํƒœ(On/Off)-
ํ™˜๊ฒฝ์šด์˜ํ™˜๊ฒฝ์šด์˜ํ™˜๊ฒฝ, ๊ฐœ๋ฐœํ™˜๊ฒฝ

Datadog์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ

Datadog์œผ๋กœ ์ „์†ก๋œ ํ•ตํด ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ ๋“ฑ์˜ ์ด๋ฒคํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ Dashboard๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Datadog์—์„œ ์ˆ˜์ง‘๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฐจํŠธ์™€ ํ•ตํด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ ์ฐจํŠธ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ Dashboard๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ์„œ๋น„์Šค ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„ ์Šคํฌ๋ฆฐ์ƒท ๋‚ด ์œ„์ ฏ ๋ช…์นญ์„ค๋ช…
๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ๋ณ€๊ฒฝ ํšŸ์ˆ˜๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ์ƒํƒœ (On/Off), ์ถœ์‹œ ๋น„์œจ (Rollout %) ํ˜น์€ ํƒ€๊ฒŸํŒ… ์กฐ๊ฑด (Targeting Rule) ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•œ ํšŸ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋ถ„๋ฐฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ํšŸ์ˆ˜๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋ถ„๋ฐฐ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ํšŸ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ๋ณ€๊ฒฝํ•ตํด ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ์ƒํƒœ, ์ถœ์‹œ๋น„์œจ, ํƒ€๊ฒŸํŒ… ์กฐ๊ฑด์„ ๋ณ€๊ฒฝํ•œ ์ด๋ ฅ์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

Datadog์—์„œ ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋ถ„๋ฐฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ํ˜„ํ™ฉ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ

๐Ÿ“˜

Add Widgets > Graphs > Timeseries ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์‹œ์ ์— ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ํ˜ธ์ถœ์ด ์–ด๋””์—์„œ, ์–ผ๋งˆ๋‚˜ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ณ ๊ฐ์ด ์˜ํ–ฅ๋„๋ฅผ ๋ฐ›์•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Metrics > hackle.feature_flag.count ๋ฅผ ์„ ํƒํ•˜๋ฉด ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋ถ„๋ฐฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒํšŸ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์•„๋ž˜์˜ ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ์กฐ๊ฑด์˜ ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋ถ„๋ฐฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • key: ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ํ‚ค (์˜ˆ: 15๋ฒˆ)
  • variation: ๋ถ„๋ฐฐ๊ฒฐ๊ณผ (true/false)
  • decision_reason: ๋ถ„๋ฐฐ์‚ฌ์œ  ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ ๊ฒฐ์ •
  • environment: ํ™˜๊ฒฝ (production/development)
hackle.feature_flag.count

๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ๋ถ„๋ฐฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒํšŸ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ Datadog Widget ์„ค์ • ์˜ˆ์‹œ

Datadog์—์„œ ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ๋ณ€๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ

๐Ÿ“˜

Add Widgets > Graphs > Timeseries ํ˜น์€ List and Streams > List๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์‹œ์ ์— ์–ด๋–ค ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ์˜ Rollout ์กฐ๊ฑด์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด Datadog์—์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์žˆ๋Š” ์š”์†Œ๋“ค๊ณผ์˜ ์ธ๊ณผ๊ด€๊ณ„๋ฅผ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Events > source:hackle ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ•ตํด ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ์˜ ์ƒํƒœ, ์ถœ์‹œ ๋น„์œจ, ํƒ€๊ฒŸํŒ… ์กฐ๊ฑด์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค Event 1๊ฑด์ด Datadog์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. (์˜ˆ: ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ ์ถœ์‹œ๋น„์œจ์„ 0% โ†’ 30%๋กœ ๋ณ€๊ฒฝ)

๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ์กฐ๊ฑด ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” Datadog Widget ์„ค์ • ์˜ˆ์‹œ

๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ๋ณ€๊ฒฝ ํšŸ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Datadog Widget (Graph > Timeseries) ์„ค์ • ์˜ˆ์‹œ

๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ฐ€, ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ํŠน์ • ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ์˜ Rollout ์กฐ๊ฑด์„ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด List ํ˜•ํƒœ์˜ Widget์„ ์ƒ์„ฑํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ๋ณ€๊ฒฝ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Datadog Widget (List and Streams > List) ์„ค์ • ์˜ˆ์‹œ

๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ๋ณ€๊ฒฝ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Datadog Widget (List and Streams > List) ์„ค์ • ์˜ˆ์‹œ

Reporting format size ๋ฅผ Large (full event) ๋กœ ์„ ํƒํ•˜๋ฉด ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด Widget์—์„œ ๊ธฐ๋Šฅํ”Œ๋ž˜๊ทธ Rollout ์„ค์ • ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ƒ์„ธํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.