Terraform์—์„œ CloudFormation์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ํ›„ํšŒํ•จ

์ธํ”„๋ผ๋ฅผ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ํ…์ŠคํŠธ ํ˜•์‹์˜ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ฅ๋ฅผ ์กฐ์ž‘ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ์ด ๊ด€ํ–‰์—๋Š” ์ด๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ, ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ํŠนํžˆ AWS์—์„œ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ๋ผ ํผ ะธ ํด๋ผ์šฐ๋“œ ํฌ๋ฉ”์ด์…˜.

Terraform์—์„œ CloudFormation์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ํ›„ํšŒํ•จ
Terraform ๋ฐ CloudFormation ๊ฒฝํ—˜ ๋น„๊ต

์˜ค๊ธฐ ์ „์— ์”ฐ๋ฃฉ ์”ฐ๋ฃฉ ์›€์ง์ด๋‹ค (์ผ๋ช… ์•„๋งˆ์กด ์ฃผ๋‹ˆ์–ด) ๋‚˜๋Š” ์ผํ–ˆ๋‹ค ํ•œ ์Šคํƒ€ํŠธ์—…์—์„œ Terraform์„ XNUMX๋…„ ๋™์•ˆ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ณณ์—์„œ๋„ ์ €๋Š” Terraform์„ ์˜จ ํž˜์„ ๋‹คํ•ด ์‚ฌ์šฉํ–ˆ๊ณ  ํšŒ์‚ฌ๋Š” CloudFormation์„ ํฌํ•จํ•˜์—ฌ Amazon๊ณผ ๊ฐ™์€ ๋ชจ๋“  ๊ฒƒ์œผ๋กœ ์ „ํ™˜์„ ์ถ”์ง„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋ถ€์ง€๋Ÿฐํžˆ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ ๋งค์šฐ ๋ณต์žกํ•œ ์กฐ์ง ์ „๋ฐ˜์˜ ์›Œํฌํ”Œ๋กœ์—์„œ ๋‘ ๋„๊ตฌ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— Terraform์—์„œ CloudFormation์œผ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์‹ ์ค‘ํ•˜๊ฒŒ ํ‰๊ฐ€ํ•œ ํ›„ Terraform์ด ์•„๋งˆ๋„ ์กฐ์ง์„ ์œ„ํ•œ ์ตœ์„ ์˜ ์„ ํƒ์ผ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ๋ผํผ ๋”์ฐํ•œ

๋ฒ ํƒ€ ์†Œํ”„ํŠธ์›จ์–ด

Terraform์€ ์•„์ง ๋ฒ„์ „ 1.0๋„ ์ถœ์‹œํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ ์ œ๊ฐ€ ์ง์ ‘ ํ•ด๋ดค์„ ๋•Œ์™€ ๋งŽ์ด ๋‹ฌ๋ผ์กŒ๋Š”๋ฐ, ๊ทธ๋•Œ๋Š” terraform apply ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์—…๋ฐ์ดํŠธ ํ›„์— ๋˜๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ์‚ฌ์šฉํ•œ ํ›„์— ๊ณ ์žฅ์ด ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ชจ๋“  ๊ฒƒ์ด ๋‹ฌ๋ผ์กŒ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์ง€๋งŒ... ๋‹ค๋“ค ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜๋Š” ๊ฒƒ ๊ฐ™์ฃ ? ์ ์ ˆํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉฐ ์‹ฌ์ง€์–ด ๋ฆฌ์†Œ์Šค ์ €์žฅ์†Œ์˜ ๊ตฌ๋ฌธ๊ณผ ์ถ”์ƒํ™”๊ฐ€ ์ด์ œ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ์•…๊ธฐ๊ฐ€ ์ •๋ง ์ข‹์•„์ง„ ๊ฒƒ ๊ฐ™๊ธด ํ•œ๋ฐ... :-0

