๐Ÿ™ Chaos Engineering์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์‹œ๋„, ์žฅ์•  ์ฃผ์ž…๊ณผ ์„ฑ๋Šฅ ํ‰๊ฐ€ ํˆด ; 'Krkn' ์†Œ๊ฐœ - CNCF Sandbox

Chaos Engineering ๋ถ„์•ผ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Gremlin(์ƒ์šฉ)๊ณผ LitmusChaos(CNCF)์™€ ๋‹ฌ๋ฆฌ, Krkn์€ ๋‹จ์ˆœ ์žฅ์•  ์ฃผ์ž…์„ ๋„˜์–ด Platform ยท Cluster ์ „๋ฐ˜์˜ ์„ฑ๋Šฅ๊ณผ ๋ณต์›๋ ฅ ๊ฐ•๋„๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” Python ๊ธฐ๋ฐ˜ ๊ณ ๋‚œ๋„ Chaos Testing Tool, :gear:Krkn์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

Red Hat(OpenShift) Engineering Team ์ฃผ๋„๋กœ ์‹œ์ž‘๋˜์—ฌ, ํ˜„์žฌ :cloud: Cloud Native Computing Foundation Sandbox Project์ด๋ฉฐ, :gear:ํŠนํžˆ ๊ณ ๋‚œ๋„์˜ Testing์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— Platform Engineering์— ์ข€ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Opensource์ž…๋‹ˆ๋‹ค.

์ด์™€ ์œ ์‚ฌํ•œ ๋„๊ตฌ๋กœ๋Š” Gremlin(์ƒ์šฉ), LitmusChaos(์˜คํ”ˆ์†Œ์Šค)์™€๋Š” ๊ธฐ๋Šฅ, ๋ถ„์•ผ ๋“ฑ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ง• Gremlin LitmusChaos Krkn (Kraken)
์œ ํ˜• ์ƒ์šฉ ์†Œํ”„ํŠธ์›จ์–ด (SaaS) ์˜คํ”ˆ์†Œ์Šค (CNCF Incubating) ์˜คํ”ˆ์†Œ์Šค (CNCF Sandbox)
์ฃผ์š” ๋Œ€์ƒ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ, ๋น„์ˆ™๋ จ ์กฐ์ง DevOps, SRE, K8s ๊ฐœ๋ฐœ์ž ํ”Œ๋žซํผ ์—”์ง€๋‹ˆ์–ด, ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜์ž
ํ•ต์‹ฌ ๊ฐ•์  ์•ˆ์ „์„ฑ(Safety), ์ง๊ด€์ ์ธ UI, ๊ฐ„ํŽธํ•œ ์„ค์น˜, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ ์ง€์›(Non-K8s ํฌํ•จ) ChaosHub(๋‹ค์–‘ํ•œ ์‹คํ—˜), K8s Native(CRD), ์•„๋ฅด๊ณ (Argo) ๋“ฑ ์›Œํฌํ”Œ๋กœ์šฐ ํ†ตํ•ฉ ์šฉ์ด ํด๋Ÿฌ์Šคํ„ฐ ์ธํ”„๋ผ ํ…Œ์ŠคํŠธ, ์„ฑ๋Šฅ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ณ‘ํ–‰, Cerberus(๋ชจ๋‹ˆํ„ฐ๋ง) ์—ฐ๋™
์•„ํ‚คํ…์ฒ˜ ์—์ด์ „ํŠธ ์„ค์น˜ ๋ฐฉ์‹ (Control Plane์€ SaaS) Operator ํŒจํ„ด (K8s CRD ๊ธฐ๋ฐ˜) ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜ ์ž๋™ํ™” ํˆด (CI/CD ์นœํ™”์ )
๋‚œ์ด๋„ ํ•˜ (๋งค์šฐ ์‰ฌ์›€) ์ค‘ (K8s ์ง€์‹ ํ•„์š”) ์ค‘/์ƒ (์„ค์ • ํŒŒ์ผ ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค ์ดํ•ด ํ•„์š”)
๋น„์šฉ ์œ ๋ฃŒ (์ƒ๋‹นํžˆ ๊ณ ๊ฐ€) ๋ฌด๋ฃŒ (Harness์—์„œ ์ƒ์šฉ ์ง€์›) ๋ฌด๋ฃŒ
์ฃผ์š” ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฆฌ์†Œ์Šค ๊ณ ๊ฐˆ, ๋„คํŠธ์›Œํฌ ์ง€์—ฐ, ์…ง๋‹ค์šด (์ •ํ˜•ํ™”๋จ) ํŒŒ๋“œ ์‚ญ์ œ, ๋…ธ๋“œ ๋“œ๋ ˆ์ธ, ํด๋ผ์šฐ๋“œ API ์žฅ์•  ๋“ฑ (๋งค์šฐ ๋‹ค์–‘) Etcd ์žฅ์• , API ์„œ๋ฒ„ ๋ถ€ํ•˜, Zone Outage, ์ „์› ์ฐจ๋‹จ ์‹œ๋ฎฌ๋ ˆ์ด์…˜

:octopus: Litmus๊ฐ€ "์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ๋“œ ์ฃฝ์ด๊ธฐ"์— ๊ฐ•ํ•˜๋‹ค๋ฉด, Krkn์€ โ€œ๋…ธ๋“œ ์ „์ฒด ๋‚ ๋ฆฌ๊ธฐโ€, โ€œEtcd ์ฃฝ์ด๊ธฐโ€, โ€œ์ „์ฒด ๊ฐ€์šฉ ์˜์—ญ(Zone) ์ฐจ๋‹จํ•˜๊ธฐโ€ ๊ฐ™์€ ๋ฌด๊ฑฐ์šด ์ธํ”„๋ผ ๋ ˆ๋ฒจ ํ…Œ์ŠคํŠธ์— ๋” ๊ฐ•์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Cerberus ์—ฐ๋™: ๋‹จ์ˆœํžˆ ์žฅ์• ๋ฅผ ์ฃผ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, Cerberus๋ผ๋Š” ๋„๊ตฌ์™€ ํ•จ๊ป˜ ๋Œ์•„๊ฐ€๋ฉฐ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „๋ฐ˜์ ์ธ ๊ฑด๊ฐ• ์ƒํƒœ(Health)์™€ ์„ฑ๋Šฅ ์ง€ํ‘œ ๋ณ€ํ™”๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ˆœ ์žฅ์•  ์ฃผ์ž…์„ ๋„˜์–ด ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํ‚น ์„ฑ๊ฒฉ์ด ์„ž์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.

[์ถœ์ฒ˜] Krkn | CNCF

์นด์˜ค์Šค ํ…Œ์ŠคํŒ… ๊ฐ€์ด๋“œ (Chaos Testing Guide)

์žฅ์•  ์กฐ๊ฑด ํ•˜์—์„œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์šฉ ์นด์˜ค์Šค ๋ฐ ๋ฆฌ์งˆ๋ฆฌ์–ธ์Šค(ํšŒ๋ณตํƒ„๋ ฅ์„ฑ) ํ…Œ์ŠคํŒ… ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. CNCF ์ƒŒ๋“œ๋ฐ•์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์†Œ๊ฐœ (Introduction)

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ•˜๊ณ  ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž˜๋ชป๋œ ๊ฐ€์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋„คํŠธ์›Œํฌ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์ง€์—ฐ ์‹œ๊ฐ„(Latency)์€ 0์ด๋‹ค.
  3. ๋Œ€์—ญํญ์€ ๋ฌดํ•œํ•˜๋‹ค.
  4. ๋„คํŠธ์›Œํฌ๋Š” ์•ˆ์ „ํ•˜๋‹ค.
  5. ํ† ํด๋กœ์ง€๋Š” ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  6. ๋„คํŠธ์›Œํฌ๋Š” ๋™์งˆ์ ์ด๋‹ค.
  7. ์ŠคํŒŒ์ดํฌ ์—†์ด ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์ด ์ผ์ •ํ•˜๋‹ค.
  8. ๋ชจ๋“  ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋Š” ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ณผ๊ฑฐ์—๋Š” ์ด๋Ÿฌํ•œ ๊ฐ€์ •๋“ค๋กœ ์ธํ•ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์ˆ˜๋งŽ์€ ์ค‘๋‹จ ์‚ฌ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ฑฐ๋‚˜ ๊ณ ๊ฐ์ด ์ ‘์†ํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์–ด, ์„œ๋น„์Šค ์ˆ˜์ค€ ๊ณ„์•ฝ(SLA) ๊ฐ€๋™ ์‹œ๊ฐ„ ์•ฝ์†์„ ์ง€ํ‚ค์ง€ ๋ชปํ•˜๊ณ  ์ˆ˜์ต ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋ฉฐ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ์‹ ๋ขฐ๋„ ํ•˜๋ฝ์œผ๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ ์—ฌ๊ธฐ์„œ **์นด์˜ค์Šค ํ…Œ์ŠคํŒ…(Chaos testing)**์ด ๊ฐ€์น˜๋ฅผ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.


ํ…Œ์ŠคํŠธ ์ „๋žต ๋ฐ ๋ฐฉ๋ฒ•๋ก  (Test Strategies and Methodology)

ํ”„๋กœ๋•์…˜์—์„œ์˜ ์žฅ์• ๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์ƒํƒœ์— ๋Œ€ํ•œ ์œ„ํ—˜์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ „๋žต๊ณผ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ณ ๋ คํ•˜์„ธ์š”.

