この記事は約4分で読めます。
こんにちは。AS部DS3課の池上です。
Amazon RDSとAmazon Auroraの費用を比較するために AWS Pricing Calculator を使用しましたが、その際に設定の解釈を誤り、想定と異なる結果になった部分があったので共有します。 なお、以後Amazon RDSはRDS、Amazon AuroraはAurora、AWS Pricing CalculatorはPricing Calculatorと記載します。
つまずいたポイント
上記のような構成を作成しようとしましたが、Aurora と RDS の価格を比較する際に、RDS の Pricing Calculator の設定を以下のように行いました。
RDS の設定として、「ノードを2つ」「マルチAZデプロイオプションを有効化」としました。これにより、下の図のように
- 「マルチAZでノード2つの構成が作られる」=「プライマリインスタンス1つ、別のAZにスタンバイが1つ作成される」
と想定していました。
Pricing Calculatorで表記されていた下の計算式を見ても一見すると、2つのインスタンスが設置されているような計算式に見えるので注意をしていませんでした。
しかし実際には、以下のような構成になっていました。
なぜこのような結果になったのか?
誤解の原因 は、「ノード」という単語の解釈を間違えたことと、「マルチAZデプロイオプション」の意味を誤解したことです。
誤った認識:「ノード=インスタンス数」と思ってしまった
正しい意味:「ノード=独立したプライマリインスタンスの数」
また、マルチAZデプロイオプション を 「インスタンスを異なるAZに分散させる機能」 だと思っていたことも間違いを誘発した理由です。 このオプションは実際には 「各ノードに対してスタンバイインスタンスを作成するオプション」 でした。
そのため、「ノード2つ+マルチAZ」の設定では、プライマリインスタンスが2つ、それぞれにスタンバイインスタンスが1つずつ作成される という構成になりました。
RDSとAuroraとの違い
Auroraではノード数とインスタンス構成に以下の関係があります。
Auroraのノードとインスタンスの関係
Aurora の 「ノード数」=「インスタンス数」
Aurora では、各ノードが1つのインスタンスに相当する
Aurora は常に「1つのプライマリ+複数のリードレプリカ」
プライマリインスタンス(1つ):書き込み可能
リードレプリカ(複数):読み取り専用
Auroraではプライマリーインスタンスは常に一つだけですので、以下の表のようにノード数が増えてもプライマリーインスタンスは増えません。
ノード数ごとの構成(Aurora)
ノード数 | インスタンス数 | プライマリ / リードレプリカの構成 |
---|---|---|
1ノード | 1 | プライマリ 1つ(リードレプリカなし) |
2ノード | 2 | プライマリ 1つ + リードレプリカ 1つ |
3ノード | 3 | プライマリ 1つ + リードレプリカ 2つ |
4ノード | 4 | プライマリ 1つ + リードレプリカ 3つ |
5ノード | 5 | プライマリ 1つ + リードレプリカ 4つ |
Auroraの場合、ノード=インスタンス数なので比較的わかりやすいです。
簡易的な価格比較
RDSとAuroraの価格比較を行いました 条件を単純にするため、インスタンスはオンデマンドのdb.t4g.largeで固定して、リージョンはap-northeast1(東京リージョン)でストレージはgp3、量は100GB、使用率は50%、RDSプロキシ、Database Insightsは無効にしています。 AuroraのI/Oレートはベースラインで10IO/秒、ピーク時で100IO/秒、ピーク時のIOアクティビティの時間を24時間にしています。
インスタンスが1つの場合(Auroraではこの構成は非推奨)
サービス名 | 1月あたりのコスト |
---|---|
RDS | 87.53ドル |
Aurora | 102.30ドル |
インスタンスが2つの場合(RDSはマルチAZ配置、Auroraはリードレプリカを1つ作成)
サービス名 | 1月あたりのコスト |
---|---|
RDS | 174.70ドル |
Aurora | 184.42ドル |
RDSとAuroraを比較すると若干Auroraの方が高い結果となりましたが、比較してコストが極めて高いというわけではないためAurora特有の高速フェイルオーバーや可用性の高さに魅力を感じているのであればAuroraの採用をしてもよいと思います。
まとめ
RDS
「RDSのノードの数」 = 独立したプライマリインスタンスの数
「RDSのマルチAZデプロイオプション」 = 各プライマリインスタンスにスタンバイを作成
RDSノード2つ+RDSのマルチAZ = プライマリ2つ + スタンバイ2つ(計4インスタンス)
Aurora
- Auroraではプライマリーインスタンスは常に一つだけ
- リードレプリカがノード数に応じて増える