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

๋ฐœํ–‰: (2025๋…„ 12์›” 28์ผ ์˜คํ›„ 08:39 GMT+9)
4 min read
์›๋ฌธ: 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

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

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

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

ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋ก ํ‹ฐ์–ด ๋ฐฉ์–ด: Terraform ๋ฐ OPA์™€ ํ•จ๊ป˜ํ•˜๋Š” ์ฝ”๋“œํ˜• ๋ณด์•ˆ

๊ฐœ์š” ๐Ÿš€ ์ €๋Š” ๋ฐฉ๊ธˆ โ€œSecurity as Code: Enforcing AWS Security from Day Oneโ€๋ผ๋Š” ์ฃผ์ œ๋กœ 35๋ช… ์ด์ƒ์˜ ํด๋ผ์šฐ๋“œ ์ „๋ฌธ๊ฐ€ ๊ทธ๋ฃน์—๊ฒŒ ๊ฐ•์—ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ํด...

Terraform with AWS - Day1: ์™œ Terraform์ด ์ค‘์š”ํ•œ๊ฐ€ & ์‹ค์ œ ์ž‘๋™ ๋ฐฉ์‹

Infrastructure as Code(IaC)๋ž€ ๋ฌด์—‡์ธ๊ฐ€? Infrastructure as Code(IaC)๋Š” ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ โ€ฆ