์ˆ˜๋™์ (Reactive) ๋Œ€์‘ vs ๋Šฅ๋™์ (Proactive) ๋Œ€์‘ ์šฐ๋ฆฌ๋Š” ํ†ต์ œ๋œ ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํ…Œ์ŠคํŠธ ์ œํ’ˆ๊ตฐ(๋‹จ์œ„, ํ†ตํ•ฉ ๋ฐ ์—”๋“œ ํˆฌ ์—”๋“œ)์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์นด์˜ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง ์ „๋žต์„ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ์„œ๋น„์Šค ์ €ํ•˜์˜ ์ž ์žฌ์  ์›์ธ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์„ ๊ฐ•ํ™”ํ•ด์•ผ ํ•  ์˜์—ญ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด์—์„œ ์‹œ์Šคํ…œ์˜ ๋™์ž‘์„ ์ดํ•ดํ•ด์•ผ ํ•˜๋ฉฐ, ๋‹ค์šดํƒ€์ž„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์žฅ์• ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋Ÿฌ์Šคํ„ฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์กฐ๊ฑด์—์„œ์˜ ์‹œ์Šคํ…œ ํšŒ๋ณตํƒ„๋ ฅ์„ฑ ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ์ ์‘์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉด์„œ ์ค‘๋‹จ์„ ์œ ๋ฐœํ•˜๋„๋ก ์„ค๊ณ„๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ •์ƒ ์ƒํƒœ(Steady state) ๋ฐ ์ง€ํ‘œ ์„ค์ •: ์•ˆ์ •์ ์ธ ์กฐ๊ฑด์—์„œ์˜ ๋™์ž‘๊ณผ ์„ฑ๋Šฅ์„ ์ดํ•ดํ•˜๊ณ  ์‹œ์Šคํ…œ ๋™์ž‘์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ง€ํ‘œ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์นด์˜ค์Šค๋ฅผ ์ฃผ์ž…ํ•˜๊ธฐ ์ „์— ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ค‘ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ƒํƒœ ๋ฐ ์ง€ํ‘œ ๋ถ„์„.
  3. ์นด์˜ค์Šค ์ด์ „์˜ ์•ˆ์ •์ ์ธ ์กฐ๊ฑด๊ณผ ์ฃผ์š” ์ง€ํ‘œ ๋ฐ ์„œ๋น„์Šค ์ˆ˜์ค€ ๋ชฉํ‘œ(SLO)๋ฅผ ๋น„๊ตํ•˜์—ฌ ํšŒ๋ณตํƒ„๋ ฅ์„ฑ๊ณผ ์„ฑ๋Šฅ์ด ๋ถ€์กฑํ•œ ์˜์—ญ์„ ๊ฐœ์„ . ์˜ˆ: API ์„œ๋ฒ„ ์ง€์—ฐ ์‹œ๊ฐ„ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ€๋™ ์‹œ๊ฐ„์„ ํ‰๊ฐ€ํ•˜์—ฌ ํ•ต์‹ฌ ์„ฑ๊ณผ ์ง€ํ‘œ(KPI) ๋ฐ ์„œ๋น„์Šค ์ˆ˜์ค€ ์ง€ํ‘œ(SLI)๊ฐ€ ์—ฌ์ „ํžˆ ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ํ•œ๋„ ๋‚ด์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฒ” ์‚ฌ๋ก€ (Best Practices)

ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•๋ก ์„ ์ดํ•ดํ–ˆ์œผ๋‹ˆ, ์ด์ œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋žซํผ์—๋Š” ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์–ด์•ผ ํ•˜๊ณ  ์ตœ์ƒ์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํด๋Ÿฌ์Šคํ„ฐ ์›Œํฌ๋กœ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ ์ ˆํ•œ ์‹ฌ๊ฐ๋„์˜ ๊ฒฝ๊ณ (Alerts)๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์‹œ์ ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•˜๋ฉฐ, ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์กฐ์‚ฌ ๋…ธ๋ ฅ์— ์ง‘์ค‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‘ํ•˜๋Š” SRE ๋˜๋Š” ์šด์˜ ๋ฆฌ์†Œ์Šค์˜ ํ‰๊ท  ๋ณต๊ตฌ ์‹œ๊ฐ„(MTTR)์„ ์ค„์ด๋ ค๋ฉด ๊ฒฝ๊ณ ์— ์ ์ ˆํ•œ ์‹ฌ๊ฐ๋„, ์„ค๋ช…, ์•Œ๋ฆผ ์ •์ฑ…, ์—์Šค์ปฌ๋ ˆ์ด์…˜ ์ •์ฑ… ๋ฐ SOP๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ฒฝ๊ณ  ์ผ๊ด€์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋งํฌ ์ฐธ์กฐ)
  • ์„ฑ๋Šฅ ์˜ํ–ฅ ์ตœ์†Œํ™” - ๋„คํŠธ์›Œํฌ, CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ, ์ฒ˜๋ฆฌ๋Ÿ‰ ๋“ฑ ์‹œ์Šคํ…œ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ค‘๋‹จ ์ค‘์— ์„ฑ๋Šฅ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋…์ ํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ, ์ฒ˜๋ฆฌ๋Ÿ‰, ๋„คํŠธ์›Œํฌ ๋“ฑ์˜ ์ธก๋ฉด์—์„œ ์ด๋ฅผ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ ์Šค๋กœํ‹€๋ง ๋ฐ OOM(Out of Memory) ๊ฐ•์ œ ์ข…๋ฃŒ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ CPU/๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์„ค์ • ๋…ธ๋“œ์—์„œ ๋ฆฌ์†Œ์Šค(CPU/๋ฉ”๋ชจ๋ฆฌ)๋ฅผ ๋…์ ํ•˜๋Š” ๋ถˆ๋Ÿ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ €ํ•˜ ๋˜๋Š” OOM ๊ฐ•์ œ ์ข…๋ฃŒ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. kube-scheduler๊ฐ€ ์˜ˆ์ƒ ์ˆ˜์ค€์—์„œ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ˆ์•ฝ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์‹œ์Šคํ…œ์— ์˜์กดํ•˜๋Š” ์„œ๋น„์Šค๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐ ๋‹ค์šดํƒ€์ž„์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์žฅ์• ๋ฅผ ์šฐ์•„ํ•˜๊ฒŒ(gracefully) ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์ ์ ˆํ•œ ํƒ€์ž„์•„์›ƒ). ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋ฐฐํฌ๋œ ์„œ๋น„์Šค๋Š” ์„œ๋กœ ์กฐ์ •ํ•˜๋ฉฐ ์™ธ๋ถ€ ์ข…์†์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ(deployment), ํŒŒ๋“œ(pod) ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌ๋œ ๊ฐ ์„œ๋น„์Šค๋Š” ์ ์ ˆํ•œ ํƒ€์ž„์•„์›ƒ, ํด๋ฐฑ(fallback) ๋กœ์ง ๋“ฑ์ด ์—†์–ด ์ถฉ๋Œํ•˜๋Š” ๋Œ€์‹  ๋‹ค๋ฅธ ์ข…์† ์„œ๋น„์Šค์˜ ๋‹ค์šดํƒ€์ž„์„ ์šฐ์•„ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠนํžˆ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํฌ๊ณ  ๋ฐ€์ง‘๋œ ๊ฒฝ์šฐ ์—ฐ์‡„ ์žฅ์• (cascading failures)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ๋…ธ๋“œ ์‚ฌ์ด์ง• ํ”Œ๋žซํผ์€ ์นด์˜ค์Šค ์ด๋ฒคํŠธ ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ ๊ธ‰์ฆ์„ ๊ณ ๋ คํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”์ธ ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ค์šด๋˜๋ฉด ๋‹ค๋ฅธ ๋‘ ๋ฉ”์ธ ๋…ธ๋“œ๊ฐ€ ๋ถ€ํ•˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์€ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ(API ์„œ๋ฒ„, Etcd, ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ ์Šค์ผ€์ค„๋Ÿฌ)์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€ํ•˜ ๋˜๋Š” ์‹คํ–‰ ์ค‘์ธ ๊ฐ์ฒด ์ˆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋™์ž‘์„ ์ดํ•ดํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ”Œ๋žซํผ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ด ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋‹ค์šด์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์—ฐ์‡„ ์žฅ์• ๋ฅผ ๊ฒช์ง€ ์•Š๊ณ  ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ด๋ฒคํŠธ ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์žฅ์• ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ๋…ธ๋“œ ์‚ฌ์ด์ง• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ๋“œ๋Š” ์ถฉ๋Œ ํ›„ ์žฌ์ดˆ๊ธฐํ™” ์ค‘์— ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ๋•Œ ์ด๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค(Prometheus)์™€ ๊ฐ™์€ ๋ชจ๋‹ˆํ„ฐ๋ง ์†”๋ฃจ์…˜์€ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ WAL(Write Ahead Log)์„ ์žฌ์ƒํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๋™์ž‘์„ ์ดํ•ดํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ”Œ๋žซํผ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ฒช๊ฑฐ๋‚˜ ๋…ธ๋“œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋…์ ํ•˜์—ฌ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์‹œ์Šคํ…œ ํŒŒ๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ด๋ฒคํŠธ ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์†Œํ•œ์˜ ์ดˆ๊ธฐํ™” ์‹œ๊ฐ„ ๋ฐ ๋น ๋ฅธ ๋ณต๊ตฌ ๋กœ์ง ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ์‹œํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์žฅ์• ๋ฅผ ์ธ์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ ๊ตฌ์„ฑ์ธ ๊ฒฝ์šฐ ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์„ ์—ฐ์žฅํ•˜๊ฑฐ๋‚˜ ๋ณต์ œ๋ณธ์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ดˆ๊ธฐํ™” ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์žฅ์•  ์›์ธ์€ ์‹คํ–‰ ์ค‘์ธ ์ธํ”„๋ผ ๋ฌธ์ œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์žฅ์•  ๋˜๋Š” ์ข…์†๋œ ์„œ๋น„์Šค ์žฅ์• ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ ๊ฐ€์šฉ์„ฑ ๋ฐฐํฌ ์ „๋žต ์‚ฌ์šฉ์ž/์‹œ์Šคํ…œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ์ค‘๋‹จ์—์„œ ์‚ด์•„๋‚จ์œผ๋ ค๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ€์šฉ์„ฑ ์˜์—ญ(AZ)์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ๋ณต์ œ๋ณธ(์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๋ชจ๋‘)์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์‹คํŒจ ์ง€์ (SPOF)์„ ํ”ผํ•˜์‹ญ์‹œ์˜ค.
  • ์˜๊ตฌ ์ €์žฅ์†Œ(Persistent Storage)๋กœ ๋ฐฑ์—… ์‹œ์Šคํ…œ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜๊ตฌ ์ €์žฅ์†Œ๋กœ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ, ํŒŒ๋“œ ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์žฅ์•  ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์ง€๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๊ฑฐ๋‚˜ ์ƒํƒœ ์ €์žฅ(stateful) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ ๊ฒฝ์šฐ ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • CDN์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ๋กœ์˜ ํด๋ฐฑ ๊ฒฝ๋กœ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: Google Search ๊ฒฝ์šฐ Akamai). ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ(CDN)๋Š” ์ด๋ฏธ์ง€, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ, CSS์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฌด๊ฑฐ์šด ๋ฆฌ์†Œ์Šค๋ฅผ ํƒ€์‚ฌ์— ์˜คํ”„๋กœ๋“œํ•˜๋Š” ๊ฒƒ์€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ํŠธ๋ž˜ํ”ฝ๊ณผ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋กœ ์ธํ•ด CDN์€ ์ด๋ฅผ ์˜์กดํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ์‹คํŒจ ์ง€์ ์ด ๋ฉ๋‹ˆ๋‹ค. CDN์ด ์‹คํŒจํ•˜๋ฉด ๊ณ ๊ฐ๋„ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žฅ์• ์— ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ๊ณผ CDN ๊ฐ„์˜ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•ด ๋ณด์„ธ์š”. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์žฅ์• ์™€ ๊ด€๊ณ„์—†์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์ธก ์ง€์—ฐ ์‹œ๊ฐ„์ด ์žˆ์„ ๋•Œ ์„ฑ๋Šฅ๊ณผ ์‚ฌ์šฉ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ ์บ์‹ฑ ๋ฐ CDN์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๋‚˜ ๊ธฐ๊ณ„๊ฐ€ ๋ฌด์ œํ•œ ๋Œ€์—ญํญ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ง€๋ฆฌ์  ์œ„์น˜์— ๋”ฐ๋ผ ์ œํ•œ๋œ ๋Œ€์—ญํญ, ์Šค๋กœํ‹€๋ง ๋˜๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ API์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ API ํ˜ธ์ถœ ์‚ฌ์ด์— ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ฃผ์ž…ํ•˜์—ฌ ๋™์ž‘์„ ์ดํ•ดํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ CDN์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ HTTP ๋Œ€์‹  HTTP/2 ๋˜๋Š” HTTP/3๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์„ ์„ ํƒํ•˜๋Š” ๋“ฑ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘์š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ์ค‘๋‹จ ์˜ˆ์‚ฐ(Disruption Budgets)์ด ํ™œ์„ฑํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ํŒŒ๋“œ ์ค‘๋‹จ ์˜ˆ์‚ฐ(Pod Disruption Budget)์„ ์„ค์ •ํ•˜์—ฌ ์ค‘๋‹จ ์ค‘์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณดํ˜ธํ•˜๊ณ  ๋‹ค์šดํƒ€์ž„์„ ๋ฐฉ์ง€ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด etcd, zookeeper ๋˜๋Š” ์œ ์‚ฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฟผ๋Ÿผ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ 2๊ฐœ์˜ ๋ณต์ œ๋ณธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” PDB maxUnavailable์„ 1๋กœ ์„ค์ •ํ•˜์—ฌ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„๊ตฌ (Tooling)

๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด์•˜์œผ๋‹ˆ, ์ด ์„น์…˜์—์„œ๋Š” ์นด์˜ค์Šค ํ…Œ์ŠคํŒ… ํ”„๋ ˆ์ž„์›Œํฌ์ธ **Kraken(Krkn)**์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํšŒ๋ณตํƒ„๋ ฅ์„ฑ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์„œ๋น„์Šค๊ฐ€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์›Œํฌํ”Œ๋กœ์šฐ (Workflow)

Kraken์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ดํ•ดํ•ด ๋ด…์‹œ๋‹ค.

  1. ์‚ฌ์šฉ์ž๋Š” kubeconfig๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ Kraken์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํ˜ธ์ŠคํŒ…๋œ ํ”Œ๋žซํผ๊ณผ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(oc/kubectl API ๋˜๋Š” ํด๋ผ์šฐ๋“œ API ์‚ฌ์šฉ).
  2. Kraken์˜ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ • ์นด์˜ค์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  3. (์„ ํƒ ์‚ฌํ•ญ) Cerberus์™€ ํ†ต์‹ ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „๋ฐ˜์ ์ธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” go/no-go ์‹ ํ˜ธ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  4. (์„ ํƒ ์‚ฌํ•ญ) ๋ฉ”ํŠธ๋ฆญ ํ”„๋กœํ•„์— ์ฃผ์–ด์ง„ promql ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ Prometheus์—์„œ ์ง€ํ‘œ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๊ตฌ์„ฑ๋œ Elasticsearch์— ์žฅ๊ธฐ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  5. (์„ ํƒ ์‚ฌํ•ญ) ๊ฒฝ๊ณ  ํ”„๋กœํ•„์— ์ง€์ •๋œ promql ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ชจ๋“  ๊ฒƒ์„ ์ง‘๊ณ„ํ•˜์—ฌ ํ•ฉ๊ฒฉ/๋ถˆํ•ฉ๊ฒฉ(pass/fail), ์ฆ‰ 0 ๋˜๋Š” 1๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘, Cerberus ๋ฐ ๋ฉ”ํŠธ๋ฆญ ํ‰๊ฐ€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ์„น์…˜์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๋ณต๊ตฌ ํ™•์ธ, ์ง€ํ‘œ ํ‰๊ฐ€ ๋ฐ ํ•ฉ๊ฒฉ/๋ถˆํ•ฉ๊ฒฉ ๊ธฐ์ค€

