์๋ ํ์ธ์ ๊ตฌ๋ ์๋, DevOps ์์๊ณผ ๊ธฐ์ ์ง์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
๊ฐ๋ฐ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์ ์ผ๋ก ๋์ํ๋์ง ํ์ธํ๊ธฐ ์ํด ๋ค์ํ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ฒด๋ง์ ์ํ ๋์ ํ ์คํธ๋ ์์ฃผ ์ฌ์ฉ๋์ง๋ง, ์ค๋๋ ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐฐํฌ๋๋ ๊ฒฝ์ฐ๋ ๋ง๊ธฐ ๋๋ฌธ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ๋์ ํ ์คํธ๋ ํ์ํ๋ฐ์.
์ด๋ด ๋ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฒ์ด ๋ฐ๋ก, ์นด์ค์ค ์์ง๋์ด๋ง์ ๋๋ค.
๐งช์นด์ค์ค ์์ง๋์ด๋ง์ด๋?
์นด์ค์ค ์์ง๋์ด๋ง์ด๋, ๊ฐ๋ฐ ์ค์ธ ์์คํ ์ ์์ ์ฑ์ ํ ์คํธํ๊ธฐ ์ํด ์์์ ์ผ๋ก ์ฅ์ ์ํฉ์ ์กฐ์ฑํ๋ ๊ธฐ๋ฒ์ ๋งํฉ๋๋ค.
๊ทธ๋์ ํผ๋์ด๋ ๋ป์ ์นด์ค์ค(Chaos)๊ฐ ์ด๋ฆ์ ๋ถ์ ๊ฒ์ธ๋ฐ์.
์นด์ค์ค ์์ง๋์ด๋ง์ ํตํด ์์คํ ์์์์ ์ทจ์ฝ์ ์ ์๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ๋์ฑ ์์ ์ ์ผ๋ก ๋ง๋ค ์ ์์ฃ .
โ๏ธํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์์ ์นด์ค์ค ์์ง๋์ด๋ง์ด ํ์ํ ์ด์
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์ ๋ค์ํ ์ปดํฌ๋ํธ๊ฐ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ด ๊ทธ ์์ฒด๋ก ๋ณต์กํ๊ธฐ ๋๋ฌธ์, ํ ์คํธํ๊ธฐ ์ฝ์ง ์์๋ฐ์.
์๋น์ค์ ๋ถํ ๋ฑ์ ์ธก์ ํ๋ ์ผ๋ฐ์ ์ธ ํ ์คํธ ํด๋ก๋ ์ด๋ฐ ๋ถ์ฐ ์์คํ ํ๊ฒฝ์์ ํจ์จ์ ์ผ๋ก ํ ์คํธํ๊ธฐ ์ด๋ ค์ฐ๋ฏ๋ก, ์นด์ค์ค ์์ง๋์ด๋ง์ด๋ผ๋ ๋ค๋ฅธ ์ ๊ทผ๋ฒ์ด ํ์ํ ๊ฒ์ ๋๋ค.
์นด์ค์ค ์์ง๋์ด๋ง์ ์์คํ ์ ์์์ ์ธ ์ฅ์ ์ํฉ์ ์ผ์ผํจ ๋ค์, ์์คํ ์ด ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง ํ์ธํ์ฌ ์ ์ฌ์ ์ธ ์ด์๋ฅผ ์ก์๋ด๊ณ ์ฌ๊ณ ๋ฅผ ๋ฏธ์ฐ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ค์ ์นด์ค์ค ์์ง๋์ด๋ง์ ์ด๋ป๊ฒ ์ํํ ์ ์์๊น์?
CNCF ์ฌ๋จ์ Incubating ํ๋ก์ ํธ๋ก ๋ฑ๋ก๋ Chaos Mesh๋ฅผ ์๊ฐํ๋ฉฐ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โ๏ธKubernetes ์นด์ค์ค ์์ง๋์ด๋ง์ ํนํ๋ Chaos Mesh
Chaos Mesh๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์ ์ํ ์คํ์์ค ์นด์ค์ค ์์ง๋์ด๋ง ํ๋ซํผ์ ๋๋ค.
๋ค์ํ ์ข ๋ฅ์ ์ฅ์ ์ํฉ ์๋ฎฌ๋ ์ด์ ์ด ์ค๋น๋์ด์๊ธฐ ๋๋ฌธ์, ๊ตฌ์ฑํ ์ ์๋ ์ฅ์ ์๋๋ฆฌ์ค์ ํญ๋ ๋งค์ฐ ๋๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
Chaos Mesh๋ ๋์์ ํ์ํ ๊ฐ ์ปดํฌ๋ํธ(contoller-manager, daemon, dashboard)๊ฐ Kubernetes ํด๋ฌ์คํฐ์์ CRD(Custom Resource Definition)๋ก ๋ฐฐํฌ๋๋ ๋ฐฉ์์ผ๋ก ์ค์นํ๋๋ฐ์.
๊ทธ๋์ Helm์ ์ฌ์ฉํ๊ฑฐ๋ Chaos Mesh๊ฐ ์์ฒด๋ก ์์ฑํ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด์ ์ค์นํ ์ ์์ต๋๋ค. ์์ธํ ์ค์น ์ ๋ณด๋ ๊ณต์ ํ์ด์ง์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
Chaos Mesh ์ค์น๊ฐ ์๋ฃ๋๋ฉด Experiment๋ผ๊ณ ํ๋ ํ ์คํธ ๊ฐ์ฒด๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค. Chaos Mesh์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ํ ์ฅ์ ์ํฉ์ ๋ฐ์์ํฌ ์ ์๋ ๋ฆฌ์์ค๊ฐ ์ค๋น๋์ด ์๊ณ , ์ด๋ฐ ๋ฆฌ์์ค๋ฅผ Experiment๋ก ์ฌ์ฉํ๋๋ฐ์.
Chaos Mesh์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ ๊ฐ๋ฅํ ๋ํ์ ์ธ ์ฅ์ ๋ฐ์ ๋ฆฌ์์ค๋ ์๋์ ๊ฐ์ต๋๋ค.
- PodChaos: Pod ์ํ๋ฅผ ์๋์ ์ผ๋ก ๋ถ์์ ํ๊ฒ ๋ง๋ค๊ฑฐ๋ Pod ๋ด ํน์ Container๊ฐ ๋์์ ์คํจํ๋ ์ํฉ ์กฐ์ฑ
- NetworkChaos: ๋คํธ์ํฌ ์ง์ฐ, ํจํท ์์ค ๋ฑ์ ์ํฉ ์กฐ์ฑ
- StressChaos: CPU ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋ถํ ์กฐ์ฑ
Experiment๋ k8s ๋ฆฌ์์ค์ฒ๋ผ yaml ํ์ผ๋ก ์ ์ ํ kubectl๋ก ์คํํ ์ ์๋๋ฐ์.
์๋๋ NetworkChaos๋ก ๋ง๋ Experiment์ ์์์ ๋๋ค. ์ด Experiment๋ฅผ ์คํํ๋ฉด default ๋ค์์คํ์ด์ค ๋ด "app": "test" ๋ผ๋ฒจ์ ๊ฐ์ง Pod์ ๋ํด 12์ด ๋์ 10ms์ ๋คํธ์ํฌ ์ง์ฐ์ ์ ๋ฐ์ํค๋ ํ ์คํธ๊ฐ ์งํ๋ฉ๋๋ค.
๋ํ ์ฌ๋ฌ ๊ฐ์ Experiment๋ ํ๋์ Workflow๋ก ๊ตฌ์ฑํด์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ฆ Workflow๋ฅผ ๊ตฌ์ฑํจ์ผ๋ก์จ ์ ์ฒด์ ์ธ ์นด์ค์ค ์์ง๋์ด๋ง ํ๋ก์ธ์ค๋ฅผ ์ ์ํ๊ณ ์ํํ ์ ์๋ ๊ฑฐ์ฃ .
๊ทธ๋ฆฌ๊ณ Chaos Mesh์ ๊ธฐ๋ณธ ์ปดํฌ๋ํธ ์ค์๋ Dashboard๋ ์กด์ฌํ๋๋ฐ์. Chaos Experiment๋ฅผ ์ง๊ด์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ชจ๋ํฐ๋งํ ์ ์์ด ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ธก๋ฉด์์ ์ ์ฉํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ด๋ฒ ์์์ง์์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์์์ ์นด์ค์ค ์์ง๋์ด๋ง์ ๋ํด ์๊ฐํด๋๋ ธ์ต๋๋ค.
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
์ค๋๋ ๊ฐ์ฌํฉ๋๋ค, ๊ตฌ๋ ์๋ ๐บ
๐References
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์