[AWS] RDS Aurora I/O-Optimized

@Shin, Jiwoo · April 14, 2024 · 10 min read

안녕하세요!👋🏻

AWS에서 제공하는 다양한 서비스 중에서 특히 데이터베이스를 운영할 때 비용 효율성을 높이기 위한 방법 중 하나가 'Aurora I/O-Optimized'를 적용하는 것입니다. 이 글을 통해 Aurora I/O-Optimized의 개념을 소개하고, 어떻게 비용 효율을 높일 수 있는지 살펴보겠습니다.

I/O-Optimized 요금제 소개

I/O-Optimized 요금제는 Amazon Aurora 서비스의 한 형태로, 데이터베이스의 입출력(IO) 작업에 최적화되어 비용 효율을 높이는 요금 체계입니다. 이 요금제는 읽기 및 쓰기 I/O 집약적인 작업을 자주 수행하는 데이터베이스에 적합하며, 읽기 및 쓰기 I/O지출이 총 Aurora 데이터베이스 지출의 25%를 초과하는 경우 Aurora I/O-Optimized를 이용하면 읽기 및 쓰기 I/O 집약적 워크로드의 비용을 최대 40% 절감할 수 있습니다.

Aurora I/O-Optimized는 클러스터 모드를 선택해서 사용할 수 있습니다.

Cluster 모드
Cluster 모드

RDS Aurora 요금제

제약사항

  • 버전 제한 : Aurora MySQL(3.03.1) 이상, Aurora PostgreSQL v15.2 이상, v14.7 이상, v13.10 이상에서 사용할 수 있습니다.
  • 요금제 변경은 30일에 1회 가능
  • 요금제는 클러스터에서 적용하며, 하위 모든 인스턴스에 적용

유의사항

요금제는 특히 입출력(IO) 작업이 높은 데이터베이스 환경에서 비용 효율을 극대화하도록 설계되었지만, 아래 비용 증가도 고려해야 합니다.

  • 인스턴스 비용: 일반 Aurora 인스턴스에 비해 I/O-Optimized 인스턴스의 시간당 비용이 높습니다.

RDS 인스턴스 비용
RDS 인스턴스 비용

  • 스토리지 비용: 스토리지 사용에 대한 요금도 증가합니다.

RDS 스토리지 비용
RDS 스토리지 비용

비용 증가에도 불구하고 사용하시는 워크로드에서 읽기 및 쓰기 I/O 비용이 전체 비용 중 25% 이상이라면 I/O-Optimized를 선택하는 것은 합리적이라고 생각됩니다.

RI까지 묻는다면?

RI는 Reserved Instance이며, 계약 기간 내 할인된 시간당 요금을 구매하여 사용하는 AWS 구매옵션 중 하나 입니다. 이러한 RI는 RDS에서 InstanceUsage(인스턴스 비용)비용에만 적용됩니다.

위의 정보를 기반으로, I/O-Optimized 역시 RI에 적용됩니다. 해당 사용량에 대한 옵션 간 요금 차이가 자동으로 계산됩니다. Aurora I/O-Optimized를 이용하여 RI 할인 혜택을 최대한 활용하려면 인스턴스 비용이 기존 RI와 유사한 RI를 30% 추가로 구매하면 됩니다.

크기 유연성
크기 유연성
실제로 Nomalized Factor(크기유연성)값도 30%로 증가된 모습입니다.

RDS RI 요금제

RI 적용 우선순위

결론은 I/O Optimized 가 먼저 적용됩니다.

만약 RDS 일반 모드와 I/O Optimized 모드 둘 다 동시에 사용 중이고, 모두 RI를 적용받을 수 있는 상황이라면 적용 우선순위가 어떤지 궁금하여 AWS Case Open 해보았습니다.

AWS Case 답변

Amazon RDS Reserved Instances(RI)는 사용 유형에 따라 다른 방식으로 적용됩니다. 일반적으로 다음과 같은 순서로 적용됩니다.

  1. InstanceUsageIOOptimized: 이 사용 유형은 프로비저닝된 IOPS(PIOPS) SSD 스토리지를 사용하는 IO 최적화된 인스턴스에 대해 적용됩니다. 이 유형의 RI가 우선 적용됩니다.
  2. InstanceUsage: 이 사용 유형은 일반 인스턴스 사용량에 대해 적용됩니다. 여기에는 IO 최적화되지 않은 인스턴스와 마그네틱 또는 범용 SSD 스토리지가 포함됩니다. InstanceUsageIOOptimized RI가 없거나 이미 적용된 경우, InstanceUsage RI가 남은 사용량에 적용됩니다.

따라서 RI 적용 순서는 다음과 같습니다:

  1. InstanceUsageIOOptimized RI
  2. InstanceUsage RI

