AWS 기술 블로그

Amazon CloudWatch를 이용한 Amazon Aurora I/O Optimized 기능에 대한 비용 절감 예상하기

이 글은 AWS Database Blog에 게시된 Estimate cost savings for the Amazon Aurora I/O-Optimized feature using Amazon CloudWatch Sarabjeet Singh을 한국어 번역 및 편집하였습니다.

Amazon Aurora는 고급 상용 데이터베이스의 속도와 가용성을 오픈 소스 데이터베이스의 간편함과 비용 효율성을 결합한 관계형 데이터베이스 서비스입니다. Aurora는 MySQL과 PostgreSQL 오픈 소스 데이터베이스 엔진을 지원합니다. Aurora 스토리지는 공유 클러스터 스토리지 아키텍처로 구성되어 고가용성, 내구성, 확장성 및 뛰어난 성능을 제공합니다.

본 글을 작성하는 시점에서 Aurora의 비용에 영향을 미치는 스토리 구성은 두 가지로 이 중 선택할 수 있습니다.

  • Aurora 스탠더드 – I/O 사용량이 보통인 애플리케이션에 대해 비용 효율적인 가격을 제공합니다. 이 모드에서 Aurora를 사용하는 총비용은 컴퓨팅 인스턴스의 수와 유형 및 DB 클러스터의 스토리지에 따라 다릅니다. 또한, 수행된 I/O 작업에 대한 요금이 있습니다.
  • Aurora I/O-Optimized새로운 구성 으로 I/O 집약적인 애플리케이션에 더 효율적인 가격을 제공합니다. I/O-Optimized 구성에서는 I/O 작업에 대한 추가 비용 없이 컴퓨팅 및 스토리지 사용량에 대해서만 비용을 지불합니다. 이를 통해 I/O 집약적인 애플리케이션을 더 낮은 비용으로 실행할 수 있고 애플리케이션의 비용을 예측할 수 있습니다.

Aurora I/O-Optimized가 제공하는 비용 절감은 I/O 지출이 전체 Aurora 데이터베이스 지출의 25% 이상을 차지할 때 상당할 수 있습니다. 2023년 5월 Aurora I/O-Optimized가 정식 출시됨에 따라 Aurora 데이터베이스 사용자는 AWS 환경에서 I/O-Optimized 기능의 비용 절감 혜택을 누릴 수 있는 Aurora 클러스터를 식별하고자 합니다.

AWS Cost Explorer를 사용하여 해당 환경의 다양한 AWS 서비스에 대해 발생한 비용을 확인할 수 있습니다. 비용 탐색기에서 비용 세부 정보는 리전 내 모든 Aurora 클러스터에 대한 합계입니다. 동일한 리전의 개별 클러스터 수준에서 Aurora에 대한 비용 세부 정보를 분리할 수 없습니다. 단일 리전에 여러 Aurora 클러스터가 있는 경우 클러스터 수준 별 I/O 사용 비용을 결정할 수 있는 대체 방법이 거의 없습니다. 현재 개별 클러스터 수준에서 I/O 지출을 식별하는 다음과 같은 방법이 있습니다.

  • AWS 비용 할당 태그 – 비용 할당 태그를 사용하여 태그가 지정된 리소스에 대한 비용 세부 정보를 추적할 수 있습니다. 이 방법을 사용하려면 각 리소스에 태그를 지정해야 하며 비용 세부 정보는 태그 지정이 발생한 후에만 표시됩니다.
  • AWS 비용 및 사용 보고서 대시보드 – AWS CUR 보고서에서 포괄적인 비용 및 사용 세부 정보를 시각화하는 데 도움이 되는 대시보드를 생성할 수 있습니다. 이 방법을 사용하려면 스토리지 및 I/O 사용량을 반환하기 위해 사용자 지정 SQL 쿼리를 만드는 데 익숙해야 합니다.
  • Amazon CloudWatch – CloudWatch 지표를 사용하여 Aurora 클러스터에 대한 스토리지 및 I/O 사용량 세부 정보를 얻고 예상 비용을 생성할 수 있습니다.