๋ฐ˜๋ฉด์— AWS๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์ž˜ ์œ ์ง€ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋งˆ๋„ ํ•ด๋‹น ์„œ๋น„์Šค๊ฐ€ ์กฐ์ง ๋‚ด์—์„œ ์ฒ ์ €ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ๋œ ๋‹ค์Œ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์–ด ๊ฒŒ์‹œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ โ€œ๊ทธ๋“ค์€ ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ–ˆ๋‹คโ€๋Š” ๋ง์€ ์ ˆ์ œ๋œ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. AWS๋งŒํผ ๋‹ค์–‘ํ•˜๊ณ  ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์—์„œ API์™€์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์—„์ฒญ๋‚˜๊ฒŒ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ณต์šฉ API๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ–ˆ๋˜ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์˜ค๋žœ ์„ธ์›” ๋™์•ˆ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ ๊ธฐ์–ต์œผ๋กœ๋Š” CloudFormation์˜ ๋™์ž‘์€ ์ˆ˜๋…„์ด ์ง€๋‚˜๋„ ํ•œ ๋ฒˆ๋„ ๋ณ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋‚˜... ์ด์•Œ์ด์•ผ

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜์„ธ์š”. ๋ฌธ์™ธํ•œ CF ์Šคํƒ์˜ CloudFormation ์Šคํƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Terraform์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฆฌ์†Œ์Šค๋ฅผ ์Šคํƒ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์€ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํฐ ํž˜์—๋Š” ํฐ ์ฑ…์ž„์ด ๋”ฐ๋ฅธ๋‹ค. ์Šคํƒ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋ฉฐ, ์Šคํƒ ์ž‘์—… ์ค‘์—๋Š” ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๋‚  ๊ทธ๊ฒƒ์€ ์—ญํšจ๊ณผ๋ฅผ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๋‚  Twitch์—์„œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์•„๋ฌด๋Ÿฐ ์žฅ๋‚œ๋„ ํ•˜์ง€ ์•Š์€ ์ฑ„ ์‹ค์ˆ˜๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ AWS ๋ณด์•ˆ ๊ทธ๋ฃน์„ ์ž์‹ ์˜ Terraform ์Šคํƒ์œผ๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ช…๋ น์„ ์ž…๋ ฅํ–ˆ๋Š”๋ฐ... ๋ณด์•ˆ ๊ทธ๋ฃน(์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ๊ณผ ํ•จ๊ป˜)์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

ํ…Œ๋ผํผ ๊ทธ๋ ˆ์ดํŠธ

๋ถˆ์™„์ „ํ•œ ์ƒํƒœ์—์„œ ๋ณต๊ตฌ

๋•Œ๋•Œ๋กœ CloudFormation์ด ํ•œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ƒํƒœ๋กœ ์™„์ „ํžˆ ์ „ํ™˜๋˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ๊ทธ๋Š” ์ด์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ•ญ์ƒ ๊ฐ€๋Šฅํ•˜์ง€๋Š” ์•Š๋‹ค๋Š” ๊ฒƒ์ด ์œ ๊ฐ์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋ฐœ์ƒํ•œ ์ผ์„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๋ฌด์„œ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CloudFormation์ด ํ•ดํ‚น๋‹นํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ๋ปํ• ์ง€ ์—ฌ๋ถ€๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ด์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์‹ค์ œ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ์ ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋งค๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— Terraform์€ ์‹คํŒจํ•œ ์ „ํ™˜์„ ํ›จ์”ฌ ๋” ์ ์ ˆํ•˜๊ฒŒ ๋ณต๊ตฌํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์œผ๋ฉฐ ๊ณ ๊ธ‰ ๋””๋ฒ„๊น… ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ ์ƒํƒœ์— ๋Œ€ํ•œ ๋” ๋ช…ํ™•ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ

โ€œ์ข‹์•„์š”, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๋ฐ”๋€Œ๊ณ  ์žˆ์–ด์š”. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ป๊ฒŒ์š”?"

โ€”'์ˆ˜๋ฝ' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ์ค€๋น„๊ฐ€ ๋œ ๋ถˆ์•ˆํ•œ ์—”์ง€๋‹ˆ์–ด.

๋•Œ๋กœ๋Š” ํฌํŠธ ๋ฒˆํ˜ธ ์ถ”๊ฐ€, ๋ณด์•ˆ ๊ทธ๋ฃน ๋ณ€๊ฒฝ ๋“ฑ CloudFormation ์Šคํƒ์˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์กฐ์ž‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ClouFormation์€ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ œ๋Œ€๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•„์š”ํ•œ ๊ฒƒ์„ ์ง€์šฐ์ง€ ์•Š์•˜๋Š”์ง€ ๋ถˆํ•„์š”ํ•œ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด yaml ํŒŒ์ผ์„ XNUMX๋ฒˆ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด์™€ ๊ด€๋ จํ•˜์—ฌ Terraform์€ ํ›จ์”ฌ ๋” ํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ๊ทธ๋Š” ๋„ˆ๋ฌด ํˆฌ๋ช…ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค(์ฝ๊ธฐ: ์ง€๋ฃจํ•จ). ๋‹คํ–‰ํžˆ ์ตœ์‹  ๋ฒ„์ „์—๋Š” ๊ฐœ์„ ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ‘œ์‹œ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ์ด์ œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ •ํ™•ํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ์—ฐ์„ฑ

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฑฐ๊พธ๋กœ ์ž‘์„ฑํ•˜์„ธ์š”.

