์๋ ํ์ธ์ ๊ตฌ๋ ์๋, DevOps ์์๊ณผ ๊ธฐ์ ์ง์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
์ด๋ฒ ์์์ง์์ ์ค๋๋ ๋ง์ด ์ธ๊ธ๋์ง๋ง ์ฝ๊ฒ ์ ํ๊ธฐ๋ ์ด๋ ค์ด Infrastructure as Code(IaC)์ ๋ํด ์์๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ณ ์๋น์ค๋ฅผ ์ด์ํ๋ ค๋ฉด ์๋ฒ, ์คํ ๋ฆฌ์ง, ๋คํธ์ํฌ ๋ฑ๊ณผ ๊ฐ์ ์ธํ๋ผ ์ค์ ์ด ํ์ํ๋ฐ์.
์ธํ๋ผ ๊ตฌ์ถ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๋๋ง๋ค ๋งค๋ฒ ์ง์ ์๋์ผ๋ก ํ๋ค๋ฉด ์๊ฐ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ์ง๋ฃจํ ์์ ์ด ๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ ์ด๋ฐ ์ธํ๋ผ ์ค๋น ์์ ์ ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์๋ํํ ์ ์๋ค๋ฉด ์ด๋จ๊น์?
์ด๋ ๊ฒ ๋ฑ์ฅํ ๊ฐ๋ ์ด ๋ฐ๋ก, Infrastructure as Code(IaC)์ ๋๋ค.
โ IaC๋ฅผ ์ ์ฉํด์ผ ํ ์ด์
์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ, IaC๋ ์ธํ๋ผ ํ๊ฒฝ์ ์๋์ผ๋ก ์ค๋นํ๊ณ ์ค์ ํ๋ ๋์ ์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ ํ๋ก๋น์ ๋ํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ๊ฐ๋ ์ ๋๋ค.
์ด๋ฐ IaC๋ DevOps์ CI/CD๋ฅผ ๊ตฌํํ๋ ๋ฐ์๋ ์ค์ํ๋ฐ์.
DevOps ์ ๊ทผ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๊ณผ ์ด์ํ์ ๋ฐฐํฌ ํ๊ฒฝ์ ์ง์ ์๋์ผ๋ก ๋ง์ถ๋ค๋ฉด ๊ฐ๊ฐ์ง ์ค๋ฅ๋ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ณ , ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ๋ฐฐํฌํด์ผ๋ง ํ๋ ์ํฉ์ด ์๊ธธ ์๋ ์์ต๋๋ค.
ํ์ง๋ง IaC๋ฅผ ๋์ ํ๋ฉด ๊ฐ๋ฐํ๊ณผ ์ด์ํ์ด ์ฌ์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ํ๊ฒฝ์ ์์ํ๊ฒ ๋ง์ถ ์ ์์ด์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์๋ํ๊ฐ ๊ฐ๋ฅํ๊ณ , ์ด๋ DevOps ์ ๊ทผ๋ฒ์๋ ๋ถํฉํฉ๋๋ค.
IaC๋ฅผ ์ ์ฉํ๋ฉด ์ธํ๋ผ ํ๊ฒฝ ์ญ์ CI/CD ํ์ดํ๋ผ์ธ์ ํตํด ํ ์คํธ์ ๋ฒ์ ์ปจํธ๋กค์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ DevOps ๊ด์ ์์๋ IaC ๋์ ์ด ๊ถ์ฅ๋ฉ๋๋ค.
IaC์ ๊ฐ๋ ์ ๋ํด ์ดํด๋ดค์ผ๋ IaC๋ฅผ ์ํํ ์ ์๋ ํด์ ์ดํด๋ณผ ์ฐจ๋ก์ธ๋ฐ์.
๊ฐ IaC ํด์ ๋ํด ์์๋ณด๊ธฐ ์ ์ IaC ํด์ ์ฌ์ฉํ๋ฉด์ ์ป์ ์ ์๋ ์ด์ ์ ์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
- ์ธํ๋ผ ๊ตฌ์ถ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ์ธํ๋ผ ๋ฆฌ์์ค ํ๋ก๋น์ ๋ ๋ฐ ๊ด๋ฆฌ์ ํ์ํ ์๊ฐ ๋จ์ถ
- ์ธํ๋ผ ๋ฆฌ์์ค ๊ตฌ์ถ์ ๋ํ ์ ์๋ฅผ ์์ค์ฝ๋๋ก ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ํด๋จผ ์๋ฌ(Human error)๋ฅผ ์ค์ด๊ณ , ์ผ๊ด์ฑ ์๋ ํ๊ฒฝ ๊ตฌ์ถ ๊ฐ๋ฅ
- ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์ธํ๋ผ๋ฅผ ์๋์ผ๋ก ๊ตฌ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธํ๋ผ ๊ตฌ์ฑ์ ๋ณด๋ค ์ฝ๊ฒ ํ์ฅํ ์ ์๊ณ , ์ํฉ์ ๋ง๊ฒ ์ธํ๋ผ ํ๊ฒฝ์ ๋์ฑ ์ ์ํ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ์ธํ๋ผ ๋ณ๊ฒฝ ์ด๋ ฅ์ด ๊ด๋ จ ์ฝ๋ ์์ ์ผ๋ก ๊ธฐ๋ก๋๊ธฐ ๋๋ฌธ์ ์ด๋ ฅ ์ถ์ ๊ณผ ๋ฌธ์ํ์ ์ฉ์ด
์ด๋ฐ ์ด์ ์ ๊ฐ์ง ๋ํ์ ์ธ IaC ํด 2๊ฐ์ง Terraform๊ณผ Crossplane์ ๋ํด ๊ฐ๋จํ ์์๋ณด๋ ค ํ๋๋ฐ์. ๊ทธ ์ฒซ ๋ฒ์งธ ์์๋ Terraform์ ๋๋ค.
๐ ๏ธIaC ํด ์์๋ณด๊ธฐ
Terraform
HashiCorp์์ ์ ๊ณตํ๋ Terraform์ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ์จํ๋ ๋ฏธ์ค ์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ก ์ ์ํ ์ ์๋๋ก ๋์์ค๋๋ค.
HashiCorp์ Terraform ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐ๋ ์๋ง์ Provider ๊ฐ์ฒด ๋๋ถ์ ๋ค์ํ ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ ์๋น์ค์ ๋ฆฌ์์ค๋ฅผ API๋ก ์์ฒด ๊ฐ๋ฐํ ๋ฌธ๋ฒ์ ์ฝ๋๋ก ์ธํ๋ผ ๊ตฌ์ถ์ด ๊ฐ๋ฅํฉ๋๋ค.
Crossplane
์ด์ Crossplane์ ๋ํด ๊ฐ๋จํ ์์๋ณด๊ฒ ์ต๋๋ค. Crossplane์ Kubernetes ์ปค์คํ ๋ฆฌ์์ค๋ฅผ ์ด์ฉํด์ ์ธํ๋ผ ๊ด๋ จ ๋ฆฌ์์ค๋ฅผ ์ ์ธ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ ์คํ์์ค Kubernetes ์ ๋์จ์ธ๋ฐ์.
Kubernetes ํด๋ฌ์คํฐ์ ์ค์น๋ Crossplane์ ํตํด, ์ฌ์ฉ์๋ Kubernetes์ ์ํธ์์ฉํ๋ ๊ฒ๋ง์ผ๋ก AWS, Azure, GCP ๊ฐ์ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
Terraform๊ณผ Crossplane์ ์ฐจ์ด
๋ IaC ํด ๋ชจ๋ ์ธํ๋ผ ๊ด๋ จ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ค๋ค๋ ๊ฒ์ ์ ์ ์๋๋ฐ์. ๊ทธ๋ ๋ค๋ฉด Terraform๊ณผ Crossplane์ ์ฐจ์ด์ ์ ๋ฌด์์ผ๊น์?
- ๋ค์ดํฐ๋ธ k8s์์ ํธํ์ฑ
- Crossplane์ Kubernetes ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋ ๋ฐ๋ฉด, Terraform์ ๋ ์์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ Kubernetes์์ ์ฐ๋์ ๋ณ๋๋ก ์ ๊ณต๋ Provider๋ฅผ ์ด์ฉํฉ๋๋ค.
- ๋ฆฌ์์ค ์ ์ธ ๋ฌธ๋ฒ
- ๋ ๊ฐ์ง ํด ๋ชจ๋ ์ ์ธ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋๋ฐ์. ๋ค๋ง Crossplane์ Kubernetes์์๋ ์ฌ์ฉํ๋ YAML ๋ฌธ๋ฒ์ ์ฌ์ฉํ๊ณ , Terraform์ ๋ ์์ ์ธ HCL ๋ฌธ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
- ํ๋ก๋น์ ๋
- Crossplane์ Kubernetes Controller๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ํ๋ก๋น์ ๋ํ์ง๋ง, Terraform์ ๋ณ๋๋ก ๊ฐ๋ฐ๋ API/SDK๋ฅผ ํตํด ์ง์ ํ๋ก๋น์ ๋ํฉ๋๋ค.
- ์ํ๊ณ
- Terraform์ Provider๋ฅผ ๊ฐ๋ฐํ๋ ์ํ๊ณ๊ฐ ์ฑ์ํ ์ํ์ด์ง๋ง, Crossplane์ ์ํ๊ณ๋ ๊ณ์ ์ฑ์ฅ ์ค์ ์์ต๋๋ค.
IaC ํด๊ณผ Helm chart์ ์ฐจ์ด
์ ํฌ๋ ์ง๋ ์์์ง์์ Kubernetes์์ ํ๋ก์ ํธ ๋จ์๋ก ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ Helm chart์ ๋ํด ๊ฐ์ด ์ดํด๋ดค์์ต๋๋ค.
์์์ ์๊ฐํ IaC ํด๋ค๊ณผ Helm chart๋ ๋น์ทํ ์ญํ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋์ผํ ์ฑ๊ฒฉ์ ํด๋ก ๋ณด์ด๊ธฐ๋ ํ๋๋ฐ์.
ํ์ง๋ง IaC ํด๊ณผ Helm chart์๋ ๋ช ํํ ์ฐจ์ด์ ์ ์กด์ฌํฉ๋๋ค.
IaC ํด์ Kubernetes๋ฟ๋ง์๋๋ผ AWS, GCP, Azure์ ๊ฐ์ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋์ ์ธํ๋ผ ๋ฆฌ์์ค๋ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง Helm chart๋ Kubernetes ํด๋ฌ์คํฐ ๋ด์ ๋ฆฌ์์ค๋ง ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ์ฃ .
๋ํ IaC ํด์ ์๋ก์ด Kubernetes ํด๋ฌ์คํฐ ์์ฑ์ด ๊ฐ๋ฅํ์ง๋ง, Helm chart๋ ๊ธฐ์กด Kubernetes ํด๋ฌ์คํฐ ๋ด์ ๋ฆฌ์์ค๋ง ์์ฑํ ์ ์์ต๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ด๋ฒ ์์์ง์์ IaC์ ๋ํด ์๊ฐํ๊ณ ๊ด๋ จ ํด๋ค์ ๋น๊ตํด๋ณด๋ฉด์ IaC์ ๊ฐ๋ ์ ์ก์๊ฐ๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด์์ต๋๋ค.
์ต๊ทผ IaC๋ผ๋ ํค์๋๊ฐ ๋ง์ด ์ธ๊ธ๋๊ธด ํ์ง๋ง, ์ง์ ์ฌ์ฉํด๋ณด๊ฑฐ๋ ์ฝ๊ฒ ์ ํ๊ธฐ ์ด๋ ค์ด ๋ถ์ผ์ด๋ค๋ณด๋ ํด๋น ๊ฐ๋ ์ ์ก๋ ๋ฐ์ ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ ์ด๋ ๊ฒ ๋ค๋ค๋ดค์ต๋๋ค.
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
์ค๋๋ ๊ฐ์ฌํฉ๋๋ค, ๊ตฌ๋ ์๋ ๐บ
๐References
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์