이 게시물에서는 특히 한 리전에 여러 Aurora 클러스터가 있는 경우 단일 Aurora 클러스터의 비용을 분석하는 방법에 대해 설명합니다. 이 프로세스는 4단계로 진행됩니다. 먼저 CloudWatch 지표를 분석하여 개별 Aurora 데이터베이스 클러스터에 대한 총 IOPs 및 스토리지 사용량 정보를 수집합니다. 그런 다음 스토리지 및 I/O 구성 요소에 대해 Aurora 스탠더드 및 Aurora I/O-Optimized 모두에서 높은 수준의 비용 추정치를 얻는 방법을 설명합니다. 그런 다음 안정적인 워크 로드를 고려하여 컴퓨팅 비용을 추가합니다. 마지막으로 결론 부분에서는 두 스토리지 구성의 클러스터 비용을 비교해 보겠습니다.

CloudWatch 지표 분석

스탠더드 및 I/O-Optimized에서 클러스터 비용을 추정하기 위해 CloudWatch 지표를 분석하여 스토리지 및 I/O 사용량을 결정합니다. 그런 다음 CloudWatch 지표를 사용하여 각 구성에 대한 예상 비용을 도출합니다. 이 예에서는 일관된 워크 로드가 있는 Aurora 클러스터를 사용합니다. IOPs 와 스토리지는 가변 구성 요소이기 때문에 클러스터의 CloudWatch 지표를 분석하고 1개월 동안 예상 비용을 계산해 보겠습니다.

AWS Management Console 또는 AWS 명령 줄 인터페이스 (AWS CLI) 명령을 사용하여 Aurora 클러스터에 대한 CloudWatch 지표를 볼 수 있습니다.
콘솔을 사용하여 다음 단계를 사용하여 개별 Aurora 데이터베이스 클러스터에 대한 IOPs 및 스토리지 사용량 세부 정보를 찾으십시오.

1. Amazon RDS 관리 콘솔의 탐색 창에서 데이터베이스(databases)를 선택합니다.
2. Aurora 클러스터의 DB 식별자 및 크기에 대한 세부 정보를 확인하십시오.
이 예에서는 두 개의(r6g.large) 인스턴스가 있는 클러스터 aurora-database를 살펴보겠습니다.

3. CloudWatch 관리 콘솔의 탐색 창에서 대시보드(Dashboard)를 선택합니다.
4. 대시보드 생성(Create Dashboard)을 선택합니다.

5. 대시보드 이름 이름을 입력합니다(예: aurora-iops-and-storage-details).
6. 대시보드 생성을 선택합니다.

7. 대화 상자에서 위젯 추가(Add Widget) 선택 후 번호(Number)를 하고 다음(Next)을 선택합니다.

8. 지표 그래프 추가(Add metric graph)소스(Source) 탭에 다음 예제 코드를 입력합니다.

{
"sparkline": true,
"metrics": [
[ { "expression": "m1+m2", "label": "Total-IOPs", "id": "e1", "period": 2592000, "stat": "Sum" } ],
[ "AWS/RDS", "VolumeWriteIOPs", "DBClusterIdentifier", "aurora-database", { "id": "m1" } ],
[ ".", "VolumeReadIOPs", ".", ".", { "id": "m2" } ],
[ ".", "VolumeBytesUsed", ".", ".", { "id": "m3", "stat": "Average" } ]
],
"view": "singleValue",
"stacked": false,
"Region": "us-west-2",
"stat": "Sum",
"period": 2592000,
"singleValueFullPrecision": true,
"start": "2023-05-01T00:00:00.000Z",
"end": "2023-05-31T23:59:00.000Z"
}

예제 코드에서 다음 값들을 아래와 같이 변경합니다.

  • DBClusterIdentifier 값을 측정하고자 하는 Aurora 데이터베이스 클러스터의 이름으로 변경합니다.
  • 리전을 현재 사용 중인 리전명으로 바꿉니다(예: us-west-2)
  • start 및 end 변수에 비용 견적을 생성하려는 월의 시작 날짜 및 종료 날짜로 바꿉니다.

9. 다음 단계로 진행하기 전에 저장을 선택합니다.

10. 지표 그래프 추가(Add metric graph)옵션(Source) 탭을 선택하고 위젯 유형(Widget type)으로 번호(Number)를 선택합니다.
11. 위젯 생성(Create widget)을 선택합니다.

이제 Total-IOPs 그리고 VolumeBytesUsed 대시보드의 지표를 관찰할 수 있습니다.