์ง์„ค์ ์œผ๋กœ ๋งํ•˜๋ฉด, ์ˆ˜๋ช…์ด ๊ธด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํŠน์ง•์€ ๋ณ€ํ™”์— ์ ์‘ํ•˜๋Š” ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฑฐ๊พธ๋กœ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ "๊ฐ„๋‹จํ•œ" ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋‹จ์ผ CloudFormation ๋˜๋Š” Terraform ์Šคํƒ์— ์ง‘์–ด๋„ฃ๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ ์‹ค์ˆ˜๋ฅผ ์ €์งˆ๋ €์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก , ๋ช‡ ๋‹ฌ ํ›„์— ์ œ๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ž˜๋ชป ์ดํ•ดํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋“œ๋Ÿฌ๋‚ฌ๊ณ , ์‹ค์ œ๋กœ ์„œ๋น„์Šค๋„ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค! ์ด์ œ ์–ด๋–ป๊ฒŒ๋“  ํฐ ์Šคํƒ์„ ์ž‘์€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CloudFormation์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ๋จผ์ € ๊ธฐ์กด ์Šคํƒ์„ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ๋งŒ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ €๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— Terraform์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํƒ์„ ๋ถ„ํ•ดํ•˜๊ณ  ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git์˜ ๋ชจ๋“ˆ

์—ฌ๋Ÿฌ ์Šคํƒ์—์„œ Terraform ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์€ CloudFormation ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. Terraform์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ git ์ €์žฅ์†Œ์— ๋ฐฐ์น˜ํ•˜๊ณ  ์˜๋ฏธ ์ฒด๊ณ„ ๋ฒ„์ „ ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ๊ณต์œ  ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CloudFormation๊ณผ ๋™๋“ฑํ•œ ๊ฒƒ์€ S3์ด์ง€๋งŒ ๋™์ผํ•œ ์ด์ ์ด ์—†์œผ๋ฉฐ S3๋ฅผ ์œ„ํ•ด git์„ ํฌ๊ธฐํ•ด์•ผ ํ•  ์ด์œ ๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

์กฐ์ง์€ ์„ฑ์žฅํ–ˆ๊ณ  ๊ณตํ†ต ์Šคํƒ์„ ๊ณต์œ ํ•˜๋Š” ๋Šฅ๋ ฅ์€ ์ค‘์š”ํ•œ ์ˆ˜์ค€์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. Terraform์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์ด ์‰ฝ๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์›Œ์ง€๋Š” ๋ฐ˜๋ฉด, CloudFormation์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋กœ์„œ์˜ ์ž‘์—…

"๋Œ€๋ณธ์„ ์“ฐ์ž. ์•Œ์•˜์–ด."

โ€”Terraform ์ž์ „๊ฑฐ๋ฅผ ๋ฐœ๋ช…ํ•˜๊ธฐ 3๋…„ ์ „ ์—”์ง€๋‹ˆ์–ด์˜€์Šต๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์žˆ์–ด Go๋‚˜ Java ํ”„๋กœ๊ทธ๋žจ์€ ๋‹จ์ˆœํ•œ ์ฝ”๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

Terraform์—์„œ CloudFormation์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ํ›„ํšŒํ•จ
์ฝ”๋“œ๋กœ์„œ์˜ ์ฝ”๋“œ

๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ์ธํ”„๋ผ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Terraform์—์„œ CloudFormation์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ํ›„ํšŒํ•จ
์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ

๊ทธ๋Ÿฐ๋ฐ ๊ทธ ์‚ฌ๋žŒ์€ ์–ด๋””์„œ ์™”๋‚˜์š”? ์–ด๋–ป๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋‚˜์š”? ๊ท€ํ•˜์˜ ์ฝ”๋“œ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ ‘๊ทผ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ๊ฐ€์š”?

