๐Ÿš€ Terraform Day 22: AWS์—์„œ ๋ณด์•ˆ๋œ 2๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ (EC2 + RDS)

๋ฐœํ–‰: (2025๋…„ 12์›” 28์ผ ์˜คํ›„ 08:39 GMT+9)
4 ๋ถ„ ์†Œ์š”
์›๋ฌธ: Dev.to

Source: Dev.to

Cover image for ๐Ÿš€ Terraform Day 22: Secure Two-Tier Architecture on AWS (EC2 + RDS)

๐Ÿงฑ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

๋ฐฐํฌ๋œ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

๐ŸŒ ์›น ํ‹ฐ์–ด

  • ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท์— ์œ„์น˜ํ•œ EC2 ์ธ์Šคํ„ด์Šค
  • ํผ๋ธ”๋ฆญ DNS๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
  • ์ธ๋ฐ”์šด๋“œ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๋ณด์•ˆ ๊ทธ๋ฃน ์‚ฌ์šฉ

๐Ÿ—„๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ‹ฐ์–ด

  • MySQL RDS ์ธ์Šคํ„ด์Šค
  • ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท์— ํ˜ธ์ŠคํŒ…
  • ์ง์ ‘์ ์ธ ์ธํ„ฐ๋„ท ์ ‘๊ทผ ๋ถˆ๊ฐ€
  • ์›น ํ‹ฐ์–ด ๋ณด์•ˆ ๊ทธ๋ฃน์—์„œ๋งŒ ํŠธ๋ž˜ํ”ฝ ํ—ˆ์šฉ

๐Ÿ” ์‹œํฌ๋ฆฟ ๊ด€๋ฆฌ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๋ช… ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑ
  • AWS Secrets Manager์— ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ
  • EC2๊ฐ€ ๋ถ€ํŒ… ์‹œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ(user data)๋ฅผ ํ†ตํ•ด ์กฐํšŒ

๐Ÿงฉ Terraform ๋ชจ๋“ˆ ์„ค๊ณ„

์ด ํ”„๋กœ์ ํŠธ๋Š” ์‹ค์ œ ํ˜„์—…์—์„œ ์ค‘์š”ํ•œ ๋งž์ถคํ˜• Terraform ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋œ ๋ชจ๋“ˆ:

  • VPC ๋ชจ๋“ˆ โ€“ VPC, ํผ๋ธ”๋ฆญ ๋ฐ ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท, ์ธํ„ฐ๋„ท ๊ฒŒ์ดํŠธ์›จ์ด, NAT ๊ฒŒ์ดํŠธ์›จ์ด, ๋ผ์šฐํŠธ ํ…Œ์ด๋ธ”
  • ๋ณด์•ˆ ๊ทธ๋ฃน ๋ชจ๋“ˆ โ€“ ์›น SG(HTTP ์ ‘๊ทผ), DB SG(MySQL ์ ‘๊ทผ์€ ์›น SG์—์„œ๋งŒ)
  • ์‹œํฌ๋ฆฟ ๋ชจ๋“ˆ โ€“ ๋žœ๋ค ๋น„๋ฐ€๋ฒˆํ˜ธ ์ƒ์„ฑ, Secrets Manager ์ €์žฅ
  • RDS ๋ชจ๋“ˆ โ€“ MySQL ์ธ์Šคํ„ด์Šค, ํ”„๋ผ์ด๋น— ์„œ๋ธŒ๋„ท ๋ฐฐ์น˜, Secrets Manager์—์„œ ์ฃผ์ž…๋œ ์ž๊ฒฉ ์ฆ๋ช…

๋ฃจํŠธ ๋ชจ๋“ˆ์€ ๋ชจ๋“ˆ ๊ฐ„ ์ถœ๋ ฅ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด์„œ ์ „์ฒด๋ฅผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” ๋ณด์•ˆ ์ž๊ฒฉ ์ฆ๋ช… ์ฒ˜๋ฆฌ (ํ•ต์‹ฌ)

