はじめに
Amazon AuroraのIO最適化オプションの有効化を検討した際に、少し悩むポイントがあったので
同じように悩むことが無いようにこの記事を記載します。
AWS AuroraのIO最適化とは? 設定変更前に知っておくべき注意点
Amazon AuroraのIO最適化(IO-Optimized) は、IO負荷の高いワークロード向けの新しいクラスターストレージオプションです。
Aurora I/O 最適化モードでは、ストレージIOに関連するコストが完全に排除されるため、IOの多いシステム(I/O コスト > データベース全体のコストの 25%) でのコスト削減が期待できます。
しかし、いかなる状況でもメリットを最大化できるわけではありません。
IO最適化を適用する前に、その特性と制約を十分に理解する必要があります。
IO最適化の特性
IO最適化モードの主なメリットは次の通りです。
- ディスクIO料金が不要: トランザクション数に応じた課金がなく、予測可能なコスト。
- 簡単な料金体系: インスタンス料金のみで構成されるシンプルな課金モデル。
このため、IO料金の無料によってインスタンス料金とストレージ料金だけを気にかければ良くなるメリットがあります。
一方で以下のデメリットがある点については注意が必要です。
- インスタンス料金の増加: スタンダードと比べ3割増しのインスタンス料金
- ストレージ料金の増加: スタンダードと比べ2.25倍のストレージ料金
また、利用に際して以下の制約があります。
- Aurora I/O-Optimized は、次の Amazon Aurora バージョンでは、すべての AWS リージョン で使用できます。
- Aurora MySQL バージョン 3.03.1 以降
- Aurora PostgreSQL バージョン 16.1 以降、15.2 以降、14.7 以降、および 13.10 以降
メリットを最大限受けられないかもしれない理由
リザーブドインスタンス(RI)の制約
IO最適化オプションを検討する規模のワークロードであれば、既存のRIがあることが考えられます。
IO最適化を有効にした場合にはインスタンス料金が上がるため、公式ドキュメントにもある通りRIについても30%分追加購入することで、最大限のコストメリットを発揮します。
- Aurora I/O 最適化の RI 割引のメリットを最大限に活用するには、現在の RI と同じ RI を 30% 追加購入できます。
適用後の料金体系とRIが一致しない
しかしRIは、購入単位が整数値であることに注意が必要です。
例えば10台のインスタンスでクラスターが構築されている場合、1.3倍の13台分になるようにRIを追加購入することが可能です。
しかし2台のインスタンスで構築される場合、2.6台分のRIを購入する。ということはできません。
IO最適化後のインスタンス料金とRIはパズル
それでは、キリよくRIを購入できない場合にどうするのか?について紹介します。
RIの柔軟性
RDSのRIにはサイズ柔軟性があります。
これを活用することでIO最適化のコストメリットを最大化していくことができます。
具体的に説明していきます。
まずはインスタンス料金のみについて考えていきましょう。
r6g.4xlのインスタンス2台で構築されていて、既に前払い無し、期間1年 でRIを購入しているクラスターでIO最適化を検討します。
追加で0.6台分購入するというのは先述の通りできません。
このままだと東京リージョンの場合、時間辺り\$1.504((3.258 – 2.506)*2)の追加料金が発生し、30日分で計算すると \$1,082.88 の追加コストが発生します。
ここでRI柔軟性を活かしたRI購入を検討します。
考え方としては複数の同一インスタンスファミリーのRIを組み合わせ、RIの ”オンデマンド料金” の値の合計が ”Aurora I/O 最適化 (時間あたりの料金)” に なるべく近くなるよう にします。
ケース1)
現在は以下のようなケースだと仮定します。
- IO料金: \$3,000
- 稼働インスタンス数: r6g.4xl * 2
- Aurora I/O 最適化 (時間あたりの料金): \$6.516
- RI料金(時間あたりの料金): \$3.294 (r6g.4xl * 2)
- RIのオンデマンド時相当料金: \$5.012
- RIでカバーされないインスタンス料金(時間あたりの料金): \$1.504
この場合IO最適化オプションの有効化によるコスト削減効果は以下の計算式で求められます。
(実際はストレージ料金分も考慮すべき。)
IO料金 -(追加RIの月額料金 + RIでカバーされないインスタンス料金の月額分)
現在の値を当てはめると、削減効果は以下のようになります。
⇒ $3,000 – (0+$1.504*720= $1,082.88) = $1,917.12
ケース2)
次に、同じインスタンスファミリーでRIの合算値がなるべくオンデマンド料金に近くなるようにRIを購入したケースを考えてみます。
- IO料金: \$3,000
- 稼働インスタンス数: r6g.4xl * 2
- Aurora I/O 最適化 (時間あたりの料金): \$6.516
- RI料金(時間あたりの料金): \$4.323 (r6g.4xl * 2 + r6g.2xl + r6g.large)
- RIのオンデマンド時相当料金: \$6.578
- RIでカバーされないインスタンス料金(時間あたりの料金): \$0 ※RI分がわずかにオンデマンド料金を超過している
⇒ $3,000 – ($751.39+0) = $2,248.61
RIの柔軟性を活かしてIO最適化を導入した場合
$2,248.61 – $1,917.12 = $331.49
となり、1\$=¥150で計算すると1年辺り¥596,682と 約60万円ほど のより大きなコスト削減効果を生み出すことができます。
まとめ
Amazon AuroraのIO最適化は、高いIO負荷を持つワークロードに対して大きなメリットを提供する一方、インスタンス料金の増加やRIの制約に注意が必要です。
設定を変更する前に、詳細なコスト試算を行い、変更後の料金を最安値で利用するためのひと手間が必要です。
また、各DBクラスターに適切なコスト配分タグを付与し、クラスターごとの料金を明確化することで、コスト管理がより容易になります。
RI柔軟性を活かしたRI購入計画とタグ付けの徹底により、IO最適化の恩恵を最大限に引き出しましょう!
We’re hiring!
最後までお読みいただきありがとうございます。
現在もDELTA は一緒に働いてくださる仲間を大募集中です!
お気軽にフォームからご連絡ください☺
CTO Boosterについて(ご相談のお問い合わせ)はこちら!
DELTAのコーポレートサイト
記事をシェア: