Terraform Dynamic์ ๊น์ ํ๊ตฌ: ์ ์ฐํ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ


์์ฅ ๋ํฅ
ํด๋ผ์ฐ๋ ์ธํ๋ผ์ ์ธ๊ณ๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋ณํํ๊ณ ์์ต๋๋ค. ๊ธฐ์ ๋ค์ด ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐฉ์์ ์ฌ์ ๋ฆฝํจ์ ๋ฐ๋ผ, Terraform๊ณผ ๊ฐ์ ๋๊ตฌ๋ค์ด ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค. ์ต๊ทผ ๋ช ๋ ๋์ ํด๋ผ์ฐ๋ ๊ธฐ์ ์ ๋ํ ์์๋ ํญ๋ฐ์ ์ผ๋ก ์ฆ๊ฐํ๊ณ , ์ด๋ Terraform์ ๋์ ๊ธฐ๋ฅ์ ์ดํด๋ณผ ๋ ํฐ ๋งฅ๋ฝ์ ์ ๊ณตํฉ๋๋ค. Terraform Dynamic์ ์ ์ฐํ ๋งค๊ฐ๋ณ์ ์ค์ ์ ํตํด ์ธํ๋ผ์ ๋ณต์ก์ฑ์ ํจ๊ณผ์ ์ผ๋ก ์ค์ด๋ฉด์ ํจ์จ์ฑ์ ๋์ด๋๋ฐ ๊ธฐ์ฌํ๊ณ ์์ต๋๋ค.
์ต๊ทผ ํธ๋ ๋
์ต๊ทผ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ์์ ์ฃผ๋ชฉํด์ผ ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ ์ฐ์ฑ ์ฆ๊ฐ: ๊ธฐ์ ๋ค์ด ์์ ๋ค์ ํ์์ ๋ฐ๋ผ ์ธํ๋ผ ์ค์ ์ ์กฐ์ ํ ์ ์๋ ์ ์ฐ์ฑ์ด ์๊ตฌ๋๊ณ ์์ต๋๋ค.
- ์๋ํ์ ์ค์์ฑ: ์๋ ์ค์ ๋ณด๋ค ์๋ํ๋ ์์คํ ์ด ๋ ํจ์จ์ ์ด๋ผ๋ ๊ฒ์ ๋ง์ ๊ธฐ์ ์ด ์ฒดํํ๊ณ ์์ต๋๋ค.
- ๋น์ฉ ์ ๊ฐ ๋ฐฉ์: ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ์ด์ํ๋ ๊ธฐ์ ์ ํจ์จ์ ์ธ ์์ ๊ด๋ฆฌ๋ฅผ ํตํด ๋น์ฉ์ ์ค์ด๋ ๊ฒ์ด ๋์ธ๋ก ์๋ฆฌ ์ก๊ณ ์์ต๋๋ค.
์ด๋ฌํ ํธ๋ ๋๋ Terraform์ ํ์ฉ ํ์์ฑ์ ๋์ฑ ๋ถ๊ฐ์ํค๊ณ ์์ต๋๋ค.
๊ธฐ์ ์ ๋ถ์
Terraform Dynamic์ ํต์ฌ์ ๋งค๊ฐ๋ณ์ ์ค์ ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์์ด ๋ ํฐ ์ ์ฐ์ฑ์ ํ์ฉํฉ๋๋ค.
์ฐจํธ์ ์งํ ํด์
Terraform์ ์ฌ์ฉํ ๋, ๊ด๋ฆฌ์๋ ๋ค์ํ ์ฐจํธ๋ฅผ ํตํด ์์คํ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์์ต๋๋ค. ์ด ์ฐจํธ๋ค์ ์ฃผ๋ก ์์คํ ์ ์ฑ๋ฅ์ด๋ ์์ ์ฌ์ฉ๋, ์ค๋ฅ ๋ฐ์๋ฅ ๋ฑ์ ๋ณด์ฌ์ค๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ํน์ ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํ์ ๊ฒฝ์ฐ, ๊ทธ์ ๋ฐ๋ฅธ ์ฑ๊ณผ์งํ๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
- CPU ์ฌ์ฉ๋ฅ : ๋ฆฌ์์ค์ ๋ถํ๋ฅผ ์ฒดํฌํ๊ธฐ๊ฐ ์ฉ์ดํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ์ฑ์ ํจ์จ์ฑ์ ์ง๋จํ ์ ์์ต๋๋ค.
๊ธฐ์ ์ ์ธ ํ๊ฐ ๋ฐฉ๋ฒ
Terraform Dynamic์ ํตํ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ฐ๋ ์ ์์ต๋๋ค. ๋ค์์ ๊ทธ๋ฌํ ๋ฐฉ๋ฒ๋ค ์ค ์ผ๋ถ์ ๋๋ค:
- ์๋ํ๋ ํ ์คํธ: ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐฐํฌ๋๊ธฐ ์ ์ ์๋ํ๋ ํ ์คํธ๋ก ์ฑ๋ฅ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
- ๋ชจ๋ํฐ๋ง ์์คํ ๊ตฌ์ถ: ๋ฆฌ์์ค๊ฐ ์ด๋ค ์์ผ๋ก ์ด์๋๊ณ ์๋์ง ์ง์์ ์ผ๋ก ์ถ์ ํ์ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
"Terraform Dynamic์ ํ์ฉํ๋ฉด ์ธํ๋ผ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ์ค์ด๊ณ , ์ ๋ฐ์ ์ธ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค."
์ด๋ฌํ ๊ธฐ์ ์ ์ธ ์ฌํญ๋ค์ ๊ฐ๋ฐ์์ ๊ธฐ์ ๊ด๋ฆฌ์๊ฐ Terraform์ ์ ์ ํ ํ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค.
๊ธฐ์ ์ ๋ถ์์ ํตํด Terraform Dynamic์ ์ ์ฉ์ฑ์ ํ์ ํ๋ค๋ฉด, ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ์ ๋ฏธ๋์ ๋ํ ์ฒญ์ฌ์ง์ ๊ทธ๋ฆด ์ ์์ ๊ฒ์ ๋๋ค.
Terraform์ ๊ธฐ๋ณธ ์ดํด
Terraform์ ํ๋ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ์์ ์ค ์ถ์ ์ธ ์ญํ ์ ๋ด๋นํ๋ ๋๊ตฌ๋ก, ์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ์ ์ํ์ฌ ๊ด๋ฆฌํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ณผ์ ์์ Terraform์ ์ธํ๋ผ ๊ตฌ์ฑ ์์๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์ ์ํ๋๋ฐ ํ์ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๋ฅผ ์๊ตฌํ๋ฉฐ, ์ด๋ฅผ ํตํด ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ํจ์จ์ฑ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.


