๊ณ„์ธก ๋ฐฉ๋ฒ• ์„ ํƒ

์ด ํŽ˜์ด์ง€์—๋Š” Google Kubernetes Engine(GKE) ๋ฐ Cloud Run๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œGoogle Cloud ํ”Œ๋žซํผ์—์„œ ์•ฑ์„ ๊ณ„์ธกํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์ด ์•„์ง ๊ณ„์ธก๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ Google Cloud๋กœ ์›๊ฒฉ ๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋„๋ก ์•ฑ์„ ๊ณ„์ธกํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•ˆ๋‚ด๋กœ ์ด ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ํŽ˜์ด์ง€์˜ ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์œ ์ผํ•œ ์†”๋ฃจ์…˜์€ ์•„๋‹ˆ๋ฉฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์•ˆ๋‚ด๋Š” Google Cloud ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•˜์„ธ์š”.

๋‹ค์Œ์— ๋Œ€ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”.

๊ณ„์ธก ์˜ˆ์‹œ์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ ์ฝ”๋“œ ์ƒ˜ํ”Œ ์„น์…˜์— ๋‚˜์—ด๋œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

GKE

GKE์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ์€ GKE ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ ํ˜• ๊ถŒ์žฅ์‚ฌํ•ญ
์ธก์ •ํ•ญ๋ชฉ

Google Cloud Managed Service for Prometheus๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ณ„์ธก์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์ 

๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํ•ด๋‹น ์–ธ์–ด์— ๋งž๋Š” OpenTelemetry SDK ๋ฐ OTLP ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. OTLP trace๋ฅผ Google Cloud๋กœ ์ „์†กํ•˜๋„๋ก OpenTelemetry ์ˆ˜์ง‘๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๋กœ๊ทธ

JSON ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ stdout ๋ฐ stderr๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ์•ฑ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ๋ชฉ๋ก์€ ๊ถŒ์žฅ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

GKE๋Š” stdout ๋ฐ stderr์— ๊ธฐ๋ก๋œ ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GKE ๋กœ๊ทธ ์†Œ๊ฐœ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Compute Engine

Compute Engine์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ •๋ณด๋Š” ๊ฐ€์ƒ ๋จธ์‹  ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ ํ˜• ๊ถŒ์žฅ์‚ฌํ•ญ
์ธก์ •ํ•ญ๋ชฉ ๋ฐ trace

๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํ•ด๋‹น ์–ธ์–ด์— ๋งž๋Š” OpenTelemetry SDK ๋ฐ OTLP ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์šด์˜ ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธก์ •ํ•ญ๋ชฉ๊ณผ trace๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด๋ ค๋ฉด OpenTelemetry ํ”„๋กœํ† ์ฝœ(OTLP) ์ธก์ •ํ•ญ๋ชฉ ๋ฐ trace ์ˆ˜์ง‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋˜๋Š” Prometheus ํ˜•์‹ ์ธก์ •ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ปฌ๋ ‰์…˜๋งŒ ๊ตฌ์„ฑํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์šด์˜ ์—์ด์ „ํŠธ Prometheus ์ˆ˜์‹ ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Prometheus ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” OpenTelemetry SDK๋กœ ๊ณ„์ธก๋œ ์ธก์ •ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ

๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. JSON ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ์•ฑ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ๋ชฉ๋ก์€ ๊ถŒ์žฅ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  2. ์šด์˜ ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ˆ˜์‹ ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด๋ ค๋ฉด ๋กœ๊น… ์ˆ˜์‹ ์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud Run

Cloud Run์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ์€ Cloud Run์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ ํ˜• ๊ถŒ์žฅ์‚ฌํ•ญ
์ธก์ •ํ•ญ๋ชฉ ๋ฐ trace

๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํ•ด๋‹น ์–ธ์–ด์— ๋งž๋Š” OpenTelemetry SDK ๋ฐ OTLP ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์ธก์ •ํ•ญ๋ชฉ ๋ฐ trace๋ฅผ ์ˆ˜์ง‘ํ•˜๋„๋ก OpenTelemetry ์‚ฌ์ด๋“œ์นด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด๋ ค๋ฉด OpenTelemetry ์‚ฌ์ด๋“œ์นด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OTLP ์ธก์ •ํ•ญ๋ชฉ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  3. Cloud Run์—์„œ ํ•ญ์ƒ ํ• ๋‹น๋˜๋„๋ก CPU๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. OpenTelemetry ๊ณ„์ธก์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์‹ฑ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๊ณ„์ธก๋œ Cloud Run ์„œ๋น„์Šค๋Š” ํ•ญ์ƒ ํ• ๋‹น๋œ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ CPU ํ• ๋‹น(์„œ๋น„์Šค)์„ ์ฐธ์กฐํ•˜์„ธ์š”..

