Chaos Engineering ๋ถ์ผ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ Gremlin(์์ฉ)๊ณผ LitmusChaos(CNCF)์ ๋ฌ๋ฆฌ, Krkn์ ๋จ์ ์ฅ์ ์ฃผ์
์ ๋์ด Platform ยท Cluster ์ ๋ฐ์ ์ฑ๋ฅ๊ณผ ๋ณต์๋ ฅ ๊ฐ๋๋ฅผ ์ ๋ฐํ๊ฒ ํ๊ฐํ ์ ์๋ Python ๊ธฐ๋ฐ ๊ณ ๋๋ Chaos Testing Tool,
Krkn์ ์๊ฐํฉ๋๋ค.
Red Hat(OpenShift) Engineering Team ์ฃผ๋๋ก ์์๋์ฌ, ํ์ฌ
Cloud Native Computing Foundation Sandbox Project์ด๋ฉฐ,
ํนํ ๊ณ ๋๋์ 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, ์ ์ ์ฐจ๋จ ์๋ฎฌ๋ ์ด์ |
Litmus๊ฐ "์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์ฃฝ์ด๊ธฐ"์ ๊ฐํ๋ค๋ฉด, Krkn์ โ๋
ธ๋ ์ ์ฒด ๋ ๋ฆฌ๊ธฐโ, โEtcd ์ฃฝ์ด๊ธฐโ, โ์ ์ฒด ๊ฐ์ฉ ์์ญ(Zone) ์ฐจ๋จํ๊ธฐโ ๊ฐ์ ๋ฌด๊ฑฐ์ด ์ธํ๋ผ ๋ ๋ฒจ ํ
์คํธ์ ๋ ๊ฐ์ ์ด ์์ต๋๋ค.
- Cerberus ์ฐ๋: ๋จ์ํ ์ฅ์ ๋ฅผ ์ฃผ๋ ๊ฒ ์๋๋ผ, Cerberus๋ผ๋ ๋๊ตฌ์ ํจ๊ป ๋์๊ฐ๋ฉฐ ์ฅ์ ๋ฐ์ ์ ํด๋ฌ์คํฐ์ ์ ๋ฐ์ ์ธ ๊ฑด๊ฐ ์ํ(Health)์ ์ฑ๋ฅ ์งํ ๋ณํ๋ฅผ ์ ๋ฐํ๊ฒ ์ถ์ ํฉ๋๋ค.
- ๋จ์ ์ฅ์ ์ฃผ์ ์ ๋์ด ์ฑ๋ฅ ๋ฒค์น๋งํน ์ฑ๊ฒฉ์ด ์์ฌ ์์ต๋๋ค.
- ์์ธ ์ ๋ณด : krkn Insights
[์ถ์ฒ] Krkn | CNCF
์นด์ค์ค ํ ์คํ ๊ฐ์ด๋ (Chaos Testing Guide)
์ฅ์ ์กฐ๊ฑด ํ์์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ ์ค์ ์ ๋ ์ฟ ๋ฒ๋คํฐ์ค์ฉ ์นด์ค์ค ๋ฐ ๋ฆฌ์ง๋ฆฌ์ธ์ค(ํ๋ณตํ๋ ฅ์ฑ) ํ ์คํ ๋๊ตฌ์ ๋๋ค. CNCF ์๋๋ฐ์ค ํ๋ก์ ํธ์ ๋๋ค.
์๊ฐ (Introduction)
๋ถ์ฐ ์์คํ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์ํ๊ณ ์คํํ ๋ ์ฌ์ฉ์๊ฐ ๊ฐ์ง ์ ์๋ ๋ช ๊ฐ์ง ์๋ชป๋ ๊ฐ์ ์ด ์์ต๋๋ค.
- ๋คํธ์ํฌ๋ ์ ๋ขฐํ ์ ์๋ค.
- ์ง์ฐ ์๊ฐ(Latency)์ 0์ด๋ค.
- ๋์ญํญ์ ๋ฌดํํ๋ค.
- ๋คํธ์ํฌ๋ ์์ ํ๋ค.
- ํ ํด๋ก์ง๋ ์ ๋ ๋ณํ์ง ์๋๋ค.
- ๋คํธ์ํฌ๋ ๋์ง์ ์ด๋ค.
- ์คํ์ดํฌ ์์ด ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ์ผ์ ํ๋ค.
- ๋ชจ๋ ๊ณต์ ๋ฆฌ์์ค๋ ์ด๋์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๊ณผ๊ฑฐ์๋ ์ด๋ฌํ ๊ฐ์ ๋ค๋ก ์ธํด ํ๋ก๋์ ํ๊ฒฝ์์ ์๋ง์ ์ค๋จ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์๋น์ค ์ฑ๋ฅ์ด ์ ํ๋๊ฑฐ๋ ๊ณ ๊ฐ์ด ์ ์ํ ์ ์๊ฒ ๋์ด, ์๋น์ค ์์ค ๊ณ์ฝ(SLA) ๊ฐ๋ ์๊ฐ ์ฝ์์ ์งํค์ง ๋ชปํ๊ณ ์์ต ์์ค์ด ๋ฐ์ํ๋ฉฐ ํด๋น ์๋น์ค์ ์ ๋ขฐ๋ ํ๋ฝ์ผ๋ก ์ด์ด์ก์ต๋๋ค.
์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ง ์๋๋ก ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๋ฐ๋ก ์ฌ๊ธฐ์ **์นด์ค์ค ํ ์คํ (Chaos testing)**์ด ๊ฐ์น๋ฅผ ๋ฐํํฉ๋๋ค.
ํ ์คํธ ์ ๋ต ๋ฐ ๋ฐฉ๋ฒ๋ก (Test Strategies and Methodology)
ํ๋ก๋์ ์์์ ์ฅ์ ๋ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค. ์๋น์ค ์ํ์ ๋ํ ์ํ์ ์ํํ๊ธฐ ์ํด ๋ค์ ์ ๋ต๊ณผ ์ ๊ทผ ๋ฐฉ์์ ๊ณ ๋ คํ์ธ์.
์๋์ (Reactive) ๋์ vs ๋ฅ๋์ (Proactive) ๋์ ์ฐ๋ฆฌ๋ ํต์ ๋ ํ๊ฒฝ์์ ์ฝ๋ ๋ฒ๊ทธ๋ฅผ ์ฐพ์๋ด๋ ๋ฐ ๋์์ด ๋๋ ๋ค์ํ ์ ํ์ ํ ์คํธ ์ ํ๊ตฐ(๋จ์, ํตํฉ ๋ฐ ์๋ ํฌ ์๋)์ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ์นด์ค์ค ์์ง๋์ด๋ง ์ ๋ต์ ๊ตฌํํจ์ผ๋ก์จ ์๋น์ค ์ ํ์ ์ ์ฌ์ ์์ธ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ์์คํ ์ ๊ฐํํด์ผ ํ ์์ญ์ ์ฐพ๊ธฐ ์ํด ์์ธก ๋ถ๊ฐ๋ฅํ ์กฐ๊ฑด์์ ์์คํ ์ ๋์์ ์ดํดํด์ผ ํ๋ฉฐ, ๋ค์ดํ์์ ์ต์ํํ๊ธฐ ์ํด ์ฅ์ ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ํด๋ฌ์คํฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ๋ฐ ์ฑ๋ฅ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํผ๋์ค๋ฌ์ด ์กฐ๊ฑด์์์ ์์คํ ํ๋ณตํ๋ ฅ์ฑ ํ ์คํธ ์์คํ ์ ์ ์์ฑ๊ณผ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๋ฉด์ ์ค๋จ์ ์ ๋ฐํ๋๋ก ์ค๊ณ๋ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
- ์ ์ ์ํ(Steady state) ๋ฐ ์งํ ์ค์ : ์์ ์ ์ธ ์กฐ๊ฑด์์์ ๋์๊ณผ ์ฑ๋ฅ์ ์ดํดํ๊ณ ์์คํ ๋์์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ์งํ๋ฅผ ์ ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์นด์ค์ค๋ฅผ ์ฃผ์ ํ๊ธฐ ์ ์ ํ์ฉ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ์นด์ค์ค ํ ์คํธ ์คํ ์ค ๋ชจ๋ ๊ตฌ์ฑ ์์์ ์ํ ๋ฐ ์งํ ๋ถ์.
- ์นด์ค์ค ์ด์ ์ ์์ ์ ์ธ ์กฐ๊ฑด๊ณผ ์ฃผ์ ์งํ ๋ฐ ์๋น์ค ์์ค ๋ชฉํ(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์ ์ํฌํ๋ก์ฐ๋ฅผ ์ดํดํด ๋ด ์๋ค.
- ์ฌ์ฉ์๋
kubeconfig๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ Kraken์ ์คํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๊ฐ ํธ์คํ ๋ ํ๋ซํผ๊ณผ ํต์ ํ ์ ์์ต๋๋ค(oc/kubectl API ๋๋ ํด๋ผ์ฐ๋ API ์ฌ์ฉ). - Kraken์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ์๋์ ๊ฐ์ ํน์ ์นด์ค์ค ์๋๋ฆฌ์ค๋ฅผ ์ฃผ์ ํฉ๋๋ค.
- (์ ํ ์ฌํญ) Cerberus์ ํต์ ํ์ฌ ํด๋ฌ์คํฐ์ ์ ๋ฐ์ ์ธ ์ํ๋ฅผ ๋ํ๋ด๋ go/no-go ์ ํธ๋ฅผ ๋ฐ์ต๋๋ค.
- (์ ํ ์ฌํญ) ๋ฉํธ๋ฆญ ํ๋กํ์ ์ฃผ์ด์ง promql ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ ๋ด๋ถ์ Prometheus์์ ์งํ๋ฅผ ์์งํ๊ณ ๊ตฌ์ฑ๋ Elasticsearch์ ์ฅ๊ธฐ ์ ์ฅํฉ๋๋ค.
- (์ ํ ์ฌํญ) ๊ฒฝ๊ณ ํ๋กํ์ ์ง์ ๋ promql ํํ์์ ํ๊ฐํฉ๋๋ค.
- ๋ชจ๋ ๊ฒ์ ์ง๊ณํ์ฌ ํฉ๊ฒฉ/๋ถํฉ๊ฒฉ(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)
์นด์ค์ค ํ ์คํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ๊ณผ ์ฅ์์ ๋ํ ๋ช ๊ฐ์ง ๊ถ์ฅ ์ฌํญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ํ ์คํธ ํ์ดํ๋ผ์ธ์์ ์ง์์ ์ผ๋ก ์นด์ค์ค ํ ์คํธ ์คํ: ์ํํธ์จ์ด, ์์คํ ๋ฐ ์ธํ๋ผ๋ ๋ณํ๋ฉฐ ๊ฐ๊ฐ์ ์ํ/๊ฑด๊ฐ๋ ๋น ๋ฅด๊ฒ ๋ณํ ์ ์์ต๋๋ค. ์ ๊ธฐ์ ์ธ ์ฃผ๊ธฐ๋ก ์คํ๋๋ CI/CD ํ์ดํ๋ผ์ธ์์ ํ ์คํธ๋ฅผ ์คํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์์คํ ์์ ๋ฐฐ์ฐ๊ธฐ ์ํด ์๋์ผ๋ก ์นด์ค์ค ํ ์คํธ ์คํ: ์นด์ค์ค ์๋๋ฆฌ์ค๋ ๊ฒฐํจ ํ ์คํธ๋ฅผ ์คํํ ๋๋ ์คํ์ ํฉ๊ฒฉ ๋๋ ๋ถํฉ๊ฒฉ์ผ๋ก ํ์ํ๋ ๊ฒ๋ณด๋ค ์์คํ ์ด ์ด๋ป๊ฒ ๋ฐ์ํ๊ณ ๋์ํ๋์ง ์ดํดํ๋ ๊ฒ์ด ๋ ์ค์ํฉ๋๋ค. ์ผ๋ถ ๋ฌธ์ ๊ฐ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ๊ฐ๋ฆฌ์ง ์๋๋ก ์คํ ์ ์ ํ ์คํธ ๋ฒ์๋ฅผ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ํ๋ก๋์ ํ๊ฒฝ์์ ์นด์ค์ค ํ ์คํธ๋ฅผ ์คํํ๊ฑฐ๋ ์คํ ์ด์ง ํ๊ฒฝ์์ ๋ถํ๋ฅผ ๋ชจ๋ฐฉ: ํ๋ก๋์ ํ ์คํธ๋ ๋ฌด์์ด ์ผ์ด์ง๋ง, ํ๋ก๋์ ์ ์ฌ์ฉ์๊ฐ ์๋ ํ๊ฒฝ์ด๋ฉฐ ํธ๋ํฝ ๊ธ์ฆ/๋ถํ๋ ์ค์ ์ ๋๋ค. ํ๋ก๋์ ์์คํ ์ ๊ฒฌ๊ณ ์ฑ/ํ๋ณตํ๋ ฅ์ฑ์ ์์ ํ ํ ์คํธํ๋ ค๋ฉด ํ๋ก๋์ ํ๊ฒฝ์์ ์นด์ค์ค ์์ง๋์ด๋ง ์คํ์ ์คํํ๋ ๊ฒ์ด ํ์ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ฃผ์: ์ฌ์ฉ์์ ๊ณ ๊ฐ์ด ๋ค์ดํ์์ ๊ฒช์ง ์๋๋ก ํญ๋ฐ ๋ฐ๊ฒฝ(blast radius)์ ์ต์ํํ๊ณ ๋ฐฑ์ ๊ณํ์ ๋ง๋ จํ์ธ์. SLA๊ฐ ๋๋ฌด ์๊ฒฉํ์ฌ ๋ค์ดํ์์ ์ปค๋ฒํ ์ ์๋ ๊ฒฝ์ฐ ์คํ ์ด์ง ํ๊ฒฝ์์ ๋ถํ๋ฅผ ๋ชจ๋ฐฉํ์ธ์.
- ๊ด์ธก ๊ฐ๋ฅ์ฑ(Observability) ํ์ฑํ: ๊ด์ธก ๊ฐ๋ฅ์ฑ ์๋ ์นด์ค์ค ์์ง๋์ด๋ง์โฆ ๊ทธ๋ฅ ํผ๋(Chaos)์ผ ๋ฟ์ ๋๋ค. ํด๋ฌ์คํฐ์ ๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ค์นํ์ฌ ์ ๊ทธ๋ฐ ์ผ์ด ๋ฐ์ํ๋์ง ์ดํดํ๋ ๋ฐ ๋์์ ๋ฐ์ผ์ธ์. ์ฌ๋์ด ํญ์ ํด๋ฌ์คํฐ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๋ CI์์ ํ ์คํธ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ, Cerberus๋ฅผ ํ์ฉํ์ฌ ์คํ ์ค ์ํ๋ฅผ ์บก์ฒํ๊ณ Kraken์ ์งํ ์์ง์ ํตํด ํด๋ฌ์คํฐ๊ฐ ์ฌ๋ผ์ง ํ์๋ ์งํ๋ฅผ ์ฅ๊ธฐ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ํ๋ก๋์ ์ค๋จ์ ๋ชจ๋ฐฉํ๊ธฐ ์ํด ์ฌ๋ฌ ์นด์ค์ค ํ ์คํธ๋ฅผ ํ ๋ฒ์ ์คํ: ์๋ฅผ ๋ค์ด, IO์ ๋คํธ์ํฌ๋ฅผ ๋ฐ๋ก ์คํํ๋ ๋์ ๋์์ ํญ์ฃผ์์ผ ์ํฅ์ ๊ด์ฐฐํ์ธ์. ์ฑ๋ฅ, ํ์ฅ์ฑ ๋๋ QE์ ๊ด๋ จ๋ ๊ธฐ์กด ํ ์คํธ ์ผ์ด์ค๊ฐ ์์ ์ ์์ต๋๋ค. ํ ์คํธ ์คํ ์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์นด์ค์ค๋ฅผ ์คํํ์ฌ ์ํฅ์ ๊ด์ฐฐํ์ธ์. Kraken์ ์๊ทธ๋๋ง ๊ธฐ๋ฅ์ ๋ค๋ฅธ ํ ์คํธ ์์ ์ ์ํ์ ๋ฐ๋ผ ์๋๋ฆฌ์ค๋ฅผ ์์, ์ค์ง, ์ผ์ ์ค์งํ๋ ๋ฑ ์นด์ค์ค ์คํ์ ์กฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ค์ ์นด์ค์ค ํ ์คํ (Chaos testing in Practice)
OpenShift ์กฐ์ง
OpenShift ์กฐ์ง ๋ด์์๋ ์ฝ๋๊ฐ ๊ณ ๊ฐ์๊ฒ ์ ๊ณต๋๊ธฐ ์ ์ Kraken์ ์ฌ์ฉํ์ฌ ๋ฆด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์นด์ค์ค ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.
- ํ๊ท(Regression) ํ ์คํธ ์ ํ๊ตฐ ๋์ Kraken ์คํ: ๋ค์ํ ํด๋ผ์ฐ๋(์ฃผ๋ก AWS, Azure, GCP)์์ ๊ฐ ์นด์ค์ค ์๋๋ฆฌ์ค๋ฅผ ์ปค๋ฒํฉ๋๋ค.
- ์ฅ๊ธฐ ์คํ ์ ๋ขฐ์ฑ(Reliability) ํ ์คํธ ๋์ ์นด์ค์ค ์๋๋ฆฌ์ค ์คํ: ์ด ํ ์คํธ ๋์ ์ฌ์ฉ์๋ ํด๋ฌ์คํฐ์์ ๋ค์ํ ์ ํ์ ์์ ์ ์ํํฉ๋๋ค. ์ฅ๊ธฐ ์คํ ํ ์คํธ ์ ๋ฐ์ ๊ฑธ์ณ ํน์ ์๊ฐ์ Kraken์ ์คํํ์ฌ ํด๋ฌ์คํฐ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋๋ก ์ถ๊ฐํ์ต๋๋ค.
- ์ ๊ทธ๋ ์ด๋ ์ค ์นด์ค์ค ํ ์คํธ ์ํ: ์ ๊ทธ๋ ์ด๋ ์ค์ ์นด์ค์ค ํ ์คํธ๋ฅผ ์ํํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๊ธฐ ์์ํ์ต๋๋ค.
[์ถ์ฒ] Chaos Testing Guide | krkn