Terraform์ด๋ ๋ฌด์์ธ๊ฐ?
Terraform์ HashiCorp์์ ๊ฐ๋ฐํ ์คํ ์์ค ๋๊ตฌ๋ก, ์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ๊ด๋ฆฌํ ์ ์๋ ํ๋ซํผ์ ๋๋ค. ์ด๋ ๋ฌผ๋ฆฌ์ ์๋ฒ, ๊ฐ์ ๋จธ์ , ๋คํธ์ํน ์ฅ๋น, ๊ทธ๋ฆฌ๊ณ ๋ง์ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ํตํฉํ์ฌ ์ค์ ํ ์ ์๊ฒ ํฉ๋๋ค. ์ด ํด์ ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ์๋ ์์ฝ๊ฒ ์ธํ๋ผ ๊ตฌ์ฑ ์์์ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ์ด๋ ฅ ์ถ์ ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ ํ์ด AWS์์ ์๋ก์ด ๊ฐ์ ๋จธ์ ์ ๋ฐฐํฌํ๋ ค๋ฉด ์ ํต์ ์ผ๋ก ์์์ ์ผ๋ก ์ค์ ์ ํด์ผ ํ์ต๋๋ค. ํ์ง๋ง Terraform์ ํ์ฉํ๋ฉด, ๊ฐ๋ฐ์๋ ๊ฐ๋จํ ์ฝ๋๋ก ์ด ์์ ์ ์๋ํํ ์ ์์ผ๋ฉฐ, ์๋ก ๋ค๋ฅธ ํ์ด ์ผ๊ด๋๊ฒ ์ธํ๋ผ๋ฅผ ๋ฐฐํฌํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ก ์ธํด ์๊ฐ๊ณผ ๋น์ฉ ๋ชจ๋ ์ ๊ฐํ ์ ์์ต๋๋ค.
IaC(์ฝ๋๋ก์์ ์ธํ๋ผ) ๊ฐ๋
IaC๋ "Infrastructure as Code"์ ์ฝ์๋ก, ์ธํ๋ผ๋ฅผ ์ฝ๋์ ํํ๋ก ์ ์ํ๊ณ ๊ด๋ฆฌํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ด๊ฒ์ ์๋ํ์ ์ฌํ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ์๋์ผ๋ก ์ค์ ํ ํ์ ์์ด, ์์ค ์ฝ๋์ฒ๋ผ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์ด๋ฌํ ์ ๊ทผ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ์ผ๊ด์ฑ: ๋์ผํ ์ฝ๋๋ฅผ ๋ฐ๋ณตํด์ ์ฌ์ฉํ ์ ์์ด, ์ธํ๋ผ ๊ตฌ์ฑ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: ์ธํ๋ผ์ ๋ณํ๋ฅผ ์ฝ๋๋ก ์ถ์ ํ ์ ์์ด, ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋จํ ์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
- ํ์ : ์ฝ๋ ๊ธฐ๋ฐ์ ์ธํ๋ผ ๊ด๋ฆฌ๋ ์ฌ๋ฌ ํ ๊ฐ์ ํ์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํ ํ์ด ํด๋ผ์ฐ๋ ์ปดํจํ ํ๊ฒฝ์์ ์ค์ ํ ์ธํ๋ผ๋ฅผ ๋ค๋ฅธ ํ์ด ๋น ๋ฅด๊ฒ ์ฌํํ ์ ์๋ค๋ ๊ฒ์ ๋ฏธ๋ฆฌ ์ค๋น๋ ์ฝ๋ ๋๋ถ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด, ๊ฐ๋ฐ ์ฃผ๊ธฐ๊ฐ ๋จ์ถ๋๊ณ ์ธํ๋ผ์ ์์ ์ฑ๋ ๋์์ง๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ Terraform๊ณผ IaC๋ ํ๋ ํด๋ผ์ฐ๋ ์ธํ๋ผ์ ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌ์์ ํต์ฌ์ ์ธ ์์๋ก ์๋ฆฌ์ก๊ณ ์์ผ๋ฉฐ, ๊ฐ๋ ฅํ ๋๊ตฌ๋ก์์ ์์น๋ฅผ ํ๊ณ ํ ํ๊ณ ์์ต๋๋ค.
Terraform์ ๋์ ๊ธฐ๋ฅ ํ๊ตฌ
Terraform์ ํด๋ผ์ฐ๋ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์์ด ๋ ํนํ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ ์ค์์๋ ๋์ ๊ธฐ๋ฅ์ ๋งค์ฐ ์ค์ํ ์์์ ๋๋ค. ๋์ ๊ธฐ๋ฅ์ ํตํด ์ฌ์ฉ์๋ค์ ๋ฐ๋ณต์ ์ผ๋ก ๋ณํ๋ ํ๊ฒฝ์ด๋ ์๊ตฌ์ฌํญ์ ์ ์ํ ์ ์๋ flexibility ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์ด๋ ํนํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ด์ ์ด ์ปค์ง๋ฉฐ, ํจ์จ์ ์ธ ์์ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋์ ๋ธ๋ก์ ํ์ฉํ๋ฉด, ํ ํ๋ฆฟ ๊ตฌ์ฑ์ ํตํด ํ์ ๋ ์์์์ ๋ค์ํ ์ค์ ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์์ ๋์ ๊ธฐ๋ฅ์ Terraform์ ํต์ฌ์ด๋ฉฐ, ์ฌ์ฉ์๋ ์ด๋ฅผ ํตํด ๋ณต์ก์ฑ์ ์ค์ด๊ณ ๊ด๋ฆฌ์ ์ผ๊ด์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋์ ๊ธฐ๋ฅ์ Terraform์ ๋ฅ๋ ฅ์ ๊ทน๋ํํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋งฅ๊ณผ ๊ฐ๋ค.
๋์ ๋ธ๋ก์ ์ ์ ๋ฐ ํ์์ฑ
๋์ ๋ธ๋ก์ ์ฌ์ฉ์ ์ ์์ ์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ Terraform์ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋ฆฌ์์ค ๊ตฌ์ฑ์ ์งค ๋ ๋งค๋ฒ ๊ณ ์ ๋ ๊ฐ ๋์ ์กฐ๊ฑด์ด๋ ๋ฐ๋ณต์ ํตํด ๋์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋์ ๋ธ๋ก์ ํ์์ฑ์ ํนํ ๋๊ท๋ชจ ํด๋ผ์ฐ๋ ์ธํ๋ผ์์ ๋๋๋ฌ์ง๋๋ค. ์ฌ๋ฌ ํ๊ฒฝ์ด๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฆฌ์์ค๊ฐ ๋ฌ๋ผ์ง ์ ์๊ธฐ ๋๋ฌธ์, ๊ณ ์ ๋ ์ค์ ์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ฌ๊ฐํ๊ฒ ๋ญ๋นํ๊ฒ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ํ๊ฒฝ์์๋ ํ์ํ ์์ ์๊ฐ 5๊ฐ๋ผ๋ฉด, ๋ค๋ฅธ ํ๊ฒฝ์์๋ 10๊ฐ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ฐ ์ํฉ์์ ๋์ ๋ธ๋ก์ ์ฌ์ฉํ๋ฉด ์ด๋ฐ ์์น๋ฅผ ์ผ์ผ์ด ์๋์ผ๋ก ์ ๋ฐ์ดํธํ ํ์ ์์ด ์์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๊ฐ ์์์ ๋์ ์์ฑ ์๋ฆฌ
๊ฐ ์์์ ๋์ ์์ฑ์ Terraform์ด ํจ์จ์ ์ผ๋ก ๊ธฐ๋ฅํ๋ ๋ ๋ค๋ฅธ ์๋ฆฌ์ ๋๋ค. ์ด ๊ณผ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ๋ณต์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์์ฑํฉ๋๋ค. ๋๋ ๋ฉํ์ธ์๋ฅผ ํ์ฉํ์ฌ, ์ฌ์ฉ์๋ ๋ค์ํ ๋ฆฌ์์ค๋ฅผ ํ ๋ฒ์ ํ ํ๋ฆฟ ์ ์๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๋ฆฌ์ ์์ VM์ ๋ฐฐํฌํ ๋, ๊ฐ ๋ฆฌ์ ๋ง๋ค ๋ค๋ฅธ ์ค์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ด ๋, ๊ฐ ๋ฆฌ์ ์ ์ธ๋ถ ์ฌํญ์ ๋ฆฌ์คํธ๋ ๋งต์ผ๋ก ์ ์ธํ๊ณ , ์ด๋ฅผ ํตํด ํ์ํ VM์ ๋์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
hcl resource "aws_instance" "example" count = length(var.regions) ami = "ami-123456" instance_type = "t2.micro" availability_zone = element(var.regions, count.index)