๋˜๋Š” Prometheus ํ˜•์‹ ์ธก์ •ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ปฌ๋ ‰์…˜๋งŒ ๊ตฌ์„ฑํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Cloud Run์šฉ Prometheus ์‚ฌ์ด๋“œ์นด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Prometheus ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” OpenTelemetry SDK๋กœ ๊ณ„์ธก๋œ ์ธก์ •ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ

JSON ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ stdout ๋ฐ stderr๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ์•ฑ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ๋ชฉ๋ก์€ ๊ถŒ์žฅ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud Run์€ stdout ๋ฐ stderr์— ์ž‘์„ฑ๋œ ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ์ž‘์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud Run ํ•จ์ˆ˜

Cloud Run ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ์€ Cloud Run ํ•จ์ˆ˜ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ ํ˜• ๊ถŒ์žฅ์‚ฌํ•ญ
์ธก์ •ํ•ญ๋ชฉ Cloud Run ํ•จ์ˆ˜์—์„œ๋Š” ์ธก์ •ํ•ญ๋ชฉ ์ง์ ‘ ์“ฐ๊ธฐ๊ฐ€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋กœ๊ทธ ๊ธฐ๋ฐ˜ ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์ถ”์  ์‚ฌ์šฉ ์–ธ์–ด์˜ SDK ๋ฐ ํด๋ผ์šฐ๋“œ trace ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
๋กœ๊ทธ

JSON ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ stdout ๋ฐ stderr๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ์•ฑ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ๋ชฉ๋ก์€ ๊ถŒ์žฅ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud Run ํ•จ์ˆ˜๋Š” stdout ๋ฐ stderr์— ์ž‘์„ฑ๋œ ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Run ํ•จ์ˆ˜ ๋กœ๊ทธ ๋ณด๊ธฐ ๋ฐ ์ž‘์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

App Engine

App Engine์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ์€ App Engine ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ ํ˜• ๊ถŒ์žฅ์‚ฌํ•ญ
์ธก์ •ํ•ญ๋ชฉ ์‚ฌ์šฉ ์–ธ์–ด์˜ SDK ๋ฐ Cloud Monitoring ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
์ถ”์  ์‚ฌ์šฉ ์–ธ์–ด์˜ SDK ๋ฐ ํด๋ผ์šฐ๋“œ trace ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
๋กœ๊ทธ

JSON ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ stdout ๋ฐ stderr๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ์•ฑ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ ๋ชฉ๋ก์€ ๊ถŒ์žฅ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

App Engine์€ stdout ๋ฐ stderr์— ์ž‘์„ฑ๋œ ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋กœ๊ทธ ์ž‘์„ฑ ๋ฐ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ถŒ์žฅ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ

๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๋ ค๋ฉด ์ง๋ ฌํ™”๋œ JSON ๊ฐ์ฒด๋ฅผ stdout, stderr ๋˜๋Š” ํŒŒ์ผ๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Logging ์—์ด์ „ํŠธ๋Š” ํ†ตํ•ฉ ๋˜๋Š” ์„ค์น˜ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํŒŒ์ผ์„ ์Šคํฌ๋ž˜ํ•‘ํ•˜์—ฌ Cloud Logging์„ ์œ„ํ•œ ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ƒ˜ํ”Œ

Google Cloud๋กœ ์›๊ฒฉ ๋ถ„์„์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ณ„์ธกํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ ์ƒ˜ํ”Œ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

OpenTelemetry ์ฐธ์กฐ

์ด ์„น์…˜์—์„œ๋Š” OTLP, ํด๋ผ์šฐ๋“œ, trace, Cloud Monitoring์šฉ ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ์™€ OpenTelemetry SDK์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ์ฐธ๊ณ  ์ž๋ฃŒ:

Go

Java

JavaScript

Python