아래의 과정은 AWS CLI를 사용하여 동일하게 개별 Aurora DB 클러스터에 대한 IOPs 및 스토리지 사용량 세부 정보를 확인하는 과정입니다.
AWS CLI를 처음으로 사용하는 경우 AWS CLI 구성을 참조하십시오. 또한 Aurora 클러스터가 사용하는 리전으로 AWS CLI가 제대로 구성되었는지 확인하십시오.
AWS CLI 명령을 실행하기 전에 아래 스크립트를 사용하여 input.json 파일을 생성합니다.

[
{
"Id": "e1",
"Expression": "m1+m2",
"Label": "Total IOPS"
},
{
"Id": "e2",
"Expression": "(m3/1024/1024/1024)",
"Label": "Storage Volume in GB"
},

{
"Id": "m1",
"MetricStat": {
"Metric": {
"Namespace": "AWS/RDS",
"MetricName": "VolumeWriteIOPs",
"Dimensions": [{
"Name": "DBClusterIdentifier",
"Value": "aurora-database"

}]
},
"Period": 2592000,
"Stat": "Sum",
"Unit": "Count"

},
"ReturnData": false
},
{
"Id": "m2",
"MetricStat": {
"Metric": {
"Namespace": "AWS/RDS",
"MetricName": "VolumeReadIOPs",
"Dimensions": [{
"Name": "DBClusterIdentifier",
"Value": "aurora-database"
}]
},
"Period": 2592000,
"Stat": "Sum",
"Unit": "Count"
},
"ReturnData": false
},
{
"Id": "m3",
"MetricStat": {
"Metric": {
"Namespace": "AWS/RDS",
"MetricName": "VolumeBytesUsed",
"Dimensions": [{
"Name": "DBClusterIdentifier",
"Value": "aurora-database"
}]
},
"Period": 2592000,
"Stat": "Average"
},
"ReturnData": false
}
]

그런 다음 아래 명령을 실행합니다. 생성하려는 비용 견적이 있는 날짜에 맞춰 입력 매개변수 --start-time--end-time 을 시작 날짜와 종료 날짜로 변경하세요.

>> aws cloudwatch get-metric-data --metric-data-queries file://input.json --start-time 2023-05-01T00:00:00Z --end-time 2023-05-31T23:59:00Z

총 I/O 및 스토리지 사용량 세부 정보가 개별 Aurora 클러스터 수준에서 수집된 후 다음 샘플 계산 방법을 사용하여 월별 비용 절감 추정치를 얻을 수 있습니다.

CloudWatch 지표를 비용 추정치로 변환

표준 및 I/O-Optimized 구성에 대한 Aurora 클러스터 비용에 영향을 미치는 세 가지 주요 구성 요소는 컴퓨팅, 스토리지 및 I/O 작업입니다. 이 예제에서는 인스턴스 클래스가 r6g.large이고, 총 I/O 작업(읽기 및 쓰기) 값이 59억 7천4백만 건이며, 총 스토리지(VolumeBytesUsed) 용량이 4.1TB인 두 개의 DB 인스턴스의 상황을 보여줍니다. 이 블로그 포스트에서는 이러한 예시 값을 사용하여 각 구성 요소의 비용 계산을 설명합니다.

다음으로 CloudWatch 지표의 값을 비용으로 변환하는 것을 살펴보겠습니다.

컴퓨팅

컴퓨팅 비용은 Aurora 클러스터에 있는 DB 인스턴스의 DB 인스턴스 클래스를 기준으로 합니다. 이 예시에서는 us-east-1 리전에 있는 두 개의 r6g.large 온디맨드 인스턴스를 사용합니다. 아래의 표를 이용하여 컴퓨팅에 대한 예상 가격을 계산하는 데 사용할 수 있습니다. 온디맨드 또는 예약 인스턴스의 다른 인스턴스 유형에 대한 자세한 가격 정보는 Amazon Aurora 요금 페이지에서 참고할 수 있습니다.

메모리 최적화 인스턴스 – 현재 세대 Aurora 스탠더드 (시간당 요금) Aurora I/O-Optimized (시간당 요금)
 db.r6g.large  $0.26  $0.34

다음 표에는 비용 계산이 요약되어 있습니다.

