| name | aws-wa-reliability |
| description | AWS Well-Architected Reliability Pillar review. Checks high availability, fault tolerance, backup, and disaster recovery configurations in IaC code. |
Reliability Pillar
์ฅ์ ๋ณต๊ตฌ, ํ์ฅ์ฑ, ๊ณ ๊ฐ์ฉ์ฑ ๊ด์ ์์ IaC ์ฝ๋๋ฅผ ๊ฒํ ํฉ๋๋ค.
ํต์ฌ ์์น
- ์ฅ์ ๋ก๋ถํฐ ์๋ ๋ณต๊ตฌ: Auto Scaling, Health Check
- ๋ณต๊ตฌ ์ ์ฐจ ํ
์คํธ: DR ํ
์คํธ
- ์ํ ํ์ฅ: Multi-AZ, Auto Scaling
- ์ฉ๋ ์ถ์ธก ์ค๋จ: ๋ฉํธ๋ฆญ ๊ธฐ๋ฐ ์ค์ผ์ผ๋ง
- ๋ณ๊ฒฝ ๊ด๋ฆฌ ์๋ํ: IaC, CI/CD
๊ฒํ ํญ๋ชฉ
REL-01: Multi-AZ ๋ฐฐํฌ
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Critical | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ์ฃผ์ ๋ฆฌ์์ค๊ฐ Multi-AZ๋ก ๋ฐฐํฌ๋์ด ์๋์ง ํ์ธ
Terraform ํจํด:
# ์ทจ์ฝ - ๋จ์ผ AZ
resource "aws_db_instance" "bad" {
multi_az = false
}
# ์์ - Multi-AZ
resource "aws_db_instance" "good" {
multi_az = true
}
REL-02: Auto Scaling
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| High | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: Auto Scaling Group์ด ์ค์ ๋์ด ์๋์ง ํ์ธ
Terraform ํจํด:
# ์์ - Auto Scaling ์ค์
resource "aws_autoscaling_group" "good" {
min_size = 2
max_size = 10
desired_capacity = 2
health_check_type = "ELB"
health_check_grace_period = 300
}
REL-03: ๋ฐฑ์
์ค์
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| High | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: RDS, EBS ๋ฑ์ ์๋ ๋ฐฑ์
์ด ์ค์ ๋์ด ์๋์ง ํ์ธ
Terraform ํจํด:
# ์ทจ์ฝ - ๋ฐฑ์
๋นํ์ฑํ
resource "aws_db_instance" "bad" {
backup_retention_period = 0
}
# ์์ - ๋ฐฑ์
ํ์ฑํ
resource "aws_db_instance" "good" {
backup_retention_period = 7
backup_window = "03:00-04:00"
}
REL-04: Health Check
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| High | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ALB/NLB์ ์ ์ ํ Health Check๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธ
Terraform ํจํด:
# ์์ - Health Check ์ค์
resource "aws_lb_target_group" "good" {
health_check {
enabled = true
healthy_threshold = 2
unhealthy_threshold = 3
timeout = 5
interval = 30
path = "/health"
matcher = "200"
}
}
REL-05: S3 ๋ณต์
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ์ค์ ๋ฐ์ดํฐ์ Cross-Region Replication์ด ์ค์ ๋์ด ์๋์ง ํ์ธ
REL-06: ๋จ์ผ NAT Gateway
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ๊ฐ AZ์ NAT Gateway๊ฐ ์๋์ง ํ์ธ (๋จ์ผ ์คํจ ์ง์ ๋ฐฉ์ง)
Terraform ํจํด:
# ์ทจ์ฝ - ๋จ์ผ NAT Gateway
resource "aws_nat_gateway" "single" {
subnet_id = aws_subnet.public_a.id
}
# ์์ - AZ๋ณ NAT Gateway
resource "aws_nat_gateway" "az_a" {
subnet_id = aws_subnet.public_a.id
}
resource "aws_nat_gateway" "az_b" {
subnet_id = aws_subnet.public_b.id
}
REL-07: RTO/RPO ์ ์
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ธ ํ์ |
๊ฒํ ๋ด์ฉ: RTO(๋ณต๊ตฌ ์๊ฐ ๋ชฉํ)์ RPO(๋ณต๊ตฌ ์ง์ ๋ชฉํ)๊ฐ ์ ์๋์ด ์๋์ง ํ์ธ
์๋ ํ์ธ ํญ๋ชฉ:
REL-08: ์ฌํด ๋ณต๊ตฌ ๊ณํ
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ธ ํ์ |
๊ฒํ ๋ด์ฉ: DR ๊ณํ์ด ์กด์ฌํ๊ณ ํ
์คํธ๋์๋์ง ํ์ธ
IaC ํ๋ซํผ๋ณ ํจํด
์์ธ ํจํด์ ๋ค์ ์ฐธ์กฐ:
์ ์ ์ฐ์
| ํญ๋ชฉ | ๊ฐ์ค์น |
|---|
| Multi-AZ ๋ฐฐํฌ | 25% |
| Auto Scaling | 20% |
| ๋ฐฑ์
์ค์ | 20% |
| Health Check | 15% |
| S3 ๋ณต์ | 10% |
| RTO/RPO | 10% |