Terraform์—์„œ CloudFormation์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ํ›„ํšŒํ•จ
์ฝ”๋“œ๋กœ์„œ์˜ ์ž‘์—…

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

AWS๋งŒ์ด ์œ ์ผํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๊ณต๊ธ‰์ž๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. SignalFx, PagerDuty ๋˜๋Š” Github. CI/CD์šฉ ๋‚ด๋ถ€ Jenkins ์„œ๋ฒ„๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ๋ชจ๋‹ˆํ„ฐ๋ง์šฉ ๋‚ด๋ถ€ Grafana ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ โ€‹โ€‹์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Infra as Code๋Š” ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ์„ ํƒ๋˜์—ˆ์œผ๋ฉฐ ๊ฐ๊ฐ์€ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์— ๋˜‘๊ฐ™์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ œ๊ฐ€ Twitch์—์„œ ์ผํ•  ๋•Œ Amazon์˜ ํ˜ผํ•ฉ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ๊ณผ AWS ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์„œ๋น„์Šค๋ฅผ ๊ฐ€์†ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋Œ€๋Ÿ‰ ์ƒ์‚ฐํ•˜๊ณ  ์ง€์›ํ•˜์—ฌ ์šด์˜ ๋น„์šฉ์„ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค. ํ† ๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ะฏ: ์  ์žฅ, ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์˜ค๋ฒ„ํด๋Ÿญํ•˜๋ ค๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ ๋™์ž‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. AWS ๊ณ„์ •์„ ๋งŒ๋“ค๋ ค๋ฉด ์ด ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์šฐ๋ฆฌ๋Š” 2๊ฐœ์˜ ๊ณ„์ •์œผ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค) ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค), ์•Œ๋ฆผ ์„ค์ •์šฉ, ์ฝ”๋“œ ์ €์žฅ์†Œ์šฉ, ์ด๋ฉ”์ผ ๋ชฉ๋ก์šฉ, ๊ทธ๋ฆฌ๊ณ โ€ฆ
  • ์„ ๋‘: ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ะฏ: ์ข‹์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋‚ด์žฅ๋œ Amazon ์žฅ์น˜๊ฐ€ ๋ชจ๋‘ ์ตœ์‹  ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ๋‘: ์ข‹์€ ๊ฒƒ ๊ฐ™์•„์š”. ๊ทธ๋ฆฌ๊ณ  ์ด์— ๋Œ€ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ะฏ: ์—„์ฒญ๋‚œ! ๊ทธ๋ฆฌ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋Š” ์—ฌ์ „ํžˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ›์•„๋“ค์ผ๊นŒ์š”?
  • ์„ ๋‘: ๊ทธ๊ฐ€ ๊ฐ€๋Š” ๊ณณ์œผ๋กœ ๋ฐ๋ ค๊ฐ€๋„๋ก ํ•ด์ฃผ์„ธ์š”!
  • ะฏ: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ์ผ์ข…์˜ ์˜๋ฏธ๋ก ์  ๋ฒ„์ „ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ๋‘: ์ข‹์€ ์ƒ๊ฐ์ด์—์š”!
  • ะฏ: ๋„๊ตฌ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์—์„œ ์ˆ˜๋™์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

...3๋…„ ํ›„:

  • ์„ ๋‘: ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ํ…Œ๋ผํผ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์•ผ๊ธฐ์˜ ๊ตํ›ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋งˆ์กด์˜ ๋ชจ๋“  ๊ฒƒ์—์„œ ๋จธ๋ฆฌ๋ฅผ ์ˆ™์ด์„ธ์š”, ์—ฌ์ „ํžˆ AWS๊ฐ€ ์•„๋‹Œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค์—๋Š” ๊ตฌ์„ฑ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ƒํƒœ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

CloudFormation ๋žŒ๋‹ค์™€ git ๋ชจ๋“ˆ terraform