구성 비용 계산
비용
Aurora 스탠더드  2 * db.r6g.large (시간당 $0.26) * 30 days * 24 hours  $374.40
Aurora I/O-Optimized  2 * db.r6g.large (시간당 $0.34) * 30 days * 24 hours  $489.60

스토리지

이 예제에서는 us-east-1 리전을 기준으로 스토리지 비용을 4.1 TB로 계산했습니다. 스탠더드 및 I/O-Optimized의 가격은 리전마다 다를 수 있습니다. 자세한 내용은 Aurora 클러스터에 대한 비용 분석을 시작하기 전에 Amazon Aurora 요금 페이지를 참고하시기 바랍니다.

스토리지 요금 Aurora 스탠더드  Aurora I/O-Optimized
월 GB 당 $0.10 월 GB 당 $0.225

다음 표에는 비용 계산이 요약되어 있습니다.

구성 비용 계산
비용
Aurora 스탠더드 4.1TB * 월 GB 당 $0.10(30일)  $419.80
Aurora I/O-Optimized 4.1TB * 월 GB 당 $0.225(30일)  $944.60

IOPS

이 예제에서는 아래의 IOPS 요금을 이용하여 CloudWatch 지표를 사용하여 계산된 총 IOPS(읽기 및 쓰기)에 대한 예상 비용을 계산했습니다.

I/O 요금 Aurora 스탠더드  Aurora I/O-Optimized
요청 1백만 건당 $0.20 포함

다음 표에는 비용 계산이 요약되어 있습니다.

구성 비용 계산 비용
Aurora 스탠더드 59억 7천4백만 건의 I/O * 1백만 I/O 당 $0.20  $1194.00
Aurora I/O-Optimized  –  Included

클러스터 비용 비교

다음 표에는 r6g.large DB 인스턴스 클래스, 스토리지 크기가 4.1 TB, 총 IOPS 사용량이 59억 7천4백만 건을 사용하는 Aurora 클러스터의 스탠더드 및 I/O-Optimized에 대한 최종적인 예상 비용이 요약되어 있습니다.

비용 구성요소 I/O – 표준 (현재 비용) I/O – Optimized (수정된 비용)
컴퓨팅  $374.40  $489.60
스토리지  $419.80  $944.60
IOPS  $1,194.00  $0.00
총계  $1,988.20  $1,434.22

이 예제에서 I/O – Optimized 구성으로 전환하면 총 클러스터 비용을 28%까지 줄일 수 있습니다.

앞의 비용은 한 달 전체에 대한 높은 수준의 추정치이며 스토리지 비용은 월말에 계산됩니다(일별 기준이 아닙니다).

이 방법을 사용하여 총비용 추정치를 계산하고 Aurora 스탠더드와 Aurora I/O-Optimized 사이에서 의사결정할 때 필요한 정보를 얻을 수 있습니다.

리소스 정리

비용을 계산한 후 다음 단계를 사용하여 CloudWatch 대시보드를 삭제합니다.

  1. CloudWatch 콘솔의 탐색 창에서 대시보드를 선택합니다.
  2. 생성한 대시보드(예: aurora-iops-and-storage-details)를 선택하고 삭제를 선택합니다.

요약

이 블로그 포스트에서는 CloudWatch 지표를 사용하여 개별 클러스터 수준에서 Aurora 클러스터의 I/O 및 스토리지 사용량을 확인하는 방법을 안내하였으며, Aurora 스탠더드 구성에서 Aurora I/O – Optimized 구성으로 전환에 대한 의사결정을 할 때 비용적인 이점이 있는지 계산을 통해 살펴보았습니다.

이 게시물에 대한 질문이 있는 경우 AWS Support 팀을 통해 문의해 주시기를 바랍니다.

Seungwon Jang

Seungwon Jang

장승원 서포트 엔지니어는 데이터베이스 전문 엔지니어로 현재 Amazon RDS 서비스에 대한 고객들의 기술적 문의 및 이슈 분석 등의 고객 지원 업무를 수행하고 있습니다.

JinHyeok Lee

JinHyeok Lee

이진혁 솔루션즈 아키텍트는 솔루션 개발 및 보안 프로젝트 경험을 통해 스타트업 고객들이 안전하게 워크로드를 설계하고 운영할 수 있도록 지원하는 일을 담당하고 있습니다.