Skip to content

[Week 4] L1-004 답안 제출 #18

@PokingTeemo

Description

@PokingTeemo

Week

4

Scenario ID

L1-004

Problem Identification

개발 환경 RDS 인스턴스 2개(db-instance-n2mzkv, db-instance-5iydcw)가 db.r5.large + Multi-AZ로 과도하게 프로비저닝되어 있습니다. 각각 CPU 사용률이 15.42%, 15.16%로 낮음에도 불구하고 프로덕션과 동일한 고가용성 구성을 사용하여 월 $350 추가 비용이 발생하고 있습니다. 또한 온디맨드 요금제 사용으로 예약 인스턴스 대비 30% 추가 비용($885/월)이 낭비되고 있습니다.

Root Cause

개발 환경과 프로덕션 환경의 요구사항 차별화 부족으로 인해 개발 환경에 불필요한 고가용성(Multi-AZ) 구성이 적용되었습니다. 안정적인 워크로드 패턴에도 불구하고 예약 인스턴스를 활용하지 않는 비용 최적화 전략의 부재가 근본 원인입니다.

Proposed Solution

  1. 개발 환경 DB 인스턴스 2개의 Multi-AZ를 false로 변경하여 월 $350 절감 2) 안정적인 사용 패턴을 보이는 3개 RDS 인스턴스에 대해 1년 예약 인스턴스 구매로 월 $885 절감 3) 개발 환경 인스턴스 타입을 db.t3.large로 다운사이징 검토(추가 절감 가능) 4) 개발 환경 정책 수립으로 향후 유사 문제 방지

Estimated Monthly Savings (USD)

1235

Optimized Terraform

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-east-1"
}

resource "aws_db_instance" "db-instance-n2mzkv" {
  identifier     = "db-instance-n2mzkv"
  engine         = "mysql"
  engine_version = "8.0"
  instance_class = "db.r5.large"

  allocated_storage = 100
  storage_type      = "gp3"

  multi_az = false  # Changed: Disabled Multi-AZ for dev environment

  backup_retention_period = 7

  skip_final_snapshot = false

  tags = {
    Name        = "db-instance-n2mzkv"
    Environment = "dev"
  }
}

resource "aws_db_instance" "db-instance-5iydcw" {
  identifier     = "db-instance-5iydcw"
  engine         = "mysql"
  engine_version = "8.0"
  instance_class = "db.r5.large"

  allocated_storage = 100
  storage_type      = "gp3"

  multi_az = false  # Changed: Disabled Multi-AZ for dev environment

  backup_retention_period = 7

  skip_final_snapshot = false

  tags = {
    Name        = "db-instance-5iydcw"
    Environment = "dev"
  }
}

resource "aws_db_instance" "db-instance-g7mz7s" {
  identifier     = "db-instance-g7mz7s"
  engine         = "mysql"
  engine_version = "8.0"
  instance_class = "db.r5.large"

  allocated_storage = 100
  storage_type      = "gp3"

  multi_az = true  # Kept: Multi-AZ maintained for production environment

  backup_retention_period = 7

  skip_final_snapshot = false

  tags = {
    Name        = "db-instance-g7mz7s"
    Environment = "production"
  }
}

# TODO: Consider purchasing Reserved Instances for all three instances
# Expected 30% savings on total RDS costs (~$885/month)

Attached Reports

report.md
(Files committed to submissions/ directory)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions