๋ง์ ์ฌ๋๋ค์ด ์ผ์ ์ ๋ฌด์์ Terraform์ ์๊ณ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ด์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก๋ ์์ง ํ์ฑ๋์ง ์์์ต๋๋ค. ๊ฐ ํ์ ๊ณ ์ ํ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋ฐฉ๋ฒ์ ๊ณ ์ํด์ผ ํฉ๋๋ค.
๊ทํ์ ์ธํ๋ผ๋ ๊ฑฐ์ ํ์คํ๊ฒ ๋ช ๊ฐ์ง ๋ฆฌ์์ค + ๋ช ๋ช ์ ๊ฐ๋ฐ์๋ก ๊ฐ๋จํ๊ฒ ์์๋ฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ์ฑ์ฅํฉ๋๋ค. ๋ฆฌ์์ค๋ฅผ Terraform ๋ชจ๋๋ก ๊ทธ๋ฃนํํ๊ณ , ์ฝ๋๋ฅผ ํด๋๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ ๋ฑ ๋ฌด์์ด ์๋ชป๋ ์ ์๋์ง ์ฐพ์ผ์ญ๋๊น? (์ ๋ช ํ ๋ง์ง๋ง ๋ง)
์๊ฐ์ด ํ๋ฅด๊ณ ์ธํ๋ผ๊ฐ ์๋ก์ด ์ ์๋๋ฌผ์ฒ๋ผ ๋๊ปด์ง์ง๋ง, ๊ทธ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ธํ๋ผ์ ์ค๋ช ํ ์ ์๋ ๋ณํ์ ๋ํด ๊ฑฑ์ ํ๊ณ , ์ธํ๋ผ์ ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ๋ ๊ฒ์ ๋๋ ค์ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ก์ด ๊ธฐ๋ฅ์ด ์ง์ฐ๋๊ฑฐ๋ ํ์ง์ด ์ ํ๋ฉ๋๋ค...
XNUMX๋ ๋์ Github์์ AWS์ฉ Terraform ์ปค๋ฎค๋ํฐ ๋ชจ๋ ๋ชจ์์ ๊ด๋ฆฌํ๊ณ ํ๋ก๋์ ์์ Terraform์ ์ฅ๊ธฐ์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌํ ํ Anton Babenko๋ ์์ ์ ๊ฒฝํ์ ๊ณต์ ํ ์ค๋น๊ฐ ๋์์ต๋๋ค. ๋ฏธ๋์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ก TF ๋ชจ๋์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ฐ์ฐ์ด ๋๋๋ฉด ์ฐธ๊ฐ์๋ค์ Terraform์ ๋ฆฌ์์ค ๊ด๋ฆฌ ์์น, Terraform์ ๋ชจ๋๊ณผ ๊ด๋ จ๋ ๋ชจ๋ฒ ์ฌ๋ก, ์ธํ๋ผ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ์ง์์ ์ธ ํตํฉ ์์น์ ๋ ์ต์ํด์ง ๊ฒ์ ๋๋ค.
๋ถ์ธ ์ฑ๋ช : ์ด ๋ณด๊ณ ์์ ๋ ์ง๋ 2018๋ 2์๋ก, ๋ฒ์จ 0.11๋ ์ด ์ง๋ฌ์ต๋๋ค. ๋ณด๊ณ ์์์ ๋ ผ์๋ Terraform 2 ๋ฒ์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค. ์ง๋ 2๋ ๋์ ๋ง์ ํ์ , ๊ฐ์ ๋ฐ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋ XNUMX๊ฐ์ ์ ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋์์ต๋๋ค. ์ด์ ์ฃผ์ํ์๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์๊ธฐ ๋ฐ๋๋๋ค.
๋งํฌ :
ํ ๋ผํผ ์ปค๋ฎค๋ํฐ ๋ชจ๋ +Terraform-aws-๋ชจ๋ antonbabenko/pre-commit-terraform โ ์๋ ์์ ์ง์ ์ฝ๋ ๋ฐ ๋ฌธ์์ํค๋ฐ๋ฒค์ฝ/ํ ๋ผํ โ Terraform ๋ชจ๋ ์์ฑ๊ธฐ(WIP)antonbabenko/modules.tf-lambda โ ์๊ฐ์ ๋ค์ด์ด๊ทธ๋จ(WIP)์ Terraform ์ฝ๋ ์์ฑ๊ธฐ- www.terraform-best-practices.com
Medium.com/@anton.babenko (์ ๊ฒ์๋ฌผ์ ๋ด ๊ฐ์ธ ์น์ฌ์ดํธ www.antonbabenko.com/์ ์์ต๋๋ค.)- @antonbabenko - Twitter ๋ฐ ๋ค์ํ Slacks
์ ์ด๋ฆ์ ์ํค ๋ฐ๋ฒค์ฝ์ ๋๋ค. ์ฌ๋ฌ๋ถ ์ค ์ผ๋ถ๋ ์ ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ ๊ฒ์ ๋๋ค. ๋๋ ํต๊ณ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๊ทธ ์ด๋ ๋๋ณด๋ค ๋ ์์ ์๊ฒ ์ด์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
์ ๋ Terraform์์ ์ผํ๊ณ ์์ผ๋ฉฐ 2015๋ ๋ถํฐ Terraform ๋ฐ Amazon๊ณผ ๊ด๋ จ๋ ์๋ง์ ์คํ ์์ค ํ๋ก์ ํธ์ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํ๊ณ ๊ธฐ์ฌํด ์์ต๋๋ค.
๊ทธ ์ดํ๋ก ๋๋ ํฅ๋ฏธ๋ก์ด ๋ฐฉ์์ผ๋ก ํํํ๊ธฐ์ ์ถฉ๋ถํ ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ง๊ธ ์ด๊ฒ์ ๋ํด ๋น์ ์๊ฒ ๋งํ๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค.
Terraform ์์ ์ ๋ณต์ก์ฑ๊ณผ ์ธ๋ถ ์ฌํญ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ค์ ๋ก HighLoad์ ์ฃผ์ ๊ฐ ์๋๋๋ค. ์ด์ ๊ทธ ์ด์ ๋ฅผ ์ดํดํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์๊ฐ์ด ์ง๋๋ฉด์ ๋๋ Terraform ๋ชจ๋์ ์์ฑํ๊ธฐ ์์ํ์ต๋๋ค. ์ฌ์ฉ์๋ค์ด ์ง๋ฌธ์ ์์ฑํ๊ณ , ์ ๊ฐ ๋ค์ ์์ฑํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ์ ์ปค๋ฐ ํํฌ ๋ฑ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ํ์์ ์ง์ ํ๋ ๋ค์ํ ์ ํธ๋ฆฌํฐ๋ฅผ ์์ฑํ์ต๋๋ค.
ํฅ๋ฏธ๋ก์ด ํ๋ก์ ํธ๊ฐ ๋ง์์ต๋๋ค. ์ ๋ ์ปดํจํฐ๊ฐ ์ ์ ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํด ์ ์ ๋ ๋ง์ ์์ ์ ์ํํ๋ ๊ฒ์ ์ข์ํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์์ฑ์ ์ข์ํฉ๋๋ค. ๊ทธ๋์ ํ์ฌ ์๊ฐ์ ๋ค์ด์ด๊ทธ๋จ์์ Terraform ์ฝ๋ ์์ฑ๊ธฐ๋ฅผ ์์ ํ๊ณ ์์ต๋๋ค. ์๋ง๋ ์ฌ๋ฌ๋ถ ์ค ์ผ๋ถ๋ ๊ทธ๊ฒ์ ๋ณธ ์ ์ด ์์ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ํ์ดํ๊ฐ ์๋ ์๋ฆ๋ค์ด ์์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ "๋ด๋ณด๋ด๊ธฐ" ๋ฒํผ์ ํด๋ฆญํด์ ๋ชจ๋ ์ฝ๋๋ก ์ป์ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ ๊ฐ์์.
์ ๋ ์ฐํฌ๋ผ์ด๋ ์ถ์ ์ด์์. ๋๋ ์๋ ๋์ ๋ ธ๋ฅด์จ์ด์ ์ด์์ต๋๋ค.
๋ํ ๋ณธ ๋ณด๊ณ ์์ ์ ๋ณด๋ ๋ด ์ด๋ฆ์ ์๊ณ ์์ ๋คํธ์ํฌ์์ ๋๋ฅผ ์ฐพ์์ค ์ฌ๋๋ค๋ก๋ถํฐ ์์ง๋์์ต๋๋ค. ๋๋ ๊ฑฐ์ ํญ์ ๊ฐ์ ๋ณ๋ช ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์์ ์ธ๊ธํ๋ฏ์ด ์ ๋ Terraform AWS ๋ชจ๋์ ์ฃผ์ ๊ด๋ฆฌ์์ ๋๋ค. ์ด ๋ชจ๋์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์์ (VPC, Autoscaling, RDS)์ ์ํ ๋ชจ๋์ ํธ์คํ ํ๋ GitHub์ ๊ฐ์ฅ ํฐ ์ ์ฅ์ ์ค ํ๋์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ง๊ธ ๋ค์ ๊ฒ์ด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ ๋๋ค. Terraform์ด ๋ฌด์์ธ์ง ์ดํดํ๊ณ ์๋์ง ์์ฌ์ค๋ฌ์ฐ๋ฉด ๋ค๋ฅธ ๊ณณ์์ ์๊ฐ์ ๋ณด๋ด๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ง์ ๊ธฐ์ ์ฉ์ด๊ฐ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ฃผ์ ํ์ง ์๊ณ ๋ณด๊ณ ์์ ์์ค์ด ์ต๊ณ ๋ผ๊ณ ์ ์ธํ์ต๋๋ค. ์ด๋ ๋ง์ ์ค๋ช ์์ด๋ ๊ฐ๋ฅํ ๋ชจ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋งํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
Terraform์ 2014๋ ์ ์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ์์ฑ, ๊ณํ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ ์ ํธ๋ฆฌํฐ๋ก ๋ฑ์ฅํ์ต๋๋ค. ์ฌ๊ธฐ์ ํต์ฌ ๊ฐ๋ ์ "์ฝ๋๋ก์์ ์ธํ๋ผ"์ ๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด ๋ชจ๋ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋์์ต๋๋ค.
์ด๋ ๋จผ์ ๋ช ๊ฐ์ง ๋ณ์๋ฅผ ์ ์ํ๋ ์ผ๋ฐ Terraform ๊ตฌ์ฑ ํ์ผ์ ๋ชจ์ต์ ๋๋ค.
์ด ๊ฒฝ์ฐ "aws_region"์ ์ ์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ด๋ค ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ ์ถ์์ง ์ค๋ช ํฉ๋๋ค.
์ข ์์ฑ ๋ฐ ๊ณต๊ธ์๋ฅผ ๋ก๋ํ๊ธฐ ์ํด ์ผ๋ถ ๋ช ๋ น, ํนํ "terraform init"์ ์คํํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ง์ ๋ ๊ตฌ์ฑ์ด ์ฐ๋ฆฌ๊ฐ ์์ฑํ ๋ฆฌ์์ค์ ์ผ์นํ๋์ง ํ์ธํ๊ธฐ ์ํด โterraform applyโ ๋ช ๋ น์ ์คํํฉ๋๋ค. ์ด์ ์ ์๋ฌด๊ฒ๋ ์์ฑํ์ง ์์์ผ๋ฏ๋ก Terraform์์๋ ์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํ์ธํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ seasnail์ด๋ผ๋ ๋ฒํท์ ๋ง๋ญ๋๋ค.
์ ์ฌํ ์ ํธ๋ฆฌํฐ๋ ์ฌ๋ฌ ๊ฐ ์์ต๋๋ค. Amazon์ ์ฌ์ฉํ๋ ๋ง์ ๋ถ๋ค์ AWS CloudFormation์ด๋ Google Cloud ๋ฐฐํฌ ๊ด๋ฆฌ์ ๋๋ Azure Resource Manager๋ฅผ ์๊ณ ๊ณ์ญ๋๋ค. ๊ฐ๊ฐ์ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ์ ๊ณต์ ๋ด์์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ์ข
์ ์์ฒด ๊ตฌํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. Terraform์ ์ฌ์ฉํ๋ฉด 100๊ฐ ์ด์์ ๊ณต๊ธ์๋ฅผ ๊ด๋ฆฌํ ์ ์์ผ๋ฏ๋ก ํนํ ์ ์ฉํฉ๋๋ค. (์์ธํ ๋ด์ฉ์
Terraform์ด ์ฒ์๋ถํฐ ์ถ๊ตฌํ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Terraform์ ๋ฆฌ์์ค์ ๋ํ ๋จ์ผ ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ชจ๋ ์ต์ ํ๋ซํผ์ ์ง์ํ ์ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ Terraform์ ์ฒ์๋ถํฐ ์ธํ๋ผ๋ฅผ ์์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ ์ ํธ๋ฆฌํฐ๋ก ์ค๊ณ๋์์ต๋๋ค.
2014๋ ์๋ ์ด๋ฌํ ๋งฅ๋ฝ์์ โ์์ธก ๊ฐ๋ฅโ์ด๋ผ๋ ๋จ์ด๊ฐ ๋งค์ฐ ์ด์ํ๊ฒ ๋ค๋ ธ์ต๋๋ค.
Terraform์ ๋ฒ์ฉ ์ ํธ๋ฆฌํฐ์ ๋๋ค. API๊ฐ ์์ผ๋ฉด ๋ชจ๋ ๊ฒ์ ์๋ฒฝํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
- 120๊ฐ ์ด์์ ์ ๊ณต์ ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์ํ๋ ๋ชจ๋ ๊ฒ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด Terraform์ ์ฌ์ฉํ์ฌ GitHub ์ ์ฅ์์ ๋ํ ์ก์ธ์ค๋ฅผ ์ค๋ช ํ ์ ์์ต๋๋ค.
- Jira์์ ๋ฒ๊ทธ๋ฅผ ์์ฑํ๊ณ ๋ซ์ ์๋ ์์ต๋๋ค.
- New Relic ์งํ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ ๋ง๋ก ์ํ๋ค๋ฉด ๋๋กญ๋ฐ์ค์์ ํ์ผ์ ์์ฑํ ์๋ ์์ต๋๋ค.
์ด๋ ๋ชจ๋ Go์์ ์ค๋ช ํ ์ ์๋ ๊ฐ๋ฐฉํ API๊ฐ ์๋ Terraform ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌ์ฑ๋ฉ๋๋ค.
์ด์ ์ฌ๋ผ์ด๋์์ ๋ณด์ฌ๋๋ฆฐ ๊ฒ์ฒ๋ผ Terraform์ ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ , ์ฌ์ดํธ์์ ์ผ๋ถ ๋ฌธ์๋ฅผ ์ฝ๊ณ , ๋น๋์ค๋ฅผ ๋ณด๊ณ , main.tf๋ฅผ ์์ฑํ๊ธฐ ์์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ํ๋ฅญํฉ๋๋ค. VPC๋ฅผ ์์ฑํ๋ ํ์ผ์ด ์์ต๋๋ค.
VPC๋ฅผ ์์ฑํ๋ ค๋ฉด ๋๋ต ๋ค์๊ณผ ๊ฐ์ 12๊ฐ ๋ผ์ธ์ ์ง์ ํฉ๋๋ค. ์์ฑํ๋ ค๋ ์ง์ญ๊ณผ ์ฌ์ฉํ IP ์ฃผ์์ cidr_block์ ์ค๋ช ํฉ๋๋ค. ๊ทธ๊ฒ ๋ค์ผ.
๋น์ฐํ ํ๋ก์ ํธ๋ ์ ์ง์ ์ผ๋ก ์ฑ์ฅํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฆฌ์์ค, ๋ฐ์ดํฐ ์์ค, ์๋ก์ด ๊ณต๊ธ์์ ํตํฉ, ๊ฐ์๊ธฐ Terraform์ ์ฌ์ฉํ์ฌ GitHub ๊ณ์ ์ ์ฌ์ฉ์๋ฅผ ๊ด๋ฆฌํ๋ ค๋ ๋ฑ ๋ง์ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ๊ฒ ๋ฉ๋๋ค. ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๊ณ ์ถ์ ์๋ ์์ต๋๋ค. DNS ๊ณต๊ธ์๋ ๋ชจ๋ ๊ฒ์ ๊ต์ฐจํฉ๋๋ค. Terraform์ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
๋ค์ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
VPC์ ๋ฆฌ์์ค๊ฐ ์ธํฐ๋ท์ ์ก์ธ์คํ ์ ์๋๋ก ํ๊ธฐ ์ํด internet_gateway๋ฅผ ์ ์ฐจ์ ์ผ๋ก ์ถ๊ฐํฉ๋๋ค. ์ด๊ฒ์ ์ข์ ์๊ฐ์ ๋๋ค.
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
main.tf์ ์๋จ ๋ถ๋ถ์ ๋๋ค.
main.tf์ ํ๋จ ๋ถ๋ถ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์๋ธ๋ท์ ์ถ๊ฐํฉ๋๋ค. NAT ๊ฒ์ดํธ์จ์ด, ๊ฒฝ๋ก, ๋ผ์ฐํ ํ ์ด๋ธ ๋ฐ ๊ธฐํ ์ฌ๋ฌ ์๋ธ๋ท์ ์ถ๊ฐํ๋ ค๋ ์์ ์๋ 38๊ฐ ํ์ ์ด ์๋๋ผ ๋๋ต 200-300๊ฐ ํ์ ์ด ์๊ฒ ๋ฉ๋๋ค.
์ฆ, main.tf ํ์ผ์ด ์ ์ฐจ ์ปค์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ ๋ชจ๋ ๊ฒ์ ํ๋์ ํ์ผ์ ์ ์ฅํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. 10-20Kb๊ฐ main.tf์ ๋ํ๋ฉ๋๋ค. 10-20Kb๊ฐ ํ ์คํธ ์ฝํ ์ธ ๋ผ๊ณ ์์ํด ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ ๋ชจ๋ ๊ฒ๊ณผ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ์ ์ฐจ์ ์ผ๋ก ์์ ํ๊ธฐ๊ฐ ์ด๋ ค์์ง๊ณ ์์ต๋๋ค. 10-20Kb๊ฐ ์ข์ ์ฌ์ฉ์ ์ฌ๋ก์ด๋ฉฐ ๋๋ก๋ ๊ทธ ์ด์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ ์ด๊ฒ์ด ํญ์ ๋์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ฝ๋ํ ์ธํ๋ผ๊ฐ ์๋ ์ผ๋ฐ ํ๋ก๊ทธ๋๋ฐ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๋ฆฌ๋ ๋ค์ํ ํด๋์ค, ํจํค์ง, ๋ชจ๋, ๊ทธ๋ฃนํ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ต์ํฉ๋๋ค. Terraform์ ์ฌ์ฉํ๋ฉด ๊ฑฐ์ ๋์ผํ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
- ์ฝ๋๊ฐ ๋์ด๋๊ณ ์์ต๋๋ค.
- ๋ฆฌ์์ค ๊ฐ์ ์ข ์์ฑ๋ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์๊ฒ๋ ์ ๋ง ํฐ ๋์์ด ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ์ด์ ์ด๋ ๊ฒ ์ด ์ ์๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ์ฐ๋ฆฌ์ ์ฝ๋๋ ๊ฑฐ๋ํด์ง๊ณ ์์ต๋๋ค. ๋ฌผ๋ก 10-20Kb๋ ๊ทธ๋ค์ง ๊ด๋ํ์ง๋ ์์ง๋ง ๋คํธ์ํฌ ์คํ์ ๋ํด์๋ง ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ์ฆ, ๋คํธ์ํฌ ๋ฆฌ์์ค๋ง ์ถ๊ฐํ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ 100Kb๋ฅผ ์ฝ๊ฒ ์ฎ์ ์ ์๋ Application Load Balancer, ๋ฐฐํฌ ES ํด๋ฌ์คํฐ, Kubernetes ๋ฑ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ์๋๋๋ค. ์ด ๋ด์ฉ์ ๋ชจ๋ ์ ์ด ๋ณด๋ฉด Terraform์ด Terraform ๋ชจ๋์ ์ ๊ณตํ๋ค๋ ์ฌ์ค์ ๊ณง ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
Terraform ๋ชจ๋์ ๊ทธ๋ฃน์ผ๋ก ๊ด๋ฆฌ๋๋ ๋ ๋ฆฝํ Terraform ๊ตฌ์ฑ์ ๋๋ค. ์ด๊ฒ์ด Terraform ๋ชจ๋์ ๋ํด ์์์ผ ํ ์ ๋ถ์ ๋๋ค. ๊ทธ๋ค์ ์ ํ ๋๋ํ์ง ์์ผ๋ฉฐ ๋ฌด์ธ๊ฐ์ ๋ฐ๋ผ ๋ณต์กํ ์ฐ๊ฒฐ์ ๋ง๋๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ๊ฐ๋ฐ์์ ์ด๊นจ์ ๋ฌ๋ ค ์์ต๋๋ค. ์ฆ, ์ด๊ฒ์ ์ด๋ฏธ ์์ฑํ ์ผ์ข ์ Terraform ๊ตฌ์ฑ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ ๊ทธ๋ฃน์ด๋ผ๊ณ ๋ถ๋ฅผ ์๋ ์์ต๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ 10-20-30Kb์ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์ต์ ํํ ์ง ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ผ๋ถ ๋ชจ๋์ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ์ ์ฐจ ๊นจ๋ซ๊ณ ์์ต๋๋ค.
์ฒ์ ์ ํ๋ ๋ชจ๋ ์ ํ์ ๋ฆฌ์์ค ๋ชจ๋์ ๋๋ค. ๊ทธ๋ค์ ๊ทํ์ ์ธํ๋ผ๊ฐ ๋ฌด์์ธ์ง, ๋น์ฆ๋์ค๊ฐ ๋ฌด์์ธ์ง, ์กฐ๊ฑด์ด ๋ฌด์์ธ์ง, ์ด๋์ ์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ ๊ฐ ์คํ ์์ค ์ปค๋ฎค๋ํฐ์ ํจ๊ป โโ๊ด๋ฆฌํ๊ณ ์ธํ๋ผ์ ์ด๊ธฐ ๊ตฌ์ฑ ์์๋ก ์ ์ํ๋ ๋ชจ๋์ ๋๋ค.
๋ฆฌ์์ค ๋ชจ๋์ ์.
๋ฆฌ์์ค ๋ชจ๋์ ํธ์ถํ ๋ ํด๋น ์ฝํ ์ธ ๋ฅผ ๋ก๋ํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
๋ค์ด๋ก๋ํ๋ ค๋ ๋ฒ์ ์ ๋ํ๋ ๋๋ค.
์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ๋ง์ ์ธ์๋ฅผ ์ ๋ฌํฉ๋๋ค. ๊ทธ๊ฒ ๋ค์ผ. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ด ๋ชจ๋์ ์ฌ์ฉํ ๋ ์์์ผ ํ ์ ๋ถ์ ๋๋ค.
๋ง์ ์ฌ๋๋ค์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์์ ์ ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง. ์ธํ๋ผ์ ๋ฒ์ ์ด ์ง์ ๋์ด์ผ ํ๋ฉฐ, ์ด ๊ตฌ์ฑ ์์ ๋๋ ํด๋น ๊ตฌ์ฑ ์์๊ฐ ๋ฐฐํฌ๋ ๋ฒ์ ์ ๋ช ํํ๊ฒ ๋๋ตํด์ผ ํฉ๋๋ค.
์ด ๋ชจ๋ ๋ด๋ถ์ ์๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ณด์ ๊ทธ๋ฃน ๋ชจ๋. ์ฌ๊ธฐ์ ์คํฌ๋กค์ 640๋ฒ์งธ ์ค๋ก ์ด๋ํฉ๋๋ค. ๊ฐ๋ฅํ ๋ชจ๋ ๊ตฌ์ฑ์ผ๋ก Amazon์์ ๋ณด์ ๊ทธ๋ฃน ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ ์์ ์ ๋๋ค. ๋จ์ํ ๋ณด์ ๊ทธ๋ฃน์ ์์ฑํ๊ณ ์ฌ๊ธฐ์ ์ ๋ฌํ ๊ท์น์ ์๋ ค์ฃผ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ ๊ฒ์ด๋ค. Amazon์๋ ์๋ฐฑ๋ง ๊ฐ์ง์ ๋ค์ํ ์ ํ ์ฌํญ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ VPC ์๋ํฌ์ธํธ, ์ ๋์ฌ ๋ชฉ๋ก, ๋ค์ํ API ์ด ๋ชจ๋ ๊ฒ์ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๊ณผ ๊ฒฐํฉํ๋ ค๊ณ ํ๋ฉด Terraform์์๋ ์ด๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Amazon API๋ ์ด๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ด ๋ชจ๋ ๋์ฐํ ๋ก์ง์ ๋ชจ๋์ ์จ๊ธฐ๊ณ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ฝ๋๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์๋ ๋ด๋ถ์์ ์ด๋ป๊ฒ ๋ง๋ค์ด์ง๋์ง ์ ํ์๊ฐ ์์ต๋๋ค.
๋ฆฌ์์ค ๋ชจ๋๋ก ๊ตฌ์ฑ๋ ๋ ๋ฒ์งธ ์ ํ์ ๋ชจ๋์ ์ด๋ฏธ ๊ทํ์ ๋น์ฆ๋์ค์ ๋ ์ ํฉํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์์ต๋๋ค. ์ข ์ข ์ด๋ Terraform์ ํ์ฅ์ด๋ฉฐ ํ์ฌ ํ์ค์ ๋ฐ๋ผ ํ๊ทธ์ ๋ํด ์๊ฒฉํ ๊ฐ์ ์ค์ ํ๋ ์ฅ์์ ๋๋ค. Terraform์์ ํ์ฌ ์ฌ์ฉ์ ํ์ฉํ์ง ์๋ ๊ธฐ๋ฅ์ ์ฌ๊ธฐ์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค. ๋ฐ๋ก ์ง๊ธ์ ๋๋ค. ์ด์ ๋ฒ์ 0.11์ ๊ณง ๊ณผ๊ฑฐ์ ์ผ์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ ์ฒ๋ฆฌ๊ธฐ, jsonnet, cookiecutter ๋ฐ ๊ธฐํ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ๋ณธ๊ฒฉ์ ์ธ ์์ ์ ์ฌ์ฉํด์ผ ํ๋ ๋ณด์กฐ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
๋ค์์๋ ์ด์ ๋ํ ๋ช ๊ฐ์ง ์๋ฅผ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ธํ๋ผ ๋ชจ๋์ ์ ํํ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํธ์ถ๋ฉ๋๋ค.
์ฝํ ์ธ ๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๋ ์ถ์ฒ๊ฐ ํ์๋ฉ๋๋ค.
์ฌ๋ฌ ๊ฐ์ด ์ ๋ฌ๋์ด ์ด ๋ชจ๋์ ์ ๋ฌ๋ฉ๋๋ค.
๋ค์์ผ๋ก ์ด ๋ชจ๋ ๋ด์์๋ VPC ๋๋ Application Load Balancer๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ณด์ ๊ทธ๋ฃน ๋๋ Elastic Container Service ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฆฌ์์ค ๋ชจ๋์ด ํธ์ถ๋ฉ๋๋ค.
๋ชจ๋์๋ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค. ์ ๊ฐ ์ด ๋ณด๊ณ ์์ ๋ถ๋ฅํ ๋๋ถ๋ถ์ ์ ๋ณด๋ ๋ฌธ์์ ๊ธฐ๋ก๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ฌ Terraform์ ๋ฌธ์์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์๊ณ ์ฌ์ฉํ ์ ์๋ค๊ณ ๋์ ์๊ธฐ ๋๋ฌธ์ ์๋นํ ๋ฌธ์ ๊ฐ ๋ง์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ ๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง, ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์์ง๋ ๋งํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋งค์ฐ ๋ง์ ์ฌ๋๋ค์ด ํจ๊ป ์ด ์ ์๋ ๊ธ์ ์๋๋ค.
๋ค์์๋ ์ด๋ฌํ ๋ชจ๋์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ๊ณผ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Terraform ๋ ์ง์คํธ๋ฆฌ -
ํ #0์ ๋ฆฌ์์ค ๋ชจ๋์ ์์ฑํ์ง ์๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๋ชจ๋์ ๋๋ถ๋ถ์ ์ด๋ฏธ ์์ฑ๋์์ต๋๋ค. ์์ ๋งํ๋ฏ์ด ์ด ๋ชจ๋์ ์คํ ์์ค์ด๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ ํ ํฌํจํ์ง ์์ผ๋ฉฐ IP ์ฃผ์, ๋น๋ฐ๋ฒํธ ๋ฑ์ ๋ํ ํ๋์ฝ๋ฉ๋ ๊ฐ์ด ์์ต๋๋ค. ๋ชจ๋์ ๋งค์ฐ ์ ์ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ด๋ฏธ ์์ฑ๋์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. Amazon์ ๋ฆฌ์์ค์ ๋ํ ๋ชจ๋์ด ๋ง์ด ์์ต๋๋ค. ์ฝ 650๊ฐ. ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ ํ์ง์ด ์ข์ต๋๋ค.
์ด ์์์๋ ๋๊ตฐ๊ฐ๊ฐ ๋น์ ์๊ฒ ์์ โ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ์ ์๋๋ก ๋ชจ๋์ ๋ง๋์ธ์." ๊ทธ ์ฌ๋์ Amazon์ด๋ Terraform์ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ๋ชจ๋ฆ ๋๋ค. ๊ทธ๋ ๋จ์ํ "MSSQL์ ๊ด๋ฆฌํ๊ณ ์ถ์ต๋๋ค"๋ผ๊ณ ๋งํฉ๋๋ค. ์ฆ, ๋ชจ๋์ ํธ์ถํ๊ณ ๊ฑฐ๊ธฐ์ ์์ง ์ ํ์ ์ ๋ฌํ๊ณ ์๊ฐ๋๋ฅผ ํ์ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๋์ ์ด ๋ชจ๋ ๋ด์ ๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ์์ฑํ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ์์์ผ ํฉ๋๋ค. ํ๋๋ MSSQL์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ๋ค๋ฅธ ๋ชจ๋ ๋ฆฌ์์ค์ฉ์ ๋๋ค. Terraform 0.11์์๋ ์๊ฐ๋ ๊ฐ์ ์ ํ ์ฌํญ์ผ๋ก ์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋์ ์ข ๋ฃํ๋ฉด ๊ฐ๋จํ ์ฃผ์๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ๊ทธ๋ ์ฐ๋ฆฌ๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด ๋ชจ๋ ๊ฒ์ ์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ด๋ค ๋ฆฌ์์ค์์ ์์ฑํ๊ณ ์๋์ง ์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ํ์ ๋งค์ฐ ์ค์ํ ์์์ ๋๋ค. ์ด๋ ์คํ ์์ค์ ๊ณต๊ฐ๋ ๋ชจ๋๋ฟ๋ง ์๋๋ผ ํ๋ก์ ํธ์ ํ ๋ด๋ถ์์ ์์ฑํ๊ฒ ๋ ๋ชจ๋์๋ ์ ์ฉ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ ๋ฒ์งธ ์ฃผ์ฅ์ผ๋ก, ํ๋์ Terraform์ ์ฌ์ฉํด ์๋ค๋ฉด ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ์ฌ์ ๋ชจ๋ Terraform ๋ชจ๋์ ์ ์ฅํ๋ ์ ์ฅ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด ํ๋ก์ ํธ์ ํฌ๊ธฐ๊ฐ XNUMX~XNUMXMB๋ก ์ปค์ง๋ ๊ฒ์ ๋งค์ฐ ์ ์์ ์ธ ํ์์ ๋๋ค. ์ด๊ฑด ๊ด์ฐฎ์.
๊ทธ๋ฌ๋ ๋ฌธ์ ๋ Terraform์ด ์ด๋ฌํ ๋ชจ๋์ ํธ์ถํ๋ ๋ฐฉ์์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ ๊ฐ๋ณ ์ฌ์ฉ์๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ชจ๋์ ํธ์ถํ๋ ๊ฒฝ์ฐ Terraform์ ๋จผ์ ์ ์ฒด ์ ์ฅ์๋ฅผ ๋ก๋ํ ๋ค์ ํด๋น ํน์ ๋ชจ๋์ด ์๋ ํด๋๋ก ์ด๋ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋งค๋ฒ 100MB๋ฅผ ๋ค์ด๋ก๋ํ๊ฒ ๋ฉ๋๋ค. 200๋ช ๋๋ 100๋ช ์ ์ฌ์ฉ์๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ 200MB ๋๋ XNUMXMB๋ฅผ ๋ค์ด๋ก๋ํ ๋ค์ ํด๋น ํด๋๋ก ์ด๋ํฉ๋๋ค. ๋ฐ๋ผ์ ๋น์ฐํ "Terraform init"์ ๋๋ฅผ ๋๋ง๋ค ๋ง์ ํญ๋ชฉ์ ๋ค์ด๋ก๋ํ๊ณ ์ถ์ง๋ ์์ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ๋ ๊ฐ์ง ํด๊ฒฐ์ฑ ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํด๋๊ฐ ๋ก์ปฌ(./)์ด๋ผ๋ ๊ฒ์ ์ฝ๋์ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌด์์ด๋ ์์ํ๊ธฐ ์ ์ ์ด ์ ์ฅ์์ Git ๋ณต์ ๋ฅผ ๋ก์ปฌ๋ก ์ํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฒ ํ๋ฉด ๋ฉ๋๋ค.
๋ฌผ๋ก ๋จ์ ๋ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋๋ก๋ ํจ๊ป ์ด๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
๋ ๋ฒ์งธ ์๋ฃจ์ . ํ์ ๋ชจ๋์ด ๋ง๊ณ ์ด๋ฏธ ํ๋ฆฝ๋ ํ์ดํ๋ผ์ธ์ด ์๋ ๊ฒฝ์ฐ MBT ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋จ์ผ ์ ์ฅ์์์ ๋ค์ํ ํจํค์ง๋ฅผ ์์งํ์ฌ S3์ ์ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์์ฃผ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐ๋ผ์ iam-user-1.0.0.zip ํ์ผ์ ๋ฌด๊ฒ๋ 1Kb์ ๋ถ๊ณผํฉ๋๋ค. ์๋ํ๋ฉด ์ด ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ์ฝ๋๊ฐ ๋งค์ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์๋ํ ๊ฒ์ ๋๋ค.
๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํด ๋ด ์๋ค.
๋ชจ๋์์ ์ด๊ฒ์ด ์ ์ ํ๊ฐ? ์ต์ ์ ์ํฉ์ ์ฌ์ฉ์๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋ ๊ณต๊ธ์ ์ธ์ฆ ์ต์ ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ญํ ์ ๋ํํ ๊ฒ์ ๋๋ค. ์ด๋ Terraform์ด ์ด ์ญํ ์ ๋งก๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ์ญํ ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์์ ์ ์ํํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ์ ์ Vasya๊ฐ ๊ธฐ๋ณธ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก Amazon์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์ข์ํ๊ณ Petya๊ฐ ๋น๋ฐ ์ฅ์์ ์๋ ๊ณต์ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ํ๋ค๋ฉด ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ์ง์ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ํ ๋ผํผ. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ด ๊ณ ํต์ ๊ฒช์ง ์๋๋ก ๋ชจ๋์์ ์ด ๋ธ๋ก์ ํ์ํ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ ๋ ๋์ ์์ค์์ ํ์๋์ด์ผ ํฉ๋๋ค. ์ฆ, ๋ฆฌ์์ค ๋ชจ๋, ์ธํ๋ผ ๋ชจ๋ ๋ฐ ๊ตฌ์ฑ์ด ๋งจ ์์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ ๋์ ๊ณณ์ ํ์๋์ด์ผ ํฉ๋๋ค.
๋ ๋ฒ์งธ ์ ์ ๊ณต๊ธ์ ์ฒด์ ๋๋ค. ์ฌ๊ธฐ์ ์ ์ ๊ทธ๋ค์ง ์ฌ์ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ทธ๊ฒ์ด ๋น์ ์๊ฒ ์ ํฉํ๋ค๋ฉด, ๊ทธ๊ฒ์ด ์๋ํ๋ค๋ฉด ์ ๋ณ๊ฒฝํด์ผ ํ๋์ง ์๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฌธ์ ๋ ๋จผ์ ์ด ํ๋ก๋น์ ๋๊ฐ ์ธ์ ์์๋ ์ง ํญ์ ์ ์ดํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋์งธ, aws ec2๊ฐ ์๋ฏธํ๋ ๋ฐ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ์ฆ, ์ง๊ธ ์ฐ๋ฆฌ๊ฐ Linux์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋์ง ์๋๋ฉด Windows์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋์ง๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ด์ ์ฒด์ ๋ ๋ค๋ฅธ ์ฌ์ฉ์ ์ฌ๋ก์์ ๋์ผํ๊ฒ ์๋ํ๋ ๊ฒ์ ์์ฑํ ์ ์์ต๋๋ค.
๊ณต์ ๋ฌธ์์๋ ๋์ ์๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์๋ aws_instance๋ฅผ ์์ฑํ๊ณ ์ฌ๋ฌ ์ธ์๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ ๊ฑฐ๊ธฐ์ ํ๋ก๋น์ ๋ "local-exec"๋ฅผ ์ง์ ํ๊ณ ansible-๋ฅผ ์คํํ๋ฉด ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ํ๋ ์ด๋ถ .
์ฌ์ค ๊ทธ๋ ์ต๋๋ค. ์๋ฌด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ง ๊ทธ๋๋ก ๊ณง ์ด ๋ก์ปฌ ์คํ ํญ๋ชฉ(์: launch_configuration)์ด ์กด์ฌํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ launch_configuration์ ์ฌ์ฉํ๊ณ ํ ์ธ์คํด์ค์์ ์๋ ํ์ฅ ๊ทธ๋ฃน์ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ launch_configuration์๋ "ํ๋ก๋น์ ๋" ๊ฐ๋ ์ด ์์ต๋๋ค. "์ฌ์ฉ์ ๋ฐ์ดํฐ"๋ผ๋ ๊ฐ๋ ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ณด๋ค ๋ณดํธ์ ์ธ ์๋ฃจ์ ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์คํด์ค๊ฐ ์ผ์ ธ ์์ ๋ ์ธ์คํด์ค ์์ฒด์์ ์์๋๊ฑฐ๋ Auto Scaling ๊ทธ๋ฃน์ด ์ด launch_configuration์ ์ฌ์ฉํ ๋ ๋์ผํ ์ฌ์ฉ์ ๋ฐ์ดํฐ์์ ์์๋ฉ๋๋ค.
ํ๋ก๋น์ ๋๊ฐ ์ ์ฐฉ ๊ตฌ์ฑ ์์์ด๊ธฐ ๋๋ฌธ์ ๊ณ์ ์คํํ๋ ค๋ฉด ํ๋์ ๋ฆฌ์์ค๊ฐ ์์ฑ๋ ๋ ๊ทธ ์๊ฐ ํ๋ก๋น์ ๋, ์ฆ ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌํ ์ํฉ์ด ๋ง์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ๋ํ ๊ฐ์ฅ ์ ํํ ๋ฆฌ์์ค๋ฅผ null_resource๋ผ๊ณ ํฉ๋๋ค. Null_resource๋ ์ค์ ๋ก ์์ฑ๋์ง ์๋ ๋๋ฏธ ๋ฆฌ์์ค์ ๋๋ค. ์๋ฌด๊ฒ๋ ๊ฑด๋๋ฆฌ์ง ์๊ณ , API๋, ์๋ ํ์ฅ๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ช ๋ น์ ์คํํ ์๊ธฐ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์์ฑ ์ค์ ๋ช ๋ น์ด ์คํ๋ฉ๋๋ค.
๋งํฌ
์ฌ๋ฌ ๊ฐ์ง ์งํ๊ฐ ์์ต๋๋ค. ๋๋ ๋ชจ๋ ์งํ์ ๋ํด ์์ธํ ์ค๋ช ํ์ง๋ ์๊ฒ ์ต๋๋ค. ์ด์ ๋ํ ๊ธฐ์ฌ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Terraform์ผ๋ก ์์ ํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋์ ๋ชจ๋์ ์ฌ์ฉํด ๋ณธ ์ ์ด ์๋ค๋ฉด ์คํ ์์ค์ ์๋ ๋๋ถ๋ถ์ ์ฝ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ง์ ๋ชจ๋์ด ์ฌ๋๋ค์ด ์์ ์ ํ์์ ๋ฐ๋ผ ์์ฑํ๋ค๋ ์ฌ์ค์ ์ข ์ข ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ํ ๋จ์๊ฐ ๊ทธ๊ฒ์ ์ฐ๊ณ ๊ทธ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. GitHub์ ๋ฃ์ด์ ๋ผ์ด๋ธ๋ก ๋์์ต๋๋ค. ๊ทธ๊ฒ์ ์ด์์์ง๋ง ๊ฑฐ๊ธฐ์ ๋ฌธ์์ ์์ ๊ฐ ์์ผ๋ฉด ์๋ฌด๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ์์ ๋ณด๋ค ์กฐ๊ธ ๋ ๋ง์ ๊ฒ์ ํด๊ฒฐํ ์ ์๋ ๊ธฐ๋ฅ์ด ์๋ค๋ฉด ์๋ฌด๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๋ฅผ ์๋ ๋ฐฉ๋ฒ์ ๋๋ฌด ๋ง์ต๋๋ค.
์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋๋ก ๊ธ์ ์ฐ๊ณ ์ถ๋ค๋ฉด ๋ค์ ํ์๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ค์ :
- ๋ฌธ์ ๋ฐ ์์ .
- ์ ์ฒด ๊ธฐ๋ฅ.
- ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ.
- ์ฝ๋๋ฅผ ์ ๋ฆฌํ์ธ์.
- ํ ์คํธ.
ํ ์คํธ๋ ์์ฑํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ํฉ์ด ๋ค๋ฆ ๋๋ค. ๋๋ ๋ฌธ์์ ์์ ๋ฅผ ๋ ๋ฏฟ์ต๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ชจ๋์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค. ๋ ๊ฐ์ง ์ฃผ์ฅ์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ์ฒซ ๋ฒ์งธ๋ ๊ฐ๋ฅํ๋ฉด ๊ธ์ ์ฐ์ง ์๋ ๊ฒ์ ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ด๋ฏธ ์ด๋ฌํ ์์ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์งธ, ์ฌ์ ํ ๊ฒฐ์ ํ๋ค๋ฉด ๋ชจ๋๊ณผ ํ๋ก๋น์ ๋์์ ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์ด๊ฒ์ ๋ฌธ์์ ํ์ ๋ถ๋ถ์ ๋๋ค. ๋น์ ์ ์ด์ ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ ์๋ ์์ต๋๋ค. โ๋ญ๊ฐ ๋ถ๋ถ๋ช ํ๋ค. ํ์ ํ์ง ๋ชปํ์ด์." ํ์ง๋ง XNUMX๊ฐ์ ๋ค์ ๋ณด์.
์ด์ ์ด๋ฌํ ๋ชจ๋์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฝ๋๊ฐ ์ฑ์ฅํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๋ ์ด์ ํ๋์ ํ์ผ์ด ์์ผ๋ฉฐ ์ด๋ฏธ 20๊ฐ์ ํ์ผ์ด ์์ต๋๋ค. ๋ชจ๋ ํ๋์ ํด๋์ ์์ต๋๋ค. ์๋๋ฉด ํด๋๊ฐ XNUMX๊ฐ์ผ ์๋ ์์ต๋๋ค. ์ด์ฉ๋ฉด ์ฐ๋ฆฌ๋ ์ง์ญ๋ณ, ์ผ๋ถ ๊ตฌ์ฑ ์์๋ณ๋ก ๋ถ๋ฅํ๊ธฐ ์์ํ์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๋ ์ด์ ๋๊ธฐํ์ ์ค์ผ์คํธ๋ ์ด์ ์ ๋ํ ๋ช ๊ฐ์ง ๊ธฐ์ด๋ฅผ ๊ฐ๊ฒ ๋์์์ ์ดํดํฉ๋๋ค. ์ฆ, ๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ๋ฌด์์ ํด์ผ ํ๋์ง, ๋๋จธ์ง ๋ฆฌ์์ค๋ก ๋ฌด์์ ํด์ผ ํ๋์ง, ์ด๋ฌํ ์ข ์์ฑ์ ์ ๋ฐํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ์ดํดํด์ผ ํฉ๋๋ค.
๋ ๊ฐ์ง ๊ทน๋จ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๊ทน๋จ์ ๋ชจ๋ ํ๋์ ๋๋ค. ํ๋์ ๋ง์คํฐ ํ์ผ์ด ์์ต๋๋ค. ๋น๋ถ๊ฐ ์ด๋ Terraform ์น์ฌ์ดํธ์ ๊ณต์ ๋ชจ๋ฒ ์ฌ๋ก์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ง๊ธ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฒ์ผ๋ก ์์ฑ๋์ด ์ ๊ฑฐ๋์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ Terraform ์ปค๋ฎค๋ํฐ๋ ์ฌ๋๋ค์ด ํ๋ก์ ํธ๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๋ชจ๋ฒ ์ฌ๋ก์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ ์ข ์์ฑ์ ํ ๊ณณ์ ๋์ดํ๋ ๊ฒฝ์ฐ์ ๋๋ค. "Terraform ๊ณํ"์ ํด๋ฆญํ๋ฉด Terraform์ด ๋ชจ๋ ๋ฆฌ์์ค์ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ ๋๊น์ง ๋ง์ ์๊ฐ์ด ์์๋ ์ ์์ต๋๋ค.
๋ง์ ์๊ฐ์ ์๋ฅผ ๋ค์ด 5๋ถ์ ๋๋ค. ์ด๋ค ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ ๋ง์ ์๊ฐ์ ๋๋ค. 15๋ถ๋ง์ ๋๋๋ ๊ฒฝ์ฐ๋ ๋ดค์ต๋๋ค. AWS API๋ ๊ฐ ๋ฆฌ์์ค์ ์ํ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ํ์ ํ๋ ๋ฐ 15๋ถ์ ์๋นํ์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๋์ ์ง์ญ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฐ์ค๋ฝ๊ฒ ํ ๊ณณ์์ ๋ญ๊ฐ๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ ๋ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ๋ํ๋๊ฒ ๋๋๋ฐ, ๊ทธ ํ 15๋ถ์ ๊ธฐ๋ค๋ฆฌ๋ฉด ๋ช ๊ฐ์ง ๋ณํ์ ์บ๋ฒ์ค๊ฐ ๋์ต๋๋ค. ์นจ์ ๋ฑ๊ณ "์"๋ผ๊ณ ์ผ๋๋ฐ ๋ญ๊ฐ ์๋ชป๋์์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ์ค์ ์ ์ธ ์์ ๋๋ค. Terraform์ ๋ฌธ์ ๋ก๋ถํฐ ์ฌ์ฉ์๋ฅผ ๋ณดํธํ๋ ค๊ณ ํ์ง ์์ต๋๋ค. ์ฆ, ์ํ๋ ๊ฒ์ ์์ฑํ์ญ์์ค. ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ ๋๋ค - ๋น์ ์ ๋ฌธ์ . Terraform 0.11์ ์ด๋ค ์์ผ๋ก๋ ์ฌ์ฉ์๋ฅผ ๋๊ธฐ ์ํด ๋ ธ๋ ฅํ์ง ์์ต๋๋ค. 0.12์๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํ ์ ์๋ ํฅ๋ฏธ๋ก์ด ๋ถ๋ถ์ด ์์ต๋๋ค: "Vasya, ๋น์ ์ ์ด๊ฒ์ ์ ๋ง๋ก ์ํฉ๋๋ค. ์ ์ ์ ์ฐจ๋ฆด ์ ์์ต๋๊น?"
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ด ์์ญ์ ์ค์ด๋ ๊ฒ์ ๋๋ค. ์ฆ, ํ ๊ณณ์์ ์ค๋ ์ ํ๊ฐ ๋ค๋ฅธ ๊ณณ์์ ์ฐ๊ฒฐ๋๋ ์์ด ์ค์ด๋ค ์ ์์ต๋๋ค.
์ ์ผํ ๋ฌธ์ ๋ ๋ ๋ง์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ๋ง์ ์์ ํ์ผ์์ ๋ณ์๋ฅผ ์ค๋ช ํ๊ณ ์ด๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ค ์ฌ๋๋ค์ ๊ทธ๊ฒ์ ์ข์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๋์๊ฒ ์ ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ฌ๋๋ค์ โ์ด๊ฑธ ์ ์ฌ๋ฌ ๊ณณ์ ์ฐ๋๋ฐ, ๋ค ํ ๊ณณ์ ๋ชจ์ ๋์๊นโ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฅํ์ง๋ง ์ด๊ฒ์ ๋ ๋ฒ์งธ ๊ทน๋จ์ ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ํ ๊ณณ์ ์ฌ๋ ์ฌ๋์ ๋๊ตฌ์ ๋๊น? ํ๋, ๋, ์ , ์ฆ ๋๊ตฐ๊ฐ๊ฐ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๊ฐ ํ๋์ ํน์ ๊ตฌ์ฑ ์์, ํ๋์ ๋ธ๋ก ๋๋ ํ๋์ ์ธํ๋ผ ๋ชจ๋์ ํธ์ถํฉ๋๊น? XNUMX~XNUMX๋ช . ์ด๊ฒ์ ๋ฉ์ง๋ค.
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋๋ต์ ์ค๊ฐ ์ด๋๊ฐ์ ์์ต๋๋ค. ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ํฌ๋ฉด ์ ํฉํ ์๋ฃจ์ ์ด ์๊ณ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํ์ง ์๋ ์ํฉ์ด ๋ฐ์ํ์ฌ ๊ฒฐ๊ณผ์ ์ผ๋ก ํผํฉ๋๋ ์ํฉ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ ๋ค ์ฅ์ ์ด ์๋ค๋ ๊ฒ์ ์ดํดํ๋ ํ, ์ด๊ฒ์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์คํ VPC์์ ๋ณ๊ฒฝ๋ ์ฌํญ์ด ์๊ณ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ EC2์ ์ ์ฉํ๋ ค๋ ๊ฒฝ์ฐ, ์ฆ ์ ์๋ธ๋ท์ด ์์ด์ Auto Scaling ๊ทธ๋ฃน์ ์ ๋ฐ์ดํธํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ข ๋ฅ์ ์ข ์์ฑ ์ค์ผ์คํธ๋ ์ด์ ์ ํธ์ถํฉ๋๋ค. ๋ช ๊ฐ์ง ํด๊ฒฐ์ฑ ์ด ์์ต๋๋ค. ๋๊ฐ ๋ฌด์์ ์ฌ์ฉํฉ๋๊น?
์ด๋ค ํด๊ฒฐ์ฑ ์ด ์๋์ง ์ ์ํด ๋๋ฆด ์ ์์ต๋๋ค. Terraform์ ์ฌ์ฉํ์ฌ ๋ง๋ฒ์ ์ํํ๊ฑฐ๋ makefile์ ์ฌ์ฉํ์ฌ Terraform์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์์ ๋ณ๊ฒฝ๋ ์ฌํญ์ด ์๋์ง ํ์ธํ๊ณ ์ฌ๊ธฐ์์ ์คํํ ์ ์์ต๋๋ค.
์ด ๊ฒฐ์ ์ด ๋ง์์ ๋์๋์? ์ด๊ฒ์ด ๋ฉ์ง ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ๋ฏฟ๋ ์ฌ๋์ด ์์ต๋๊น? ๋๋ ๋ฏธ์๋ฅผ ์ง๋๋ค. ๋ถ๋ช ํ ์์ฌ์ด ์ค๋ฉฐ๋ค์๋ค.
๋ฌผ๋ก ์ง์์ ์ด๊ฒ์ ์๋ํ์ง ๋ง์ญ์์ค. Terraform์ Terraform์์ ์คํ๋๋๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค.
ํ ๋ณด๊ณ ์์์ ๊ทธ๋ค์ ๋์๊ฒ "์๋์, ์ด๊ฒ์ ์๋ํ์ง ์์ต๋๋ค"๋ผ๊ณ ๋งํ์ต๋๋ค. ์์ ์ ๊ทธ๊ฒ์ด ์๋ํด์๋ ์๋๋ค๋ ๊ฒ์ ๋๋ค. Terraform์์ Terraform์ ์์ํ ๋ค์ Terraform์ ์์ํ ์ ์์ผ๋ฉด ๋งค์ฐ ์ธ์์ ์ผ๋ก ๋ณด์ด์ง๋ง ๊ทธ๋ ๊ฒ ํด์๋ ์ ๋ฉ๋๋ค. Terraform์ ํญ์ ๋งค์ฐ ์ฝ๊ฒ ์์๋์ด์ผ ํฉ๋๋ค.
ํ ๊ณณ์์ ๋ฌด์ธ๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ํตํ ์กฐ์ ์ด ํ์ํ ๊ฒฝ์ฐ Terragrunt๊ฐ ์์ต๋๋ค.
Terragrunt๋ ์ธํ๋ผ ๋ชจ๋์ ๋ํ ํธ์ถ์ ์กฐ์ ํ๊ณ ์กฐ์ ํ ์ ์๋ Terraform์ ์ถ๊ฐ ๊ธฐ๋ฅ์ธ ์ ํธ๋ฆฌํฐ์ ๋๋ค.
์ผ๋ฐ์ ์ธ Terraform ๊ตฌ์ฑ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํธ์ถํ๋ ค๋ ํน์ ๋ชจ๋์ ์ง์ ํฉ๋๋ค.
๋ชจ๋์๋ ์ด๋ค ์ข ์์ฑ์ด ์์ต๋๊น?
๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋์ ์ด๋ค ์ธ์๋ฅผ ํ์ฉํฉ๋๊น? ์ด๊ฒ์ด Terragrunt์ ๋ํด ์์์ผ ํ ์ ๋ถ์ ๋๋ค.
๋ฌธ์๋ ๊ฑฐ๊ธฐ์ ์์ผ๋ฉฐ GitHub์๋ 1๊ฐ์ ๋ณ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ด๊ฒ์ด ๋น์ ์ด ์์์ผ ํ ๊ฒ์ ๋๋ค. ์ด๋ Terraform์ ์ด์ ๋ง ์ฌ์ฉํ๊ธฐ ์์ํ ํ์ฌ์์ ๊ตฌํํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค.
์ค์ผ์คํธ๋ ์ด์ ์ Terragrunt์ ๋๋ค. ๋ค๋ฅธ ์ต์ ์ด ์์ต๋๋ค.
์ด์ ์ฝ๋ ์์ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
์ฝ๋์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ด๋ ์ฝ์ต๋๋ค. ๋น์ ์ ์๋ก์ด ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ์์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฏธ๋ฆฌ ์์ฑํ ๋ฆฌ์์ค๊ฐ ์๊ณ AWS ๊ณ์ ์ ๊ฐ์คํ ํ Terraform์ ๋ํด ๋ฐฐ์ ๊ณ ์ด๋ฏธ ๋ณด์ ํ๊ณ ์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ชจ๋์ ํ์ฅํ๋ ๊ฒ์ด ์ ์ ํ ๊ฒ์ ๋๋ค. ๊ธฐ์กด ๋ฆฌ์์ค์ ์ฌ์ฉ์ ์ง์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ธ๋ก ๋ฆฌ์์ค๋ฅผ ํ์ฉํ ์๋ก์ด ๋ฆฌ์์ค ์์ฑ์ ์ง์ํ์ต๋๋ค.
์ถ๋ ฅ ์ ์ฌ์ฉ๋ ํญ๋ชฉ์ ๋ฐ๋ผ ํญ์ ์ถ๋ ฅ ID๋ฅผ ๋ฐํํฉ๋๋ค.
Terraform 0.11์์ ๋ ๋ฒ์งธ๋ก ์ค์ํ ๋ฌธ์ ๋ ๋ชฉ๋ก ์์ ์ ๋๋ค.
์ด๋ ค์ด ์ ์ ๊ทธ๋ฌํ ์ฌ์ฉ์ ๋ชฉ๋ก์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ธ๋ก ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ๋ฉ๋๋ค. ์ ์ฒด ๋ชฉ๋ก์ ์ดํด๋ณด๊ณ ๊ฐ๊ฐ์ ๋ํ ํ์ผ์ ๋ง๋ญ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฅผ ๋ค์ด ์ค๊ฐ์ ์๋ user3์ ์ฌ๊ธฐ์์ ์ ๊ฑฐํด์ผ ํ๋ฉฐ, ๊ทธ๋ฌ๋ฉด ์ธ๋ฑ์ค๊ฐ ๋ณ๊ฒฝ๋๋ฏ๋ก ๊ทธ ์ดํ์ ์์ฑ๋ ๋ชจ๋ ๋ฆฌ์์ค๊ฐ ๋ค์ ์์ฑ๋ฉ๋๋ค.
์ํ ์ ์ฅ ํ๊ฒฝ์์ ๋ชฉ๋ก ์์ . ์ํ ์ ์ฅ ํ๊ฒฝ์ด๋ ๋ฌด์์ ๋๊น? ์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋๋ฉด ์๋ก์ด ๊ฐ์น๊ฐ ์์ฑ๋๋ ์ํฉ์ ๋๋ค. ์๋ฅผ ๋ค์ด AWS ์ก์ธ์ค ํค ๋๋ AWS ๋น๋ฐ ํค์ ๋๋ค. ์ฆ, ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ฉด ์ ์ก์ธ์ค ๋๋ ๋น๋ฐ ํค๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ฅผ ์ญ์ ํ ๋๋ง๋ค ์ด ์ฌ์ฉ์๋ ์ ํค๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ์๊ฐ ์๋๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ํ์ ๋ ๋ ๋๋ง๋ค ์๋ก์ด ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ฉด ์ฌ์ฉ์๋ ์ฐ๋ฆฌ์ ์น๊ตฌ๊ฐ ๋๊ณ ์ถ์ดํ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๊ฒ์ด ํด๊ฒฐ์ฑ ์ ๋๋ค. Jsonnet์ผ๋ก ์์ฑ๋ ์ฝ๋์ ๋๋ค. Jsonnet์ Google์ ํ ํ๋ฆฟ ์ธ์ด์ ๋๋ค.
์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ์ด ํ ํ๋ฆฟ์ ์๋ฝํ ์ ์์ผ๋ฉฐ ์ถ๋ ฅ์ผ๋ก ํ ํ๋ฆฟ์ ๋ฐ๋ผ ๋ง๋ค์ด์ง json ํ์ผ์ด ๋ฐํ๋ฉ๋๋ค.
ํ ํ๋ฆฟ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Terraform์ ์ฌ์ฉํ๋ฉด ๋์ผํ ๋ฐฉ์์ผ๋ก HCL๊ณผ Json์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก Json์ ์์ฑํ ์ ์๋ ๋ฅ๋ ฅ์ด ์์ผ๋ฉด ์ด๋ฅผ Terraform์ ๋ฃ์ ์ ์์ต๋๋ค. ํ์ฅ์๊ฐ .tf.json์ธ ํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ๋ค์ด๋ก๋๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ํ์๋๋ก terraform init, terramorm Apply๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ ๋ช ์ ์ฌ์ฉ์๋ฅผ ๋ง๋ญ๋๋ค.
์ด์ ์ฐ๋ฆฌ๋ ๋๊ตฐ๊ฐ๊ฐ ํ์ ๋ ๋๋ ๋๋ ต์ง ์์ต๋๋ค. json ํ์ผ๋ง ํธ์งํ๊ฒ ์ต๋๋ค. Vasya Pupkin์ ๋ ๋ฌ๊ณ Petya Pyatochkin์ ๋จ์์ต๋๋ค. Petya Pyatochkin์ ์ ํค๋ฅผ ๋ฐ์ง ์์ต๋๋ค.
Terraform์ ๋ค๋ฅธ ๋๊ตฌ์ ํตํฉํ๋ ๊ฒ์ ์ค์ ๋ก Terraform์ ์์ ์ด ์๋๋๋ค. Terraform์ ๋ฆฌ์์ค ์์ฑ์ ์ํ ํ๋ซํผ์ผ๋ก ๋ง๋ค์ด์ก์ผ๋ฉฐ ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ค์ ๋์ค๋ ๋ชจ๋ ๊ฒ์ Terraform์ ๊ด์ฌ์ฌ๊ฐ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ๊ทธ๊ฒ์ ์ฎ์ ํ์๊ฐ ์์ต๋๋ค. ํ์ํ ๋ชจ๋ ๊ฒ์ ์ํํ๋ Ansible์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ Terraform์ ํ์ฅํ๊ณ ์์ ์ด ์๋ฃ๋ ํ ์ผ๋ถ ๋ช ๋ น์ ํธ์ถํ๋ ค๋ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ. ์ด ๋ช ๋ น์ ์์ฑํ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ terraform ์ถ๋ ฅ์์ โโ์ด ๋ช ๋ น์ ํธ์ถํ๊ณ ์ํ๋ ๊ฐ์ ์ง์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ช ๋ น์ ๋์ฒด๋ ๋ชจ๋ ๊ฐ์ผ๋ก ์คํ๋ฉ๋๋ค. ๋งค์ฐ ํธ์ํฉ๋๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ. ์ด๋ ์ธํ๋ผ ๋ณ๊ฒฝ์ ๋ฐ๋ผ null_resource๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ถ ๋ฆฌ์์ค์ ID๊ฐ ๋ณ๊ฒฝ๋๋ ์ฆ์ ๋์ผํ local-exe๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
๋น์ฐํ ์ด ๋ชจ๋ ๊ฒ์ด ์๋ฅ์์ผ๋ก๋ ์์กฐ๋กญ๊ฒ ์งํ๋ฉ๋๋ค. ์๋ํ๋ฉด Amazon์ ๋ค๋ฅธ ๋ชจ๋ ๊ณต๊ณต ์๋น์ค ์ ๊ณต์ ์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฒด์ ์ธ ์์ธ ์ฌ๋ก๋ฅผ ๋ง์ด ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๋ AWS ๊ณ์ ์ ๊ฐ์คํ ๋ ์ด๋ค ๋ฆฌ์ ์ ์ฌ์ฉํ๋์ง๊ฐ ์ค์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ด ํ์ฑํ๋์ด ์์ต๋๊น? ์ด์ฉ๋ฉด 2013๋ XNUMX์ ์ดํ์ ์ด์์ ์๋ ์์ต๋๋ค. ์ด์ฉ๋ฉด VPC ๋ฑ์์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๊ณ ์์ ์๋ ์์ต๋๋ค. ๋ง์ ์ ํ ์ฌํญ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Amazon์ ์ด๋ฅผ ๋ฌธ์ ์ ์ฒด์ ๋ถ์ฐ์์ผฐ์ต๋๋ค.
์ ๊ฐ ํผํ๋ผ๊ณ ๊ถ์ฅํ๋ ๋ช ๊ฐ์ง ์ฌํญ์ด ์์ต๋๋ค.
์์ํ๋ ค๋ฉด Terraform ๊ณํ ๋๋ Terraform CLI ๋ด์์ ๋น๋ฐ์ด ์๋ ๋ชจ๋ ์ธ์๋ฅผ ํผํ์ธ์. ์ด ๋ชจ๋ ๊ฒ์ tfvars ํ์ผ์ด๋ ํ๊ฒฝ ๋ณ์์ ๋ฃ์ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด ๋ง๋ฒ ๋ช ๋ น์ ๋ชจ๋ ์ธ์ธ ํ์๋ ์์ต๋๋ค. Terraform ๊ณํ โ var๋ฅผ ์ ํํ๊ณ ์์ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ณ์๋ var, ๋ ๋ฒ์งธ ๋ณ์๋ var, ์ธ ๋ฒ์งธ, ๋ค ๋ฒ์งธ ๋ณ์์ ๋๋ค. ์ ๊ฐ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉํ๋ ์ฝ๋ํ ์ธํ๋ผ์ ๊ฐ์ฅ ์ค์ํ ์์น์ ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ๋ง์ผ๋ก๋ ๊ฑฐ๊ธฐ์ ๋ฌด์์ด ๋ฐฐํฌ๋๊ณ , ์ด๋ค ์ํ๋ก, ์ด๋ค ๊ฐ์ผ๋ก ๋ฐฐํฌ๋๋์ง ๋ช ํํ๊ฒ ์ดํดํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์๋ฅผ ์ฝ๊ฑฐ๋ Vasya์๊ฒ ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฌผ์ด๋ณผ ํ์๊ฐ ์์ต๋๋ค. ์ข ์ข ํ๊ฒฝ๊ณผ ์ผ์นํ๋ tfvars ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ์ด๊ณ ๊ฑฐ๊ธฐ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ดํด๋ณด๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋ํ ๋ฒ์๋ฅผ ์ค์ด๊ธฐ ์ํด ๋์ ์ธ์๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ด๋ฅผ ์ํด ์์ ์ธํ๋ผ ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค.
๋ํ ๋ณ๋ ฌ์ฑ์ ์ ํํ๊ฑฐ๋ ๋๋ฆด ํ์๊ฐ ์์ต๋๋ค. 150๊ฐ์ ๋ฆฌ์์ค๊ฐ ์๊ณ Amazon ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ๊ฐ 10์์ 100์ผ๋ก ๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๋๋ฉด ์ง๊ธ์ ์ ๋ ์ง ๋ชจ๋ฅด์ง๋ง Amazon์์ ์ ํ๋ฅผ ๋๋ฌด ๋ง์ด ๊ฑธ๊ณ ์๋ค๊ณ ๋งํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
Terraform์ ์ด๋ฌํ ๋ฌธ์ ์ ๋๋ถ๋ถ์ ๋ค์ ์์ํ๋ ค๊ณ ์๋ํ์ง๋ง ๊ฑฐ์ ์๋ฌด ์ฑ๊ณผ๋ ์ป์ง ๋ชปํ ๊ฒ์ ๋๋ค. Parallelism=1์ AWS API ๋๋ Terraform ๊ณต๊ธ์ ๋ด๋ถ์์ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ์ค์ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ=1์ ์ง์ ํ๊ณ Terraform์ด ํ ํธ์ถ, ๋ ๋ฒ์งธ ํธ์ถ, ์ธ ๋ฒ์งธ ํธ์ถ์ ์๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ๊ทธ๋ ๊ทธ๊ฒ๋ค์ ํ๋์ฉ ์์ํ ๊ฒ์ ๋๋ค.
์ฌ๋๋ค์ ์ข ์ข "Terraform ์์ ๊ณต๊ฐ์ด ๋์๋ค๊ณ ์๊ฐํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?"๋ผ๊ณ ๋ฌป์ต๋๋ค. ์ด๋ค ์ธํ๋ผ๊ฐ ์ด๋ค ๊ฐ์น๋ก ๋ง๋ค์ด์ก๋์ง ์ดํด๋ณด๋ ๊ฒ์ด ์ฝ๋ํ ์ธํ๋ผ์ ์๋ฆฌ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์์ ๊ณต๊ฐ์ ์ฌ์ฉ์๊ฐ ๋ง๋ ๊ฒ์ด ์๋๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ Terraform ์์ ๊ณต๊ฐ ์์ด๋ ์ด ์ ์๋ ๋ฌธ์ ๋ฅผ GitHub์ ์ผ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์๋, ์ด๋ ์ง ์์. Terraform Enterprise๋ ์์ฉ ์๋ฃจ์ ์ ๋๋ค. HashiCorp์ Terraform์ ์์ ๊ณต๊ฐ์ด ํ์ํ๋ค๊ณ ํ๋จํ์ฌ ์ด๋ฅผ ์ ๋ฆฌํ์ต๋๋ค. ๋ฐ๋ก ํด๋์ ๋ฃ์ด๋๋ ๊ฒ ํจ์ฌ ํธํ ๊ฒ ๊ฐ์์. ๊ทธ๋ฌ๋ฉด ํ์ผ์ด ์กฐ๊ธ ๋ ๋ง์์ง์ง๋ง ๋ ๋ช ํํด์ง๋๋ค.
์ฝ๋๋ก ์์ ํ๋ ๋ฐฉ๋ฒ? ์ฌ์ค ๋ชฉ๋ก ์์ ์ด ์ ์ผํ ๊ณ ํต์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Terraform์ ๋ ์ฝ๊ฒ ํ์ฉํ์ธ์. ์ด๊ฒ์ ๋น์ ์ ์ํด ๋ชจ๋ ์ผ์ ํ๋ฅญํ๊ฒ ํด ์ค ์ผ์ด ์๋๋๋ค. ๋ฌธ์์ ๊ธฐ๋ก๋ ๋ชจ๋ ๋ด์ฉ์ ๊ฑฐ๊ธฐ์ ๋ฐ์ด๋ฃ์ ํ์๋ ์์ต๋๋ค.
๋ณด๊ณ ์์ ์ฃผ์ ๋ '๋ฏธ๋๋ฅผ ์ํด'๋ก ์์ฑ๋๋ค. ์ด์ ๋ํด ์์ฃผ ๊ฐ๋ตํ๊ฒ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ์์ผ๋ก๋ 0.12๊ฐ ๊ณง ์ถ์๋ ๊ฒ์ด๋ผ๋ ์๋ฏธ์ ๋๋ค.
0.12๋ ์ ๋ง ์๋ก์ด ๊ฒ์ ๋๋ค. ์ผ๋ฐ ํ๋ก๊ทธ๋๋ฐ์์ ์๋ค๋ฉด ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ด ๋์์ ๊ณ์ฐ๋์ง ์๊ณ ์ํฉ์ ๋ฐ๋ผ ๊ณ์ฐ๋๋ ๋ชจ๋ ์ข ๋ฅ์ ๋์ ๋ธ๋ก, ๋ฃจํ, ์ฌ๋ฐ๋ฅธ ๋ฐ ์กฐ๊ฑด๋ถ ๋น๊ต ์์ ์ ๋์น ์ ์์ต๋๋ค. ๋น์ ์ ๊ทธ๊ฒ์ ๋ง์ด ๊ทธ๋ฆฌ์ํ๋ฏ๋ก 0.12๊ฐ ๋น์ ์ ์ํด ํด๊ฒฐํด ์ค ๊ฒ์ ๋๋ค.
ํ์ง๋ง! ๊ธฐ์ฑ ๋ชจ๋๊ณผ ํ์ฌ ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ ์ ์ ๋ ๊ฐ๋จํ๊ฒ ์์ฑํ๋ค๋ฉด ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ผ๋ฉฐ 0.12๊ฐ ์์ ๋ชจ๋ ๊ฒ์ ํด๊ฒฐํด ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ฝ๋ํ ์ธํ๋ผ(Infrastructure as Code)์ ๋ํด ๋ง์ํ์ จ๊ณ ๋ฌธ์ ๊ทธ๋๋ก ํ ์คํธ์ ๋ํด ํ ๋ง๋ ๋ง์ํ์ จ์ต๋๋ค. ๋ชจ๋์ ํ ์คํธ๊ฐ ํ์ํฉ๋๊น? ์ด๊ฒ์ ๋๊ตฌ์ ์ฑ ์์ ๋๊น? ์ง์ ์์ฑํด์ผ ํฉ๋๊น, ์๋๋ฉด ๋ชจ๋์ ์ฑ ์์ ๋๊น?
๋ด๋ ์๋ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ๊ฒ์ ํ ์คํธํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ ๋ณด๊ณ ์๋ก ๊ฐ๋ ์ฐจ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๋ฌด์์ ํ ์คํธํ ๊ฒ์ธ๊ฐ๊ฐ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ๋๋ค. ๋ง์ ์ข ์์ฑ๊ณผ ๋ค์ํ ๊ณต๊ธ์์ ์ ํ ์ฌํญ์ด ๋ง์ด ์์ต๋๋ค. ๋น์ ๊ณผ ๋ด๊ฐ ์ด์ผ๊ธฐํ ๋ ๋น์ ์ด โํ ์คํธ๊ฐ ํ์ํด์โ๋ผ๊ณ ๋งํ๋ฉด ๋๋ โ๋ฌด์์ ํ ์คํธํ ๊ฑด๊ฐ์?โ๋ผ๊ณ ๋ฌป์ต๋๋ค. ๋น์ ์ ๋น์ ์ ์ง์ญ์์ ํ ์คํธ๋ฅผ ํ ๊ฒ์ด๋ผ๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ด ์ง์ญ์์๋ ์ด๊ฒ์ด ์๋ํ์ง ์๋๋ค๊ณ ๋งํฉ๋๋ค. ์ฆ, ์ฐ๋ฆฌ๋ ์ด์ ๋์์กฐ์ฐจ ํ ์ ์์ต๋๋ค. ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๊ฐ ๋ง๋ค๋ ๊ฒ์ ๋งํ ๊ฒ๋ ์์ต๋๋ค. ์ฆ, ์ด๋ฌํ ํ ์คํธ๋ฅผ ์ ์ ํ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ ๋ ์ด ์ฃผ์ , ์ฆ ๊ทํ๊ฐ ์์ฑํ ์ธํ๋ผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ ๊ทน์ ์ผ๋ก ์ฐ๊ตฌํ๊ณ ์์ต๋๋ค. ์ฆ, ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ฉด ์ด๋ฅผ ์คํํด์ผ ํ๋ฉฐ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ํค, ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋ด ์ด๋ฆ์ ๋ฐ๋ ๋ฆฌ์ ๋๋ค. ์กฐ๊ธ ์ฒ ํ์ ์ธ ์ง๋ฌธ์ ํด๋ณด์. ์กฐ๊ฑด๋ถ๋ก ํ๋ก๋น์ ๋์ด ์๊ณ ๋ฐฐํฌ๊ฐ ์์ต๋๋ค. ํ๋ก๋น์ ๋์ ์ธํ๋ผ๋ฅผ ์์ฑํ๊ณ ๋ฐฐํฌ์์๋ ์๋ฒ, ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๊ณผ ๊ฐ์ ์ ์ฉํ ๊ฒ์ผ๋ก ์ฑ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ๋จธ๋ฆฟ์์๋ Terraform์ด ํ๋ก๋น์ ๋์ ๋ ์ ํฉํ๊ณ Ansible์ด ๋ฐฐํฌ์ ๋ ์ ํฉํฉ๋๋ค. ์๋ํ๋ฉด Ansible์ ๋ฌผ๋ฆฌ์ ์ธํ๋ผ์๋ ์ ํฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค. nginx, Postgres๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์์ Ansible์ ์๋ฅผ ๋ค์ด Amazon ๋๋ Google ๋ฆฌ์์ค์ ํ๋ก๋น์ ๋์ ํ์ฉํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๊ทธ๋ฌ๋ Terraform์ ์ฌ์ฉํ๋ฉด ํด๋น ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ผ๋ถ ์ํํธ์จ์ด๋ฅผ ๋ฐฐํฌํ ์๋ ์์ต๋๋ค. ๊ทํ์ ๊ด์ ์์ ๋ณผ ๋ Terraform๊ณผ Ansible ์ฌ์ด์ ์ผ์ข ์ ๊ฒฝ๊ณ๊ฐ ์์ต๋๊น? ์ด๋์์ ๋ฌด์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ต๋๊น? ์๋๋ฉด ์๋ฅผ ๋ค์ด Ansible์ด ์ด๋ฏธ ์ฐ๋ ๊ธฐ๋ผ๊ณ ์๊ฐํ์๋์? ๋ชจ๋ ๊ฒ์ Terraform์ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ์๊ฐํ์๋์?
์ข์ ์ง๋ฌธ์ด์์, ๋ฐ๋ ๋ฆฌ. ์ ๋ Terraform์ด 2014๋ ์ดํ๋ก ๋ชฉ์ ๋ฉด์์ ๋ณํ์ง ์์๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์ธํ๋ผ๋ฅผ ์ํด ๋ง๋ค์ด์ก๊ณ ์ธํ๋ผ๋ฅผ ์ํด ์ฃฝ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ ๊ตฌ์ฑ ๊ด๋ฆฌ Ansible์ ๋ํ ํ์์ฑ์ ๊ฐ๊ณ ์์๊ณ ์์ผ๋ก๋ ๊ทธ๋ด ๊ฒ์ ๋๋ค. ๋ฌธ์ ๋ launch_configuration ๋ด๋ถ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์์ Ansible ๋ฑ์ ๋์ด์ต๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ํ์ค ๊ตฌ๋ณ์ ๋๋ค.
์๋ฆ๋ค์ด ์ธํ๋ผ์ ๊ดํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๋ฉด ์ด ์ด๋ฏธ์ง๋ฅผ ์์งํ๋ Packer์ ๊ฐ์ ์ ํธ๋ฆฌํฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ Terraform์ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ด๋ฏธ์ง๋ฅผ ์ฐพ๊ณ ํด๋น launch_configuration์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ฆ, ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํ์ดํ๋ผ์ธ์ ๋จผ์ Tracker๋ฅผ ๊ฐ์ ธ์จ ๋ค์ Terraform์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น๋๊ฐ ๋ฐ์ํ๋ฉด ์๋ก์ด ๋ณ๊ฒฝ์ด ๋ฐ์ํฉ๋๋ค.
์๋ ํ์ธ์! ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ ์ด๋ฆ์ RBS ํ์ฌ ๋ฏธ์ค์ ๋๋ค. ๋ฆฌ์์ค๋ฅผ ์์ฑํ ๋ ํ๋ก๋น์ ๋๋ฅผ ํตํด Ansible์ ํธ์ถํ ์ ์์ต๋๋ค. Ansible์๋ ๋์ ์ธ๋ฒคํ ๋ฆฌ๋ผ๋ ์ฃผ์ ๋ ์์ต๋๋ค. ๋จผ์ Terraform์ ํธ์ถํ ๋ค์ Ansible์ ํธ์ถํ๋ฉด ์ํ์์ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ ์คํํ ์ ์์ต๋๋ค. ๋ฌด์์ด ๋ ์ข๋์?
์ฌ๋๋ค์ ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. AutoScaling ๊ทธ๋ฃน์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ง ์๋ค๋ฉด Ansible์ ๋์ ์ธ๋ฒคํ ๋ฆฌ๊ฐ ํธ๋ฆฌํ ๊ฒ ๊ฐ์ต๋๋ค. AutoScaling ๊ทธ๋ฃน์๋ ์ด๋ฏธ launch_configuration์ด๋ผ๋ ์์ฒด ํดํท์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. launch_configuration์๋ ์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ ๋ ์์ํด์ผ ํ๋ ๋ชจ๋ ํญ๋ชฉ์ ๊ธฐ๋กํฉ๋๋ค. ๋ฐ๋ผ์ Amazon์์๋ ๋์ ์ธ๋ฒคํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ Terraform ts ํ์ผ์ ์ฝ๋ ๊ฒ์ด ๊ณผ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ "์๋ ํ์ฅ ๊ทธ๋ฃน"์ด๋ผ๋ ๊ฐ๋ ์ด ์๋ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ(์: DigitalOcean ๋๋ ์๋ ํ์ฅ ๊ทธ๋ฃน์ด ์๋ ๋ค๋ฅธ ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ) ์๋์ผ๋ก API๋ฅผ ๊ฐ์ ธ์์ IP ์ฃผ์๋ฅผ ์ฐพ๊ณ , ์์ฑํด์ผ ํฉ๋๋ค. ๋์ ์ธ๋ฒคํ ๋ฆฌ ํ์ผ์ด๋ฉฐ Ansible์ ์ด๋ฏธ ์ด๋ฅผ ํ์ํ ๊ฒ์ ๋๋ค. ์ฆ, Amazon์๋ launch_configuration์ด ์๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์๋ ๋์ ์ธ๋ฒคํ ๋ฆฌ๊ฐ ์์ต๋๋ค.
์ถ์ฒ : habr.com