| name | aws-wa-performance |
| description | AWS Well-Architected Performance Efficiency Pillar review. Checks resource selection, scaling, caching, and monitoring configurations in IaC code. |
Performance Efficiency Pillar
๋ฆฌ์์ค ํจ์จ, ์ ์ ๊ท๋ชจ, ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๊ด์ ์์ IaC ์ฝ๋๋ฅผ ๊ฒํ ํฉ๋๋ค.
ํต์ฌ ์์น
- ๊ณ ๊ธ ๊ธฐ์ ์ ๋์คํ: ๊ด๋ฆฌํ ์๋น์ค ํ์ฉ
- ๋ช ๋ถ ๋ง์ ์ ์ธ๊ณ ๋ฐฐํฌ: CloudFront, Global Accelerator
- ์๋ฒ๋ฆฌ์ค ์ํคํ
์ฒ ์ฌ์ฉ: Lambda, Fargate
- ๋ ์์ฃผ ์คํ: A/B ํ
์คํธ
- ๊ธฐ๊ณ์ ๊ณต๊ฐ: ์ํฌ๋ก๋์ ๋ง๋ ๋ฆฌ์์ค ์ ํ
๊ฒํ ํญ๋ชฉ
PERF-01: ์ธ์คํด์ค ์ธ๋
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ๊ตฌ์ธ๋ ์ธ์คํด์ค ์ฌ์ฉ ์ฌ๋ถ ํ์ธ
๊ตฌ์ธ๋ ์ธ์คํด์ค ๋ชฉ๋ก:
- t2, m4, m3, c4, c3, r4, r3, i2, d2
Terraform ํจํด:
# ์ทจ์ฝ - ๊ตฌ์ธ๋ ์ธ์คํด์ค
resource "aws_instance" "bad" {
instance_type = "t2.micro"
}
# ์์ - ํ์ธ๋ ์ธ์คํด์ค
resource "aws_instance" "good" {
instance_type = "t3.micro"
}
PERF-02: Graviton ์ธ์คํด์ค
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Low | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ARM ๊ธฐ๋ฐ Graviton ์ธ์คํด์ค ์ฌ์ฉ ๊ถ์ฅ
Graviton ์ธ์คํด์ค:
- t4g, m6g, m7g, c6g, c7g, r6g, r7g
Terraform ํจํด:
# ๊ถ์ฅ - Graviton ์ธ์คํด์ค (๋น์ฉ ํจ์จ์ , ์๋์ง ํจ์จ์ )
resource "aws_instance" "good" {
instance_type = "t4g.micro"
}
PERF-03: ์บ์ฑ ๋ ์ด์ด
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ElastiCache, CloudFront ๋ฑ ์บ์ฑ ๋ ์ด์ด ์กด์ฌ ์ฌ๋ถ ํ์ธ
Terraform ํจํด:
# ๊ถ์ฅ - ElastiCache ์ฌ์ฉ
resource "aws_elasticache_cluster" "redis" {
cluster_id = "my-cache"
engine = "redis"
node_type = "cache.t3.micro"
num_cache_nodes = 1
}
# ๊ถ์ฅ - CloudFront ์ฌ์ฉ
resource "aws_cloudfront_distribution" "cdn" {
enabled = true
# ...
}
PERF-04: RDS ์ฑ๋ฅ ์ค์
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: RDS ์ธ์คํด์ค ํฌ๊ธฐ, IOPS ์ค์ ํ์ธ
Terraform ํจํด:
# ๊ณ ์ฑ๋ฅ ์๊ตฌ ์ - Provisioned IOPS
resource "aws_db_instance" "high_perf" {
instance_class = "db.r5.large"
storage_type = "io1"
iops = 3000
allocated_storage = 100
}
PERF-05: Lambda ์ค์
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: Lambda ๋ฉ๋ชจ๋ฆฌ, ํ์์์ ์ ์ ์ฑ ํ์ธ
Terraform ํจํด:
# ๊ฒํ ํ์ - ๊ณผ๋ํ ํ์์์
resource "aws_lambda_function" "review" {
memory_size = 128
timeout = 900 # 15๋ถ - ์ ๋ง ํ์ํ๊ฐ?
}
# ๊ถ์ฅ - ์ ์ ํ ์ค์
resource "aws_lambda_function" "good" {
memory_size = 256
timeout = 30
}
PERF-06: EBS ๋ณผ๋ฅจ ํ์
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Low | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: ์ํฌ๋ก๋์ ์ ํฉํ EBS ๋ณผ๋ฅจ ํ์
์ฌ์ฉ ์ฌ๋ถ
๋ณผ๋ฅจ ํ์
๊ถ์ฅ:
- ๋ฒ์ฉ: gp3 (gp2๋ณด๋ค ๋น์ฉ ํจ์จ์ )
- ๊ณ ์ฑ๋ฅ: io2
- ์ฒ๋ฆฌ๋ ์ต์ ํ: st1
PERF-07: ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง
| ์ฌ๊ฐ๋ | ํ์ง ์ ํ |
|---|
| Medium | ์๋ ํ์ง |
๊ฒํ ๋ด์ฉ: Enhanced Monitoring, Performance Insights ํ์ฑํ ์ฌ๋ถ
Terraform ํจํด:
# ๊ถ์ฅ - Performance Insights ํ์ฑํ
resource "aws_db_instance" "good" {
performance_insights_enabled = true
monitoring_interval = 60 # Enhanced Monitoring
monitoring_role_arn = aws_iam_role.rds_monitoring.arn
}
IaC ํ๋ซํผ๋ณ ํจํด
์์ธ ํจํด์ ๋ค์ ์ฐธ์กฐ:
์ ์ ์ฐ์
| ํญ๋ชฉ | ๊ฐ์ค์น |
|---|
| ์ธ์คํด์ค ์ธ๋ | 20% |
| Graviton ์ฌ์ฉ | 10% |
| ์บ์ฑ ๋ ์ด์ด | 25% |
| RDS ์ฑ๋ฅ | 20% |
| Lambda ์ค์ | 15% |
| ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง | 10% |