์ ์ฝ๋์์ ์ ๋ ๋์ ์ผ๋ก ์ค์ ๋๋ ๋งค๊ฐ๋ณ์์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฅผ ํตํด ๋ค์ํ AMI์ ์ธ์คํด์ค ํ์ ์ ์ ์ฐํ๊ฒ ์กฐ์ ํ ์ ์์ด, ๊ฐ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์ต์ ํ๋ ์ค์ ์ ์ด๋์ด๋ผ ์ ์์ต๋๋ค.
๋ชจ๋ํ์ ๋์ ๋งค๊ฐ๋ณ์
๋ชจ๋ํ๋ Terraform์์ ์ฝ๋๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ฌ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋์ ๋งค๊ฐ๋ณ์์ ๊ฒฐํฉํ๋ฉด ์ฌ๋ฌ ๋ชจ๋์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ํจํด์ ์ฝ๊ฒ ์ ์ํ ์ ์์ด, ํจ์จ์ ์ธ ์ธํ๋ผ ๊ตฌ์ถ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ชจ๋ํ๋ ์ฝ๋๋ ํน์ ๊ธฐ๋ฅ์ด๋ ๊ตฌ์ฑ ์์์ ๋ฐ๋ผ ๋๋์ด์ ธ ์๊ธฐ ๋๋ฌธ์, ๊ฐ ๋ชจ๋์์ ์ฌ์ฉ ๋๋ ๋์ ๋งค๊ฐ๋ณ์๋ ์ฝ๋์ ์ ์ฐ์ฑ์ ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์ง์ญ์ ๊ฑธ์ณ ๋์ผํ ์๋น์ค์ ์ธํ๋ผ๋ฅผ ๋ฐฐํฌํ ๊ฒฝ์ฐ, ๋์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์ง์ญ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง์ถฐ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ ์ ์์ต๋๋ค:
- ์ฝ๋ ๊ฐ๊ฒฐ์ฑ ์ฆ๊ฐ: ๋ชจ๋ํ๋ฅผ ํตํด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๊ณ , ๊ฐ ๋ชจ๋์ ๋ณ๊ฒฝ์ ์ ์ฒด ์์คํ ์ ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ์ ์ฐํ ๋์: ๋์ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ํน์ ๋ฆฌ์์ค์ ์ค์ ์ ๋ฐ๊ฟ๋ ์ ์ฒด ์ฝ๋ ๊ตฌ์กฐ๋ ์ ์ง๋ฉ๋๋ค. ์ด๋ ํนํ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ค์ ์ ์ ์ฉํฉ๋๋ค.
๊ฒฐ๊ตญ ๋์ ๋งค๊ฐ๋ณ์์ ๋ชจ๋ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ฉด, Terraform ์ฌ์ฉ์๋ค์ ๊ธฐ๋ฏผํ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค. \n
ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋์์์ด ๋ณํํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ด๋ฐ ๋ณํ์ ๋ฏธ๋ฆฌ ๋๋นํด์ผ ํ๋ฉฐ, ๋์ ๋งค๊ฐ๋ณ์๋ ๊ทธ ํด๊ฒฐ์ ์ด์ ๊ฐ ๋ ์ ์์ต๋๋ค.
Terraform Dynamic์ ์ฌ๋ก ์ฐ๊ตฌ
Terraform Dynamic์ ์ฌ๋ก ์ฐ๊ตฌ๋ ์ด ๊ธฐ์ ์ ์ค์ ์ ์ฉ์ ํตํด ์ฌ์ฉ์๊ฐ ์ป์ ์ ์๋ ์ ๊ตํจ๊ณผ ์ ์ฐ์ฑ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฌํ ์ฌ๋ก๋ค์ Terraform์ด ์ด๋ป๊ฒ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๊ณ ๋ณต์กํ ํ๊ฒฝ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์๋์ง๋ฅผ ๋ฐํ ์ค๋๋ค. ํนํ, ์ฑ๊ณต์ ์ธ ๋์ ๊ด๋ฆฌ ์ฌ๋ก์ ์คํจ ์ฌ๋ก์ ๋ถ์์ ํฌํจํ๋ ๊ฒ์ Terraform Dynamic์ ์ดํด๋ฅผ ๋๊ณ , ์ด๋ฅผ ํตํด ์ป์ ์ ์๋ ์ด์ ๋ฟ๋ง ์๋๋ผ ๊ณ ๋ คํด์ผ ํ ์ฌํญ๋ค์ ์ ์ํฉ๋๋ค.
์ฑ๊ณต์ ์ธ ๋์ ๊ด๋ฆฌ ์ฌ๋ก
์ฑ๊ณต์ ์ธ ์ฌ๋ก๋ Terraform Dynamic์ด ์ด๋ป๊ฒ ๋ค์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋์ง๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ณค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ ๋ํ ํด๋ผ์ฐ๋ ์๋น์ค ์ ๊ณต์ ์ฒด๋ Terraform์ ํ์ฉํ์ฌ ์ฌ๋ฌ ์ง์ญ์ ๊ฑธ์ณ ์์์ ํจ์จ์ ์ผ๋ก ๋ฐฐํฌํ๋ ๋ฐ ์ฑ๊ณตํ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ๋์ ๋ธ๋ก์ ํ์ฉํ์ฌ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ์์ฑํจ์ผ๋ก์จ ๊ด๋ฆฌ์๋ ์์์ ์ผ๋ก ์งํํด์ผ ํ ์ฌ๋ฌ ๊ณผ์ ์ ์๋ตํ ์ ์์์ต๋๋ค.
๋ค์์ ์ด ์ฑ๊ณต ์ฌ๋ก์์ ๋์ถ๋ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ๋๋ค:
- ์๋ํ๋ ๋ฆฌ์์ค ํ ๋น: ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ํ๋ก๋น์ ๋ํจ์ผ๋ก์จ ์๊ฐ๊ณผ ์ธ๋ ฅ์ ์ ์ฝํ ์ ์์์ต๋๋ค.
- ๋ณด๋ค ๋์ ๊ด๋ฆฌ ํจ์จ์ฑ: ์ฝ๋๋ก์์ ์ธํ๋ผ(IaC) ๋ฐฉ์์ ํตํด ์ธํ๋ผ ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ ์ ์์์ต๋๋ค.
- ๋น์ฉ ์ ๊ฐ: ๋ถํ์ํ ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ์ค์์ผ๋ก์จ ์ด์ ๋น์ฉ์ ์ ๊ฐํ ์ ์์์ต๋๋ค.
์ด๋ฌํ ์ฑ๊ณต์ ์ธ ์ฌ๋ก๋ค์ Terraform Dynamic์ด ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ์ ํ์ ์ ๊ธฐ์ฌ๋ฅผ ํ ์ ์์์ ์ ์ฆํฉ๋๋ค.
์คํจ ์ฌ๋ก๋ก๋ถํฐ์ ๊ตํ
๋ฐ๋๋ก, ์คํจ ์ฌ๋ก๋ ๊ฐ๋ฐ์์ ๊ด๋ฆฌ์๋ค์๊ฒ ์ค์ํ ๊ตํ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๊ธฐ์ ์์๋ Terraform Dynamic์ ๋์ ํ ํ ์์์น ๋ชปํ ๋ฆฌ์์ค ๊ณผ์๋น ๋ฌธ์ ์ ์ง๋ฉดํ์์ต๋๋ค. ์ด๋ค์ ๋์ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ชป ์ค์ ํ์ฌ ํ๊ฒฝ์ ๋ถํ์ํ๊ฒ ๋ง์ ์์์ด ํ ๋น๋์๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์ ๋น์ฉ์ด ๋ฐ์ํ๊ฒ ๋์์ต๋๋ค.
์ด๋ฌํ ์คํจ ์ฌ๋ก๋ก๋ถํฐ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ์ง ๊ตํ์ ์ป์ ์ ์์ต๋๋ค:
- ์ ํํ ์ค์ ์ ์ค์์ฑ: ๋ชจ๋ ๋์ ๋งค๊ฐ๋ณ์ ๋ฐ ๋ธ๋ก ์ค์ ์ ์ ์คํ ๊ฒํ ํด์ผ ํ๋ฉฐ, ๋ค์ํ ์ ๋๋ฆฌ์ค์์์ ์ํฅ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ํ ์คํธ ๋ฐ ๊ฒ์ฆ์ ํ์์ฑ: ์ธํ๋ผ๋ฅผ ๋์ ํ๊ธฐ ์ ์ ์ํ์ฐฉ์ค ๊ณผ์ ์ ๊ฑฐ์ณ ์ถฉ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
- ๋ฌธ์ํ ๋ฐ ์ปค๋ฎค๋์ผ์ด์ : ํ์ ๊ฐ์ ์ํํ ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ๋ฌธ์ํ๋ ํฅํ ๋ฌธ์ ๋ฐ์์ ์๋ฐฉํ ์ ์์ต๋๋ค.
์ฌ๋ก ์ฐ๊ตฌ๋ Terraform Dynamic์ ๊ฐ์น๋ฅผ ๊ทน๋ํํ๊ธฐ ์ํ ๊ธธ์ก์ด ์ญํ ์ ํ๋ฉฐ, ์ด๋ฌํ ์ฑ๊ณต๊ณผ ์คํจ๋ฅผ ํตํด ์ป์ ํต์ฐฐ์ ๋์ด์๋ ๊ฒ ์ด์์ ์ค์ํ ๊ตํ์ ๋๋ค.
Terraform Dynamic์ ์ฅ์