๋žŒ๋‹ค๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ๋…ผ๋ฆฌ ๋ฌธ์ œ์— ๋Œ€ํ•œ CloudFormation์˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งคํฌ๋กœ ๋งŒ๋“ค๊ธฐ ๋˜๋Š” ์‚ฌ์šฉ์ž ๋ฆฌ์†Œ์Šค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ Terraform์˜ git ๋ชจ๋“ˆ ์˜๋ฏธ ์ฒด๊ณ„ ๋ฒ„์ „ ๊ด€๋ฆฌ์—๋Š” ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ๋ณต์žก์„ฑ์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ๊ฐ€์žฅ ์‹œ๊ธ‰ํ•œ ๋ฌธ์ œ๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž ๋žŒ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์ˆ˜์‹ญ ๊ฐœ์˜ AWS ๊ณ„์ •)์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ๋ฌธ์ œ๋Š” "๋‹ญ์ด ๋จผ์ €๋ƒ, ๋‹ฌ๊ฑ€์ด ๋จผ์ €๋ƒ"๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋žŒ๋‹ค ์ฝ”๋“œ์™€ ๊ด€๋ จ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ ์ธํ”„๋ผ์ด์ž ์ฝ”๋“œ์ด๋ฉฐ, ๊ทธ ์ž์ฒด๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€์˜ ๋งˆ์ง€๋ง‰ ๋ชป์€ ๋žŒ๋‹ค ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜๋ฏธ๋ก ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ง์ ‘์ ์ธ ๋ช…๋ น์ด ์—†๋Š” ์Šคํƒ ์ž‘์—…์ด ์‹คํ–‰ ๊ฐ„์— ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์‹ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Elastic Beanstalk ํ™˜๊ฒฝ์„ ์œ„ํ•œ ์นด๋‚˜๋ฆฌ์•„ ๋ฐฐํฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ธฐ์–ต์ด ๋‚ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ์˜†์— EB์— ๋Œ€ํ•œ ๋‘ ๋ฒˆ์งธ ๋ฐฐํฌ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€ ์ž๋™ ํ™•์žฅ ์นด๋‚˜๋ฆฌ์•„ ๋ฐฐํฌ ๊ทธ๋ฃน๊ณผ ๋ฐฐํฌ LB๋ฅผ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Terraform์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๋ก ์ ์œผ๋กœ ASG ๋นˆํ†ก, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” Terraform์— 4์ค„์˜ ์ถ”๊ฐ€ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. CloudFormation์— ๋น„์Šทํ•œ ์†”๋ฃจ์…˜์ด ์žˆ๋Š”์ง€ ๋ฌผ์—ˆ์„ ๋•Œ ๊ทธ๋“ค์€ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๋ชจ๋“  ๊ฒƒ์ด ํฌํ•จ๋œ ์ „์ฒด Git ์ €์žฅ์†Œ๋ฅผ ๊ฐ€๋ฆฌ์ผฐ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ์—ด์•…ํ•œ Terraform ์ฝ”๋“œ 4์ค„๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋“œ๋ฆฌํ”„ํŠธ๋ฅผ ๋” ์ž˜ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์‹ค์ด ๊ธฐ๋Œ€์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋“œ๋ฆฌํ”„ํŠธ ๊ฐ์ง€ ํ˜„์‹ค์ด ๊ธฐ๋Œ€์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ๊ธฐ๋Šฅ์œผ๋กœ์„œ์˜ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. CloudFormation๊ณผ Terraform ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๋•์…˜ ์Šคํƒ์ด ์„ฑ์žฅํ•จ์— ๋”ฐ๋ผ CloudFormation์—์„œ ๋“œ๋ฆฌํ”„ํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ž˜๋ชป๋œ ๊ฐ์ง€๊ฐ€ ์ ์  ๋” ๋งŽ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

Terraform์„ ์‚ฌ์šฉํ•˜๋ฉด ๋“œ๋ฆฌํ”„ํŠธ ๊ฐ์ง€๋ฅผ ์œ„ํ•œ ํ›จ์”ฌ ๋” ๋ฐœ์ „๋œ ์ˆ˜๋ช… ์ฃผ๊ธฐ ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์‹œ_๋ณ€๊ฒฝ ์ „์ฒด ECS ๋ฐฐํฌ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฌด์‹œํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ์ž‘์—… ์ •์˜์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฌด์‹œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ECS ์ž‘์—… ์ •์˜์—์„œ ์ง์ ‘.

CDK์™€ CloudFormation์˜ ๋ฏธ๋ž˜