Dayโ€ฏ22์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ตํ›ˆ ์ค‘ ํ•˜๋‚˜:

  • โŒ Terraform ์ฝ”๋“œ์— ์ž๊ฒฉ ์ฆ๋ช… ํฌํ•จ ๊ธˆ์ง€

  • โŒ variables.tf์— ์ž๊ฒฉ ์ฆ๋ช… ํฌํ•จ ๊ธˆ์ง€

  • โŒ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์Šคํฌ๋ฆฝํŠธ์— ์ž๊ฒฉ ์ฆ๋ช… ํฌํ•จ ๊ธˆ์ง€

  • โœ… random_password๋ฅผ ์‚ฌ์šฉํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ƒ์„ฑ

  • โœ… AWS Secrets Manager์— ์ €์žฅ

  • โœ… ๋Ÿฐํƒ€์ž„์— ์•ˆ์ „ํ•˜๊ฒŒ ์กฐํšŒ

์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

โš™๏ธ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

EC2 ์ธ์Šคํ„ด์Šค๋Š” ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  • ์‹œ์Šคํ…œ ์˜์กด์„ฑ ์„ค์น˜
  • Python ๋ฐ Flask ์„ค์น˜
  • Secrets Manager์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๊ฒฉ ์ฆ๋ช… ๊ฐ€์ ธ์˜ค๊ธฐ
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
  • Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž๋™ ์‹œ์ž‘

๊ฒฐ๊ณผ: ์ธํ”„๋ผ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•จ๊ป˜ ๋ฐฐํฌ๋˜์–ด ์™„์ „ ์ž๋™ํ™”๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”„ ์‚ฌ์šฉ๋œ Terraform ์›Œํฌํ”Œ๋กœ์šฐ

ํ‘œ์ค€์ด๋ฉฐ ํ”„๋กœ๋•์…˜์— ์•ˆ์ „ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ:

terraform init
terraform plan
terraform apply

์ฃผ์˜ ์‚ฌํ•ญ:

  • RDS ํ”„๋กœ๋น„์ €๋‹์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉฐ ์ด๋Š” ์ •์ƒ์ ์ธ ๋™์ž‘์ž…๋‹ˆ๋‹ค.
  • ์ถœ๋ ฅ๊ฐ’์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์šฉ ๋ฐœ์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ํ›„ ์ธํ”„๋ผ๋ฅผ ๋ฐ˜๋“œ์‹œ ํŒŒ๊ดดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

Terraform ํƒ€์ž… ์ œ์•ฝ: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ทœ๋ชจ AWS๋ฅผ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€

Terraform์˜ type constraints๋Š” AWS ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์‰ฝ๊ฒŒ ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” IaC๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. AWS var๋ฅผ ๋ณด์žฅํ•˜๋Š”โ€ฆ

ClickOps์—์„œ DevOps๋กœ: Terraform์„ ์‚ฌ์šฉํ•œ ๋‚˜์˜ ์ฒซ ๋ฒˆ์งธ Infrastructure as Code ํ”„๋กœ์ ํŠธ

์†Œ๊ฐœ ์•„ํ‚คํ…์ฒ˜ - VPC: ๋งž์ถคํ˜• Virtual Private Cloud. - Subnet: ์ธ์Šคํ„ด์Šค๋ฅผ ์œ„ํ•œ ํผ๋ธ”๋ฆญ ์„œ๋ธŒ๋„ท. - Internet Gateway IGW: ์ธํ„ฐ๋„ท ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด.

AWS EC2 ์ธ์Šคํ„ด์Šค ์‹œ์ž‘

์†Œ๊ฐœ ์ด ๊ฐ€์ด๋“œ๋Š” AWS EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  Docker๋ฅผ ์„ค์น˜ํ•˜๋ฉฐ Docker ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ NGINX๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๋๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋ฉด โ€ฆ

AWS VPC

AWS VPC๋ž€? AWS Virtual Private Cloud(VPC)๋Š” AWS ๋‚ด๋ถ€์— ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฒฉ๋ฆฌ๋œ ๋„คํŠธ์›Œํฌ๋กœ, ์—ฌ๊ธฐ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: - EC2 ์ธ์Šคํ„ด์Šค - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šคโ€ฆ