IaC - 100-hours-a-week/KTB4-10th-Cloud GitHub Wiki
-
Infrastructure as Code ์ ์ฝ์
-
์๋ ํ๋ก์ธ์ค ๋ฐ ์ค์ ๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธํ๋ผ๋ฅผ ํ๋ก๋น์ ๋(์์๊ณผ ์ธํ๋ผ๋ฅผ ์ฌ์ ์ ์ค๋นํ๊ณ ์ค์ ํ์ฌ ์ ๊ณตํ๋ ํ๋ก์ธ์ค)ํ๊ณ ์ง์ํ๋ ๊ธฐ๋ฅ
์ธํ๋ผ ๊ตฌ์ฑ์ ์ฝ๋๋ก ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ฐ๋ณต์ ์ธ ๊ตฌ์ถ ๋ฐ ๋ณ๊ฒฝ ์์ ์ ์๋ํํ๊ณ ๋์ผํ ๊ตฌ์ฑ์ ์ฌํํ ์ ์์
-
์ ์ธํ
์ ์ธํ 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)
- ๋ง์ฝ ๋ฐฑ์๋ ์๋จ์ ALB๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด
- alb๋ช ๋ น์ด๋ง ๋ฃ์ผ๋ฉด ๋์ด ์๋
- vpc ์์ฑ ๋ช
๋ น๋ ๋ค์ ๋ค์ด๊ฐ๊ธฐ์ ์กฐ๊ฑด์ ์ธ์ธํ๊ฒ ์ง์ ํด์ผํจ
- vpc ์์ผ๋ฉด โ ์์ฑ x
- vpc ์์ผ๋ฉด โ ์์ฑ
-
-
์ฆ, ๋ช ๋ นํ์ ์ธํ๋ผ ์ ์ฒด ๊ด๋ฆฌ ๋ชฉ์ ๋ณด๋ค๋ ์ธํ๋ผ ์ํ๋ฅผ ์ ์ํ์ง ์๊ณ ์ฆ์ ์์ ์ ์ํํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ง๊ด์ ์
-
- ์ฌ์ด ํ๊ฒฝ ๋ณต์
- ๋์ผํ IaC ์ฌ์ฉํ์ฌ ๋์ผํ ํ๊ฒฝ์ ๋ค๋ฅธ ์์น์ ๋ค๋ฅธ ์์คํ ์ ๋ฐฐํฌ ๊ฐ๋ฅ
- ๊ตฌ์ฑ ์ค๋ฅ ๊ฐ์
- ์ค์ ์์ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์ค๋ฅ ๊ฒ์ฌ ๊ฐ์ํ
- ์ด์ ๋ฒ์ ์ IaC ๊ตฌ์ฑํ์ผ๋ก ํ๊ฒฝ ๋กค๋ฐฑ ๊ฐ๋ฅ
- ํ์ฌ ์๋น์ค๋ VPC, EC2, RDS, SQS, IAM, Security Group ๋ฑ ์ฌ๋ฌ AWS ๋ฆฌ์์ค๊ฐ ์๋ก ์ฐ๊ฒฐ๋๋ ๊ตฌ์กฐ
- V2 ์ดํ ALB, ECS, Auto Scaling ๋ฑ์ด ์ถ๊ฐ๋๋ฉด์ ์ธํ๋ผ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ ์์
- V1 ๊ตฌ์กฐ๋ง์ผ๋ก๋ ๋์ ์ ํ์์ฑ์ด ๋ฎ์
- ์ฝ์์ ํตํ ์๋ ์ค์ ๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ
- ์ธํ๋ผ ์ค์ ์ฌํ์ด ์ด๋ ค์
- ํ์ ๊ฐ ์ค์ ์ฐจ์ด๊ฐ ๋ฐ์ํ ์ ์์
- ๋ณ๊ฒฝ ์ด๋ ฅ์ ์ถ์ ํ๊ธฐ ์ด๋ ค์
- dev / prod ํ๊ฒฝ ์์ฑ ์ ๋์ผํ ์ค์ ์ ๋ฐ๋ณตํด์ผ ํจ
โ ์ธํ๋ผ ์ค์ ์ ํ๋ํ๋ ๋ค์ด๊ฐ์ ์ด๋ค ๊ฒ์ ์ ํํ์๋์ง ํ์ธํด์ผ ํจ
- ์ด๋ค ์์ ์ ํ๋์ง ๋ฐ๋ก ๋ฌธ์ํ ์์ผ์ผํจ
- ๋ณ๊ฒฝ ๊ณผ์ ์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ์ด๋ ค์
โ v1 ๋ฐฐํฌ ์ดํ๋ถํฐ ์ธํ๋ผ ๊ตฌ์ฑ์ ์ฝ๋๋ก ๊ด๋ฆฌํ๋ IaC ๋์
- ์ธํ๋ผ ์์ฑ ์๋ํ ๋ชฉ์ ๋ณด๋ค๋ ์ธํ๋ผ ๊ตฌ์ฑ์ ์ฝ๋๋ก ๋ณด์กดํ๋ ๋ชฉ์
- v1~v3์ ๋ณ๊ฒฝ์ฌํญ์ git์ ํตํด ์ถ์
- ๋์ผํ ํ๊ฒฝ ์ฌํ์ ํธ์์ฑ
=> v1 ๋ถํฐ ์ ํํ์ง ์๋ ์ด์
- ์ฐ๋ฆฌ ์๋น์ค๋ ์ธํ๋ผ ๊ท๋ชจ๊ฐ ์์(์ฝ์ ๊ด๋ฆฌ์ ๋ถ๋ด์ด ์ ์)
- ๋ฐ๋ณต ๊ตฌ์ถ์ ํ์์ฑ์ด ๋ฎ์(๋ณ๋์ ๊ฐ๋ฐ์๋ฒ ๋ฏธ์กด์ฌ)
- IaC ์ธํ , ์ฝ๋ ์์ฑ ๋ณด๋ค๋ v1์์๋ ๋น ๋ฅธ ๊ฐ๋ฐ, ์ธํ๋ผ ๊ฒ์ฆ์ ์ฐ์ ์์๊ฐ ๋ ๋๋ค ํ๋จ
- ๋๊ตฌ ์ ํ์ ์์ ์ฐ์ ์ฐ๋ฆฌ์๋น์ค์์ 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 ์ค์ฌ ๊ตฌ์กฐ ์ฌ๊ฒํ ํ์ |