CloudFormation์€ ๋Œ€๊ทœ๋ชจ ์ธํ”„๋ผ ๊ฐ„ ๊ทœ๋ชจ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์–ด๋ ค์›€ ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด ์ธ์‹๋˜๊ณ  ๋„๊ตฌ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. aws-cdk, ์ฝ”๋“œ๋กœ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๋ฅผ ์ •์˜ํ•˜๊ณ  AWS CloudFormation์„ ํ†ตํ•ด ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. aws-cdk์˜ ๋ฏธ๋ž˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ ์ง€ ์ง€์ผœ๋ณด๋Š” ๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ด์ง€๋งŒ Terraform์˜ ๋‹ค๋ฅธ ๊ฐ•์ ๊ณผ ๊ฒฝ์Ÿํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. CloudFormation์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ „์—ญ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Terraform์ด ์‹ค๋งํ•˜์ง€ ์•Š๋„๋ก

์ด๊ฒƒ์€ "ํ…์ŠคํŠธ"๊ฐ€ ์•„๋‹Œ "์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ"์ž…๋‹ˆ๋‹ค.

Terraform์— ๋Œ€ํ•œ ๋‚˜์˜ ์ฒซ์ธ์ƒ์€ ๋‹ค์†Œ ๋‚˜๋นด์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ์—”์ง€๋‹ˆ์–ด๋Š” ์ด๋ฅผ ์›ํ•˜๋Š” ์ธํ”„๋ผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ฌด์˜์‹์ ์œผ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ์›์น™์€ Terraform์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ฑ„ํƒ๋œ ๋งŽ์€ ๊ด€ํ–‰์ด Terraform์—์„œ ๋ฌด์‹œ๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ข‹์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋…„๊ฐ„ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ Terraform์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ด์œ ๋งŒ์œผ๋กœ ์ด ๊ฒฝํ—˜์„ ํฌ๊ธฐํ•˜์ง€ ๋งˆ์„ธ์š”. ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ์›์น™์€ Terraform์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์—†๋‚˜์š”?

๋ฌธ์„œ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ฑฐ๋Œ€ํ•œ Terraform ์Šคํƒ์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๊ฐ€ ์ „ํ˜€ ์—†์ด ์–ด๋–ป๊ฒŒ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์•”ํ˜ธ Terraform('์ฝ”๋“œ'๋ผ๋Š” ๋‹จ์–ด ๊ฐ•์กฐ), ์ด ์„น์…˜์ด ์ค‘์š”ํ•œ ์ด์œ  ๋ฐ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…

ํ•œ๋•Œ ํ•˜๋‚˜์˜ ํฐ main() ๊ธฐ๋Šฅ์ด์—ˆ๋˜ ์„œ๋น„์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ €๋Š” ๋งค์šฐ ๋ณต์žกํ•œ Terraform ์Šคํƒ์ด ๋‹จ์ผ ๋ชจ๋“ˆ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฐฐํฌํ•˜๋ฉด ์–ด๋–จ๊นŒ์š”? ์™œ ํฐ ๊ธฐ๋Šฅ์„ ๋” ์ž‘์€ ๊ธฐ๋Šฅ์œผ๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๊นŒ? Terraform์—๋„ ๋™์ผํ•œ ๋‹ต๋ณ€์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์ด ๋„ˆ๋ฌด ํฌ๋ฉด ๋” ์ž‘์€ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ํšŒ์‚ฌ๋Š” ๋„์„œ๊ด€์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์—”์ง€๋‹ˆ์–ด๋“ค์ด Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์–ด๋ฆฌ์„๊ฒŒ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ๊ฑฐ๋Œ€ํ•œ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์— ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ ๋„ฃ์€ ๋‹ค์Œ ์ž‘์—…์ด ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ํšŒ์‚ฌ์—์„œ๋Š” "์ „ํˆฌ" ์ฝ”๋“œ๋กœ ์ด๋Ÿฐ ์ผ์„ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๋„์„œ๊ด€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ, ๋ชจ๋“  ๊ฒƒ์ด ๋„์„œ๊ด€์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์›์น™์ ์œผ๋กœ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ?!

PEP8์ด๋‚˜ gofmt๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์—๋Š” ํ—ˆ์šฉ๋˜๋Š” ํ‘œ์ค€ ํ˜•์‹ ์ฒด๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Python์—์„œ๋Š” PEP8์ž…๋‹ˆ๋‹ค. In Go - gofmt. Terraform์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. terraform fmt. ๊ฑด๊ฐ•์„ ์œ„ํ•ด ์ฆ๊ฒจ๋ณด์„ธ์š”!

JavaScript๋ฅผ ๋ชจ๋ฅด๊ณ  React๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