๋Œ€๋ถ€๋ถ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—๋Š” ๋Œ€์ƒ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ง€์ •๋œ ์‹œ๊ฐ„ ํ›„์— ์žฅ์• ๋กœ๋ถ€ํ„ฐ ๋ณต๊ตฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‚ด์žฅ ๊ฒ€์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠน์ • ์žฅ์• ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์นด์˜ค์Šค ์ดํ›„ ์‹œ์Šคํ…œ/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ „์ฒด์ ์œผ๋กœ ๊ฑด๊ฐ•ํ•œ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด๋•Œ Cerberus๊ฐ€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์ธ Cerberus๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ์‹ ํ˜ธ๋ฅผ ์†Œ๋น„ํ•˜๊ณ  ๊ทธ ์‹ ํ˜ธ์— ๋”ฐ๋ผ ์นด์˜ค์Šค๋ฅผ ๊ณ„์† ์‹คํ–‰ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ณต๊ตฌ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ ํ™•์ธ ์™ธ์—๋„ ์ง€์—ฐ ์‹œ๊ฐ„, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ ๊ธ‰์ฆ, ์ฒ˜๋ฆฌ๋Ÿ‰, etcd ์ƒํƒœ(๋””์Šคํฌ fsync, ๋ฆฌ๋” ์„ ์ถœ ๋“ฑ)์™€ ๊ฐ™์€ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ๋˜‘๊ฐ™์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด Kraken์€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด Prometheus์—์„œ promql ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๊ณ  ๊ฐ ์ฟผ๋ฆฌ์— ์„ค์ •๋œ ์‹ฌ๊ฐ๋„์— ๋”ฐ๋ผ ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ 0 ๋˜๋Š” 1๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Kraken์˜ ์ „๋ฐ˜์ ์ธ ํ•ฉ๊ฒฉ ๋˜๋Š” ๋ถˆํ•ฉ๊ฒฉ์€ ํŠน์ • ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋ณต๊ตฌ(ํŠน์ • ์‹œ๊ฐ„ ๋‚ด), ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๋Š” Cerberus ์ƒํƒœ ์‹ ํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด Prometheus์˜ ์ง€ํ‘œ ํ‰๊ฐ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.


