IaC - 100-hours-a-week/KTB4-10th-Cloud GitHub Wiki

[ 1. IaC๋ž€? ]

  • Infrastructure as Code ์˜ ์•ฝ์ž

  • ์ˆ˜๋™ ํ”„๋กœ์„ธ์Šค ๋ฐ ์„ค์ • ๋Œ€์‹  ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ”„๋ผ๋ฅผ ํ”„๋กœ๋น„์ €๋‹(์ž์›๊ณผ ์ธํ”„๋ผ๋ฅผ ์‚ฌ์ „์— ์ค€๋น„ํ•˜๊ณ  ์„ค์ •ํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์„ธ์Šค)ํ•˜๊ณ  ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ

์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋ฐ˜๋ณต์ ์ธ ๊ตฌ์ถ• ๋ฐ ๋ณ€๊ฒฝ ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๊ณ  ๋™์ผํ•œ ๊ตฌ์„ฑ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

1.1. ์ ‘๊ทผ ๋ฐฉ์‹

  • ์„ ์–ธํ˜•

    ์„ ์–ธํ˜• ex)

    • ec2๊ฐ€ 1๋Œ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค
    • ์ธ์Šคํ„ด์Šค ํƒ€์ž…์€ t3.small์ด์–ด์•ผ ํ•œ๋‹ค
    • ์ด sg๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผํ•œ๋‹ค

    โ†’ Terraform์ด๋‚˜ aws cloudformation๊ฐ™์€ iac๋„๊ตฌ๊ฐ€ ํ˜„์žฌ ์ƒํƒœ์™€ ์›ํ•˜๋Š” ์ƒํƒœ ๋น„๊ตํ•˜์—ฌ ํ•„์š”ํ•œ ์ž‘์—… ์•Œ์•„์„œ ์ˆ˜ํ–‰

  • ๋ช…๋ นํ˜•

    ๋ช…๋ นํ˜• ex)
    # 1. VPC ์ƒ์„ฑ
    
    aws ec2 create-vpc \
    
      --cidr-block 10.0.0.0/16
    
    # 2. Subnet ์ƒ์„ฑ
    
    aws ec2 create-subnet \
    
      --vpc-id vpc-123456 \
    
      --cidr-block 10.0.1.0/24
    • ์›ํ•˜๋Š” ๊ตฌ์„ฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํŠน์ • ์ปค๋งจ๋“œ ์ •์˜

      • ์ด๋•Œ ์ปค๋งจ๋“œ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•ด์•ผํ•จ

      • ์›ํ•˜๋Š” ์ƒํƒœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น์ ํˆด์€ ์ž๋™์ ์šฉX, ์–ด๋–ป๊ฒŒ ์ ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•˜๋„๋ก ํ•จ

        ex)

        1. ๋งŒ์•ฝ ๋ฐฑ์—”๋“œ ์•ž๋‹จ์— ALB๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด
        2. alb๋ช…๋ น์–ด๋งŒ ๋„ฃ์œผ๋ฉด ๋์ด ์•„๋‹˜
        3. vpc ์ƒ์„ฑ ๋ช…๋ น๋„ ๋‹ค์‹œ ๋“ค์–ด๊ฐ€๊ธฐ์— ์กฐ๊ฑด์„ ์„ธ์„ธํ•˜๊ฒŒ ์ง€์ •ํ•ด์•ผํ•จ
          • vpc ์žˆ์œผ๋ฉด โ†’ ์ƒ์„ฑ x
          • vpc ์—†์œผ๋ฉด โ†’ ์ƒ์„ฑ
    • ์ฆ‰, ๋ช…๋ นํ˜•์€ ์ธํ”„๋ผ ์ „์ฒด ๊ด€๋ฆฌ ๋ชฉ์ ๋ณด๋‹ค๋Š” ์ธํ”„๋ผ ์ƒํƒœ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์ง๊ด€์ ์ž„

1.2. IaC์˜ ํŠน์ง•

  • ์‰ฌ์šด ํ™˜๊ฒฝ ๋ณต์ œ
    • ๋™์ผํ•œ IaC ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ๋‹ค๋ฅธ ์œ„์น˜์˜ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ๋ฐฐํฌ ๊ฐ€๋Šฅ
  • ๊ตฌ์„ฑ ์˜ค๋ฅ˜ ๊ฐ์†Œ
    • ์„ค์ •์—์„œ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ณ  ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ ๊ฐ„์†Œํ™”
    • ์ด์ „ ๋ฒ„์ „์˜ IaC ๊ตฌ์„ฑํŒŒ์ผ๋กœ ํ™˜๊ฒฝ ๋กค๋ฐฑ ๊ฐ€๋Šฅ

[ 2. IaC ๋„์ž… ]

2.1. ํ˜„์žฌ ์ƒํ™ฉ

  • ํ˜„์žฌ ์„œ๋น„์Šค๋Š” VPC, EC2, RDS, SQS, IAM, Security Group ๋“ฑ ์—ฌ๋Ÿฌ AWS ๋ฆฌ์†Œ์Šค๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๊ตฌ์กฐ
  • V2 ์ดํ›„ ALB, ECS, Auto Scaling ๋“ฑ์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ ์ธํ”„๋ผ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•  ์˜ˆ์ •
    • V1 ๊ตฌ์กฐ๋งŒ์œผ๋กœ๋Š” ๋„์ž…์˜ ํ•„์š”์„ฑ์ด ๋‚ฎ์Œ

2.2. ํ˜„์žฌ ์„ค์ •์˜ ํ•œ๊ณ„

  • ์ฝ˜์†”์„ ํ†ตํ•œ ์ˆ˜๋™ ์„ค์ •๋งŒ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ
    • ์ธํ”„๋ผ ์„ค์ • ์žฌํ˜„์ด ์–ด๋ ค์›€
    • ํŒ€์› ๊ฐ„ ์„ค์ • ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    • ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ค์›€
    • dev / prod ํ™˜๊ฒฝ ์ƒ์„ฑ ์‹œ ๋™์ผํ•œ ์„ค์ •์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•จ

โ‡’ ์ธํ”„๋ผ ์„ค์ •์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋“ค์–ด๊ฐ€์„œ ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ–ˆ์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•จ

  • ์–ด๋–ค ์ž‘์—…์„ ํ–ˆ๋Š”์ง€ ๋”ฐ๋กœ ๋ฌธ์„œํ™” ์‹œ์ผœ์•ผํ•จ
  • ๋ณ€๊ฒฝ ๊ณผ์ •์„ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์–ด๋ ค์›€

2.3. ๊ฒฐ๋ก 

โ‡’ v1 ๋ฐฐํฌ ์ดํ›„๋ถ€ํ„ฐ ์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•˜๋Š” IaC ๋„์ž…

  • ์ธํ”„๋ผ ์ƒ์„ฑ ์ž๋™ํ™” ๋ชฉ์ ๋ณด๋‹ค๋Š” ์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ์ฝ”๋“œ๋กœ ๋ณด์กดํ•˜๋Š” ๋ชฉ์ 
  • v1~v3์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ git์„ ํ†ตํ•ด ์ถ”์ 
  • ๋™์ผํ•œ ํ™˜๊ฒฝ ์žฌํ˜„์˜ ํŽธ์˜์„ฑ

=> v1 ๋ถ€ํ„ฐ ์„ ํƒํ•˜์ง€ ์•Š๋Š” ์ด์œ 

  • ์šฐ๋ฆฌ ์„œ๋น„์Šค๋Š” ์ธํ”„๋ผ ๊ทœ๋ชจ๊ฐ€ ์ž‘์Œ(์ฝ˜์†” ๊ด€๋ฆฌ์˜ ๋ถ€๋‹ด์ด ์ ์Œ)
  • ๋ฐ˜๋ณต ๊ตฌ์ถ•์˜ ํ•„์š”์„ฑ์ด ๋‚ฎ์Œ(๋ณ„๋„์˜ ๊ฐœ๋ฐœ์„œ๋ฒ„ ๋ฏธ์กด์žฌ)
  • IaC ์„ธํŒ…, ์ฝ”๋“œ ์ž‘์„ฑ ๋ณด๋‹ค๋Š” v1์—์„œ๋Š” ๋น ๋ฅธ ๊ฐœ๋ฐœ, ์ธํ”„๋ผ ๊ฒ€์ฆ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค ํŒ๋‹จ

[ 3. IaC ๋„๊ตฌ ์„ ํƒ ]

  • ๋„๊ตฌ ์„ ํƒ์— ์•ž์„œ ์šฐ์„  ์šฐ๋ฆฌ์„œ๋น„์Šค์—์„œ IaC ๋„์ž…์€ ์ „์ฒด ์ธํ”„๋ผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•จ์ด๊ธฐ์— ๋ช…๋ นํ˜• ๋ฐฉ์‹์ด ์•„๋‹Œ ์„ ์–ธํ˜•์„ ์ง€์›ํ•˜๋Š” IaC๋ฅผ ๋„์ž…ํ•ด์•ผํ•จ

โ‡’ ๋น„๊ต๊ตฐ์€ ๋Œ€ํ‘œ์ ์ธ ์„ ์–ธํ˜•์ธ Terraform, AWS๊ธฐ๋ฐ˜์ธ CloudFormation, CDK๋งŒ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ ค

๋น„๊ต ๊ธฐ์ค€ Terraform CloudFormation CDK
์ •์˜ ๋ฐฉ์‹ HCL YAML / JSON ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
AWS ์™ธ ํ”Œ๋žซํผ Provider๋ฅผ ํ†ตํ•ด ์ง€์› AWS ์ „์šฉ ๊ธฐ๋ณธ์ ์œผ๋กœ AWS ์ค‘์‹ฌ
์ƒํƒœ ๊ด€๋ฆฌ ๋ณ„๋„ State ํ•„์š” CloudFormation ๊ด€๋ฆฌ CloudFormation ๊ด€๋ฆฌ
๋ณ€๊ฒฝ ์‚ฌ์ „ ํ™•์ธ terraform plan Change Set cdk diff
๊ธฐ์กด Resource ํŽธ์ž… Import Resource Import CloudFormation ๊ธฐ๋ฐ˜
Resource ํ‘œํ˜„ ๋น„๊ต์  ๋ช…์‹œ์  ๋น„๊ต์  ๋ช…์‹œ์  Construct ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
์ถ”์ƒํ™”/์žฌ์‚ฌ์šฉ Module ๋“ฑ Template ๊ตฌ์กฐํ™” ๊ธฐ๋Šฅ Construct
ํ˜„์žฌ AWS ๊ตฌ์กฐ์™€์˜ ๊ด€๊ณ„ AWS Provider ์‚ฌ์šฉ AWS Native CloudFormation ๊ธฐ๋ฐ˜
CSP ๋ณ€๊ฒฝ ์‹œ ๋„๊ตฌ/Workflow ์œ ์ง€ ๊ฐ€๋Šฅํ•˜๋‚˜ Resource ์žฌ์ž‘์„ฑ ํ•„์š” Template ์žฌ์ž‘์„ฑ ํ•„์š” AWS ์ค‘์‹ฌ ๊ตฌ์กฐ ์žฌ๊ฒ€ํ†  ํ•„์š”
โš ๏ธ **GitHub.com Fallback** โš ๏ธ