Terraform ๋ชจ๋“ˆ์€ ์ƒ์„ฑํ•˜๋Š” ๋ณต์žกํ•œ ์ธํ”„๋ผ์˜ ์ผ๋ถ€๋ฅผ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์ „ํ˜€ ๋‹ค๋ฃฐ ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋ฅผ ์ดํ•ดํ•˜์ง€ ์•Š๊ณ ๋„ Terraform์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ์‹ญ๋‹ˆ๊นŒ? ๋‹น์‹ ์€ ์šด๋ช…์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์€ ํ๋ฅด๊ณ  ๊ฒฐ์ฝ” Terraform์„ ๋งˆ์Šคํ„ฐํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ฑ๊ธ€ํ†ค์ด๋‚˜ ์ข…์†์„ฑ ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋”ฉํ•˜๊ณ  ์žˆ๋‚˜์š”?

์ข…์†์„ฑ ์ฃผ์ž…์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์ธ์ •๋ฐ›๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€์ด๋ฉฐ ์‹ฑ๊ธ€ํ†ค๋ณด๋‹ค ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Terraform์—์„œ ์–ด๋–ป๊ฒŒ ์œ ์šฉํ•ฉ๋‹ˆ๊นŒ? ์›๊ฒฉ ์ƒํƒœ์— ์˜์กดํ•˜๋Š” Terraform ๋ชจ๋“ˆ์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์ƒํƒœ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋“ˆ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๋„์„œ๊ด€์€ ์—ด ๊ฐ€์ง€ ์ผ์„ ์ž˜ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ํ•œ ๊ฐ€์ง€ ํ›Œ๋ฅญํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ž์‹ ์ด ๋งค์šฐ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์— ์ง‘์ค‘ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ Terraform ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹  ํ•œ ๊ฐ€์ง€ ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋นŒ๋“œํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•„์š”์— ๋”ฐ๋ผ ๊ฒฐํ•ฉํ•˜์‹ญ์‹œ์˜ค.

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ์—†์ด ์–ด๋–ป๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๊นŒ?

์ผ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ Terraform ๋ชจ๋“ˆ์€ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์œผ๋ฉด์„œ ์–ด๋–ป๊ฒŒ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๋•Œ ์„ฑ๊ฐ€์‹  ์ผ์ด๋ฉฐ, Terraform ๋ชจ๋“ˆ์—์„œ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. Terraform ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” git ํƒœ๊ทธ์™€ semver๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ํ”„๋กœ๋•์…˜ ์„œ๋น„์Šค๊ฐ€ ๋…ธํŠธ๋ถ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

Hashicorp์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ๋ผํผ ํด๋ผ์šฐ๋“œ ํ…Œ๋ผํผ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Terraform ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ, ๊ฐ์‚ฌ, ์Šน์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์—”์ง€๋‹ˆ์–ด๋Š” ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์‹ํ•˜์ง€๋งŒ Terraform์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ํ…Œ์ŠคํŠธ๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ธํ”„๋ผ์˜ ๊ฒฝ์šฐ ์ด๋Š” ์œ„ํ—˜ํ•œ ์ˆœ๊ฐ„์œผ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์กฐ์–ธํ•˜๋Š” ๊ฒƒ์€ CI/CD ์ค‘์— ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ์„ "ํ…Œ์ŠคํŠธ"ํ•˜๊ฑฐ๋‚˜ "์˜ˆ์ œ ์ƒ์„ฑ"ํ•˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Terraform ๋ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ์—…์˜ ์ƒ์‚ฌ๋Š” ์ƒˆ๋กœ์šด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์›Œํฌ์Šคํƒ์˜ ์†๋„, ํ˜์‹ , ์ค‘๋‹จ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์™€ ๊ด€๋ จ๋˜์–ด ์ œ๊ฑฐํ•  ์ˆ˜ ์—†๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ถ€์ •์ ์ธ ์ธก๋ฉด์€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์ž‘์—…๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Terraform์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ์ธํ”„๋ผ ์ธก๋ฉด๋งŒ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋งŒ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์‹œ์Šคํ…œ์˜ ์ง„์ •ํ•œ ์ด์ ์„ ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ๋Š” ์ด๋ฏธ ๋ชจ๋“  ๊ฒƒ์ด ์ฝ”๋“œ์™€ ๊ฐ™์•„.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€