이 순서는 AWS가 청구 할인을 최대화하는 방식으로 설계되었습니다. IO 최적화된 인스턴스는 일반적으로 더 비싸므로, 해당 RI 할인이 먼저 적용되어 더 큰 절감 효과를 얻을 수 있습니다. 또한, AWS는 동일한 사용 유형 내에서 가장 높은 가치의 RI를 먼저 적용하여 할인을 최적화합니다

RI + I/O Optimized 어떻게 계산될까?

구매한 RI (1년, 후불, 서울리전, Aurora Mysql, db.rg6.xlarge, 크기유연성(NF) 8) x 1

4월 기준으로 15일은 Standard를 사용했으며 남은 15일은 I/O Optimized로 db.rg6.xlarge 1대 인스턴스를 사용했다고 가정해봅시다.

(인스턴스 비용만 비교해보겠습니다.)

  • 구매한 RI의 시간당 요금은 USD 0.412, NF 8
  • Standard 시간당 요금은 USD 0.627, NF 8
  • I/O Optimized 시간당 요금은 USD 0.815, NF 10.3

계산 방법

AWS에서 제공하는 예약 인스턴스(RI) 크기 유연성을 이용하여 비용 계산을 할 때는 '정규화 계수(Normalization Factor, NF)'를 사용합니다. 이는 다양한 인스턴스 크기 간의 계산을 표준화하여, 사용자가 다른 크기의 인스턴스를 유연하게 사용할 수 있도록 하는데 목적이 있습니다. 즉, 구매한 RI가 특정 인스턴스 크기에만 국한되지 않고, 같은 인스턴스 패밀리 내에서 다양한 크기의 인스턴스에 적용될 수 있게 합니다.

  1. 각 요금제별 사용 시간 계산 한 달(30일)의 총 시간: 720시간 (30일 × 24시간) 각 요금제별 사용 시간: 360시간 (15일 × 24시간)
  2. NF 당 단가 계산 db.rg6.xlarge 는 NF(Nomalized Factor)가 '8'입니다. NF가 8일 때, RI 요금은 0.412이니, 1NF 당 0.412/8 = USD 0.0515 입니다.
  3. 각 요금제별 비용 계산

    Standard

    • RI 적용 비용 = 360시간(15일) × USD 0.0515 x 8(NF) = USD 148.32

    I/O Optimized

    • 해당 요금의 NF 값은 10.3이므로, RI 1대가 NF 8만큼 커버가 가능한 상태이다. 그래서 10.3 - 8 에 대한 비용은 온디맨드로 과금됩니다.
    • I/O Optimized RI 적용 비용 = 360시간(15일) × USD 0.0515 x 8(NF) = 148.32 USD
    • 온디맨드 금액 = 360시간 × USD 0.0791 × (10.3 - 8) = USD 65.74
    • I/O Optimized 총 비용 = USD 148.32 (RI 부분) + USD 65.74 (온디맨드 부분) = USD 214.06
  4. 총 인스턴스 비용 한달 내내 Standard 만 사용한 경우 : USD 296.64 한달 내내 I/O Optimized 만 사용한 경우 : USD 428.11 15일씩 반반 나눠 쓴 경우 : USD 362.38

I/O Optimized는 비록 기본 인스턴스 비용은 더 높지만, 특히 I/O 작업이 높은 워크로드에서는 I/O 비용을 과금하지 않기 때문에, 훨씬 경제적인 선택이 될 수 있습니다.

정리

Aurora I/O-Optimized 요금제는 데이터베이스 작업 중 특히 읽기 및 쓰기 I/O 작업이 많은 환경에서 비용 효율을 극대화할 수 있는 좋은 선택지가 될 수 있습니다. 하지만, 이러한 요금제는 기본 인스턴스 비용과 스토리지 비용이 증가한다는 점을 명심해야 합니다.

또한, RI를 활용하여 추가적인 비용 절감을 기대할 수 있지만, 이는 사용 패턴과 필요에 따라 철저한 계획과 계산이 필요합니다. RI의 크기 유연성을 활용해 보다 효율적으로 인스턴스를 관리할 수 있으나, I/O Optimized의 경우 NF 값의 변동으로 인한 온디맨드 비용 발생 가능성도 고려해야 합니다.

AWS를 이용하시는 모든 분들이 이 글을 통해 좀 더 효율적인 비용 관리 방안을 모색할 수 있기를 바랍니다. 다음 포스팅에서는 또 다른 AWS 서비스의 비용 최적화 전략에 대해 알아보겠습니다. 감사합니다.🚀

참고

@Shin, Jiwoo
다양한 관점에서 문제를 해결하길 좋아합니다.