์‹œ๋‚˜๋ฆฌ์˜ค (Scenarios)

Kraken-hub(Kraken์„ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ์‹ผ ๊ฒฝ๋Ÿ‰ ๋ž˜ํผ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์นด์˜ค์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ podman์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ˆ๋ฉฐ ํŽธ์ง‘ํ•  ํ•„์š”๊ฐ€ ์—†์–ด CI ํ”„๋ ˆ์ž„์›Œํฌ ํ†ตํ•ฉ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํŒŒ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค (Pod Scenarios): ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฐ ํŒŒ๋“œ๋กœ ๋ฐฐํฌ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ค‘๋‹จ์‹œํ‚ต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐ€์šฉ์„ฑ, ์ดˆ๊ธฐํ™” ํƒ€์ด๋ฐ ๋ฐ ๋ณต๊ตฌ ์ƒํƒœ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์‹œ๋‚˜๋ฆฌ์˜ค (Container Scenarios): ํŒŒ๋“œ์˜ ์ผ๋ถ€๋กœ ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํŠน์ • kill ์‹ ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋‹จ์‹œํ‚ต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ํ”„๋กœ๊ทธ๋žจ/ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ(๋ฉˆ์ถค, ์ผ์‹œ ์ค‘์ง€, ๊ฐ•์ œ ์ข…๋ฃŒ ๋“ฑ)๋  ๋•Œ์˜ ์˜ํ–ฅ๊ณผ ๋ณต๊ตฌ ํƒ€์ด๋ฐ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ๋…ธ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค (Node Scenarios): ํด๋ผ์šฐ๋“œ API์™€ ํ†ต์‹ ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ์ธํ”„๋ผ์˜ ์ผ๋ถ€์ธ ๋…ธ๋“œ๋ฅผ ์ค‘๋‹จ์‹œํ‚ต๋‹ˆ๋‹ค. AWS, Azure, GCP, OpenStack, Baremetal์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. (๋…ธ๋“œ ์ข…๋ฃŒ, ํฌํฌ ํญํƒ„, ๋…ธ๋“œ ์ค‘์ง€, kubelet ์ถฉ๋Œ ๋“ฑ)
  • ์˜์—ญ ์ค‘๋‹จ (Zone Outages): ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์˜ ํŠน์ • ๋ฆฌ์ „ ๋‚ด ๊ฐ€์šฉ์„ฑ ์˜์—ญ(AZ)์˜ ์ค‘๋‹จ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ACL์„ ์กฐ์ •ํ•˜์—ฌ ํ•ด๋‹น ์˜์—ญ์˜ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์ธ๋ฐ”์šด๋“œ/์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ์›Œ์ปค ๋…ธ๋“œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. (ํ˜„์žฌ AWS๋งŒ ์ง€์›)
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ค‘๋‹จ (Application Outages): ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ๋ผ๋ฒจ์ด ์ผ์น˜ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠธ๋ž˜ํ”ฝ(Ingress/Egress)์„ ์ฐจ๋‹จํ•˜์—ฌ, ๋‹ค์šดํƒ€์ž„ ๋™์•ˆ ํ•ด๋‹น ์„œ๋น„์Šค ๋˜๋Š” ์˜์กด ์„œ๋น„์Šค์˜ ๋™์ž‘์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • ์ „๋ ฅ ์ค‘๋‹จ (Power Outages): ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ข…๋ฃŒํ•œ ๋‹ค์Œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ „๋ ฅ ์ค‘๋‹จ์„ ๋ชจ๋ฐฉํ•ฉ๋‹ˆ๋‹ค. ๋น„์šฉ ์ ˆ๊ฐ์„ ์œ„ํ•ด ํŠน์ • ์‹œ๊ฐ„์— ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฆฌ์†Œ์Šค ํญ์ฃผ (Resource Hog): ๋Œ€์ƒ ๋…ธ๋“œ์˜ CPU, ๋ฉ”๋ชจ๋ฆฌ, IO๋ฅผ ํญ์ฃผ(Hog)์‹œํ‚ต๋‹ˆ๋‹ค. ๋ถˆ๋Ÿ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ธํ•ด ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ค‘๋‹จ๋˜๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์ด ์Šค๋กœํ‹€๋ง๋˜์ง€ ์•Š๋„๋ก ์˜ˆ์•ฝ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„ ์™œ๊ณก (Time Skewing): ํŠน์ • ํŒŒ๋“œ/๋…ธ๋“œ์˜ ์‹œ์Šคํ…œ ์‹œ๊ฐ„ ๋ฐ/๋˜๋Š” ๋‚ ์งœ๋ฅผ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด ์Šค์ผ€์ค„๋ง์ด ๊ณ„์† ์ž‘๋™ํ•˜๋Š”์ง€, ์‹œ๊ฐ„์ด ์ œ๋Œ€๋กœ ์žฌ์„ค์ •๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์žฅ์•  (Namespace Failures): ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๊ณ  ๋Œ€์ƒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋ณต๊ตฌ ์‹œ๊ฐ„์„ ํ…Œ์ŠคํŠธ/๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜๊ตฌ ๋ณผ๋ฅจ ์ฑ„์šฐ๊ธฐ (Persistent Volume Fill): ํŒŒ๋“œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์˜๊ตฌ ๋ณผ๋ฅจ์„ ์ง€์ •๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ ์ฃผ์–ด์ง„ ๋น„์œจ๊นŒ์ง€ ์ฑ„์›๋‹ˆ๋‹ค. ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜ ์—†์„ ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€(์˜ˆ: Kafka๊ฐ€ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์—†์„ ๋•Œ์˜ ๋™์ž‘) ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ์นด์˜ค์Šค (Network Chaos): ๋„คํŠธ์›Œํฌ ์ง€์—ฐ, ํŒจํ‚ท ์†์‹ค, ์ธํ„ฐํŽ˜์ด์Šค ํ”Œ๋ž˜ํ•‘, DNS ์˜ค๋ฅ˜, ํŒจํ‚ท ์†์ƒ, ๋Œ€์—ญํญ ์ œํ•œ ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ถŒ์žฅ ์‚ฌํ•ญ (Test Environment Recommendations)

์นด์˜ค์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์žฅ์†Œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ํ…Œ์ŠคํŠธ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ง€์†์ ์œผ๋กœ ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ ์‹คํ–‰: ์†Œํ”„ํŠธ์›จ์–ด, ์‹œ์Šคํ…œ ๋ฐ ์ธํ”„๋ผ๋Š” ๋ณ€ํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ์ƒํƒœ/๊ฑด๊ฐ•๋„ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๊ธฐ์ ์ธ ์ฃผ๊ธฐ๋กœ ์‹คํ–‰๋˜๋Š” CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  2. ์‹œ์Šคํ…œ์—์„œ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ์ˆ˜๋™์œผ๋กœ ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ ์‹คํ–‰: ์นด์˜ค์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋‚˜ ๊ฒฐํ•จ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” ์‹คํ–‰์„ ํ•ฉ๊ฒฉ ๋˜๋Š” ๋ถˆํ•ฉ๊ฒฉ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ•˜๊ณ  ๋Œ€์‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฌธ์ œ๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๋„๋ก ์‹คํ–‰ ์ „์— ํ…Œ์ŠคํŠธ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ์—์„œ ๋ถ€ํ•˜๋ฅผ ๋ชจ๋ฐฉ: ํ”„๋กœ๋•์…˜ ํ…Œ์ŠคํŠธ๋Š” ๋ฌด์„œ์šด ์ผ์ด์ง€๋งŒ, ํ”„๋กœ๋•์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ํ™˜๊ฒฝ์ด๋ฉฐ ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ/๋ถ€ํ•˜๋Š” ์‹ค์ œ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์˜ ๊ฒฌ๊ณ ์„ฑ/ํšŒ๋ณตํƒ„๋ ฅ์„ฑ์„ ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์นด์˜ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง ์‹คํ—˜์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์˜: ์‚ฌ์šฉ์ž์™€ ๊ณ ๊ฐ์ด ๋‹ค์šดํƒ€์ž„์„ ๊ฒช์ง€ ์•Š๋„๋ก ํญ๋ฐœ ๋ฐ˜๊ฒฝ(blast radius)์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ฐฑ์—… ๊ณ„ํš์„ ๋งˆ๋ จํ•˜์„ธ์š”. SLA๊ฐ€ ๋„ˆ๋ฌด ์—„๊ฒฉํ•˜์—ฌ ๋‹ค์šดํƒ€์ž„์„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ์—์„œ ๋ถ€ํ•˜๋ฅผ ๋ชจ๋ฐฉํ•˜์„ธ์š”.
  1. ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ(Observability) ํ™œ์„ฑํ™”: ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ์—†๋Š” ์นด์˜ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง์€โ€ฆ ๊ทธ๋ƒฅ ํ˜ผ๋ž€(Chaos)์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์„ค์น˜ํ•˜์—ฌ ์™œ ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์„ ๋ฐ›์œผ์„ธ์š”. ์‚ฌ๋žŒ์ด ํ•ญ์ƒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์—†๋Š” CI์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, Cerberus๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹คํ–‰ ์ค‘ ์ƒํƒœ๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  Kraken์˜ ์ง€ํ‘œ ์ˆ˜์ง‘์„ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง„ ํ›„์—๋„ ์ง€ํ‘œ๋ฅผ ์žฅ๊ธฐ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  2. ํ”„๋กœ๋•์…˜ ์ค‘๋‹จ์„ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰: ์˜ˆ๋ฅผ ๋“ค์–ด, IO์™€ ๋„คํŠธ์›Œํฌ๋ฅผ ๋”ฐ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  ๋™์‹œ์— ํญ์ฃผ์‹œ์ผœ ์˜ํ–ฅ์„ ๊ด€์ฐฐํ•˜์„ธ์š”. ์„ฑ๋Šฅ, ํ™•์žฅ์„ฑ ๋˜๋Š” QE์™€ ๊ด€๋ จ๋œ ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ค‘์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์นด์˜ค์Šค๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์˜ํ–ฅ์„ ๊ด€์ฐฐํ•˜์„ธ์š”. Kraken์˜ ์‹œ๊ทธ๋„๋ง ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ์ž‘์—…์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‹œ์ž‘, ์ค‘์ง€, ์ผ์‹œ ์ค‘์ง€ํ•˜๋Š” ๋“ฑ ์นด์˜ค์Šค ์‹คํ–‰์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ „ ์นด์˜ค์Šค ํ…Œ์ŠคํŒ… (Chaos testing in Practice)

OpenShift ์กฐ์ง

OpenShift ์กฐ์ง ๋‚ด์—์„œ๋Š” ์ฝ”๋“œ๊ฐ€ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณต๋˜๊ธฐ ์ „์— Kraken์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆด๋ฆฌ์Šค ์ „๋ฐ˜์— ๊ฑธ์ณ ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ํšŒ๊ท€(Regression) ํ…Œ์ŠคํŠธ ์ œํ’ˆ๊ตฐ ๋™์•ˆ Kraken ์‹คํ–‰: ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ(์ฃผ๋กœ AWS, Azure, GCP)์—์„œ ๊ฐ ์นด์˜ค์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค.
  2. ์žฅ๊ธฐ ์‹คํ–‰ ์‹ ๋ขฐ์„ฑ(Reliability) ํ…Œ์ŠคํŠธ ๋™์•ˆ ์นด์˜ค์Šค ์‹œ๋‚˜๋ฆฌ์˜ค ์‹คํ–‰: ์ด ํ…Œ์ŠคํŠธ ๋™์•ˆ ์‚ฌ์šฉ์ž๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ ์‹คํ–‰ ํ…Œ์ŠคํŠธ ์ „๋ฐ˜์— ๊ฑธ์ณ ํŠน์ • ์‹œ๊ฐ„์— Kraken์„ ์‹คํ–‰ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋„๋ก ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘ ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰: ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘์— ์นด์˜ค์Šค ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

[์ถœ์ฒ˜] Chaos Testing Guide | krkn

1 Like