Terraform Dynamic์ ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ์์ ์ ์ฐ์ฑ๊ณผ ํจ์จ์ฑ์ ๊ทน๋ํํ๋ ๋ฐ ๊ธฐ์ฌํ๋ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค. ์ด ๋๊ตฌ๋ ๋ณต์กํ ํ๊ฒฝ์์์ ์์ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๊ณ , ํนํ ๋ค์ํ ๋ฆฌ์์ค ์๊ตฌ ์ฌํญ์ ์ ์ํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ์ด๋ฅผ ํตํด ์ป์ ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ์ด์ ์ ์ดํด๋ณด๋ ๊ฒ์ ์ค์ํฉ๋๋ค.
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ์ ์ฐ์ฑ
Terraform Dynamic์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ์ ์ฐ์ฑ์ ๋์ด๋ ๋ฐ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ ๋ธ๋ก์ ํ์ฉํ๋ฉด ์ฌ์ฉ์๋ ์ธํ๋ผ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ณ๋์ฑ์ด ํฐ ํด๋ผ์ฐ๋ ์๋น์ค ํ๊ฒฝ์์ ์์ ํ ๋น์ ์ต์ ํํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๋ง์ถคํ ๋ฆฌ์์ค ์ค์ : ๊ฐ ํ๋ก์ ํธ ์๊ตฌ์ ๋ง์ถฐ ์์์ ์กฐ์ ํ ์ ์๊ฒ ํด์ฃผ์ด ์ ์ฐํ ๋์ฒ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ค์ํ ๋ฆฌ์์ค ์ ํ ์ง์: ์ฌ๋ฌ ํด๋ผ์ฐ๋ ์ ๊ณต์์์ ํธํ์ฑ์ ํตํด ๋ค์ํ ๋ฆฌ์์ค๋ฅผ ํตํฉ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ์ฐ์ฑ์ ํนํ ์์์น ๋ชปํ ํธ๋ํฝ ์ฆ๊ฐ๋ ๋ฆฌ์์ค ๋ณํ์ ๋ฐ๋ก ์ ์ํด์ผ ํ ๋ ์ ๋ฆฌํฉ๋๋ค. ๊ธฐ์กด์ ์๋์ ๊ด๋ฆฌ ๋ฐฉ๋ฒ๊ณผ ๋ฌ๋ฆฌ, Terraform Dynamic์ ์ฌ์ฉํ๋ฉด ๋น ๋ฅด๊ฒ ํ๊ฒฝ์ ์ฌ๊ตฌ์ฑํ๊ณ ์ค์๊ฐ์ผ๋ก ๋์ํ ์ ์๋ ๋ฅ๋ ฅ์ด ๋ฐฐ๊ฐ๋ฉ๋๋ค.
๋ณต์ก์ฑ ๊ด๋ฆฌ์ ์ฉ์ดํจ
Terraform Dynamic์ ๋ณต์กํ ์ธํ๋ผ ํ๊ฒฝ์ ๊ด๋ฆฌํ๋ ๊ณผ์ ์ ๋จ์ํํ๋ ๋ฐ ๋ง์ ๋์์ ์ค๋๋ค. ์๋ง์ ๋ฆฌ์์ค์ ์ค์ ์ด ์ฝํ ์์ ๋, ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๊ธฐ ๋ง๋ จ์ ๋๋ค. ๊ทธ๋ฌ๋ Terraform์ ๋์ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ฉด ์ด๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋์ ๋งค๊ฐ๋ณ์ ํ์ฉ: ์ฌ์ฉ์๊ฐ ํ์ํ ๋๋ง๋ค ์๋์ผ๋ก ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋๋ก ์ค์ ํ ์ ์์ด, ๋ฐ๋ณต์ ์ธ ์์ ์ด ์ค์ด๋ญ๋๋ค.
- ๋ชจ๋ํ: ๋ณต์กํ ์ธํ๋ผ๋ฅผ ๋ชจ๋๋ก ๋๋์ด ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ช ํํ๊ณ ์ง๊ด์ ์ผ๋ก ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, Terraform Dynamic์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ ์ฝํ ๋ฟ๋ง ์๋๋ผ ์ค๋ฅ๋ฅผ ๊ฐ์์ํค๊ณ ์ธํ๋ผ์ ํฌ๋ช ์ฑ์ ๋์ฌ์ค๋๋ค.
โ๋ณต์กํจ์ ๋จ์ํ๊ฒ ๋ง๋๋ ๊ฒ, ๊ทธ๊ฒ์ด Terraform์ ์ง์ ํ ๊ฐ์น์ ๋๋ค.โ
๊ฒฐ๋ก ์ ์ผ๋ก, ์ด๋ฌํ ์ฅ์ ๋ค์ Terraform Dynamic์ด ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ด๋ฆฌ ๋ถ์ผ์์ ์ ์ค์ํ ๋๊ตฌ์ธ์ง ๋ค์ ํ๋ฒ ์ ์ฆํฉ๋๋ค. ํ์ ์ ์ธ ๊ธฐ๋ฅ์ ํตํด ์ฌ์ฉ์์๊ฒ ํฅ์๋ ์ ์ฐ์ฑ๊ณผ ๊ด๋ฆฌ ๋ฅ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
์ค์ต: Terraform Dynamic ์ค์ ํ๊ธฐ
Terraform Dynamic์ ์ค์ ํ๋ ๊ณผ์ ์ ๋จ์ํ ๋๊ตฌ๋ฅผ ์ค์นํ๋ ๊ฒ ์ด์์ ์๋ฏธ๋ฅผ ์ง๋๊ณ ์์ต๋๋ค. ์ด ์ฃผ์ ๋ ์ค์ ํ๊ฒฝ์์ ์ด๋ป๊ฒ ๋์ ์์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ์ฌ ํด๋ผ์ฐ๋ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ ์ ์๋์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์ค์ํฉ๋๋ค. ๋์ ์ค์ ์ ์ธํ๋ผ์ ์ ์ฐ์ฑ์ ํฅ์์ํค๊ณ , ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ฉฐ, ์ ์ง๋ณด์์ ํจ์จ์ฑ์ ๊ทน๋ํํฉ๋๋ค. ์ด ์น์ ์์๋ ์ค์น ๋ฐ ์ด๊ธฐ ์ค์ , ๊ทธ๋ฆฌ๊ณ ๋์ ์์์ ์์ฑ ๊ณผ์ ์ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ค์น ๋ฐ ์ด๊ธฐ ์ค์
Terraform์ ์ค์นํ๊ธฐ ์ , ๋ช ๊ฐ์ง ์ ์ ์กฐ๊ฑด์ด ํ์ํฉ๋๋ค. ๋จผ์ , ์ด์ ์ฒด์ ์ ๋ง๋ Terraform ๋ฒ์ ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ๊ฐ ์ด์ ์ฒด์ ๋ณ ๋ค์ด๋ก๋ ๋งํฌ๋ HashiCorp ๊ณต์ ์น์ฌ์ดํธ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ค์น๊ฐ ์๋ฃ๋๋ฉด, ๋ช ๋ น์ด ๋ผ์ธ์์ ๋ฅผ ์ ๋ ฅํ์ฌ ์ฌ๋งํ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํฉ๋๋ค. ์ค์น๊ฐ ์ ๋์๋ค๋ฉด, Terraform์ ๋ฒ์ ์ ๋ณด๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. ์ด ์์ง๋ง ์ค์ํ ์ฒซ๊ฑธ์์ ์ฌ๋ฌ๋ถ์ ํ๊ฒฝ์ด ์ ์์ ์ผ๋ก ์ธํ ๋์์์ ๋ณด์ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๋ฌ๋ถ์ ์์คํ ์ Terraform์ ์ค์นํ๊ธฐ ์ํด์ , ์๋์ ๊ฐ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅผ ์ ์์ต๋๋ค:
- HashiCorp ๊ณต์ ์น์ฌ์ดํธ ๋ฐฉ๋ฌธ
- ์ด์ ์ฒด์ ์ ๋ง๋ ์ ์ ํ ๋ฒ์ ๋ค์ด๋ก๋
- ํ์ผ์ ์์ถ ํด์ ํ๊ณ , ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํ ๊ฐ๋ฅํ ๊ฒฝ๋ก์ ์ด๋
- ํฐ๋ฏธ๋์ ์ด๊ณ , ๋ช ๋ น์ด ์ ๋ ฅ
์ด์ ๊ธฐ๋ณธ์ ์ธ ์ค์น๊ฐ ์๋ฃ๋์์ผ๋, Terraform์ ์ฌ์ฉํ์ฌ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์ด๊ธฐ ์ค์ ์ ์งํํด์ผ ํฉ๋๋ค. ์ด๊ธฐ ํ๋ก์ ํธ ์ค์ ์ ๋ณดํต ๋ผ๋ ํ์ผ์ Terraform ๊ตฌ์ฑ ์์๋ฅผ ์ ์ํ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋์ ์์์ ์์ฑ ๊ณผ์
๋์ ์์๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ Terraform์ ์ง์ ํ ํ์ ๋ณด์ฌ์ค๋๋ค. Terraform์ ๋์ ๋ธ๋ก์ ๋ฐ๋ณต์ ์ด๊ณ ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ์ค์ฌ์ค๋๋ค. ์ด๋ฅผ ํตํด ์ ์ง ๋ณด์์ฑ์ ๋์ด๊ณ , ์ค์ ์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋์ ์์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฒซ์งธ๋ก ๋ธ๋ก์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, AWS์์ EC2 ์ธ์คํด์ค๋ฅผ ์ค์ ํ๋ ค๊ณ ํ ๋, ์ฌ๋ฌ ์ธ์คํด์ค ์ต์ ์ ๋์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์๋์ ์์๋ ์ธ์คํด์ค ์ ํ์ ๋ฐ๋ผ ๋ค์ํ ์ธ์คํด์ค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค:
hcl resource "aws_instance" "example" count = var.instance_count ami = var.instance_ami instance_type = dynamic for_each = var.instance_types content type = each.value