hero_picture
Cover Image for 自社サービスで利用しているRDS for PostgreSQLをGraviton2に移行した話

自社サービスで利用しているRDS for PostgreSQLをGraviton2に移行した話

2022/08/30

クラウドソリューション事業部の上野です。

ある日、AWSさんより通知がきました。

AWS は、 2023 年 4 月 30 日までにすべての M3、R3 インスタンスを廃止する予定であり、すべての db.m3 または db.r3 インスタンスタイプを db.m5 または db.r5 インスタンスタイプにアップグレードすることをお勧めします。

通常であれば通知文にある通り後継のdb.m5系インスタンスへそのまま切り替えればいいのですが、db.m5は最小のものがlargeからとなります。弊社のサービスではdb.m3.mediumを利用しておりdb.m5.largeへ切り替えるとコストが上がることになるので、インスタンスタイプの見直しから図る必要がありました。

東京リージョン オンデマンドインスタンス(マルチAZ)の金額

  • db.m3.medium 0.24 USD/時
  • db.m5.large 0.494 USD/時

コストを下げるためにdb.m5.large以下のスペックとなるとバーストパフォーマンス(T系)インスタンスを利用する必要があります。そこで候補に上げられたのがGraviton2ベースのdb.t4gインスタンスでした。

ということで、自社サービスで利用しているAmazon RDS for PostgreSQL(以下、RDS)をGraviton2に移行した時の実際の流れを書いていきたいと思います。

インスタンスタイプの検討

db.t4gインスタンスを選択するとはいうものの、どのインスタンスタイプにするか検討が必要です。db.t4gインスタンスでも最低は2vCPUからになり、メモリを同一相当のものにするとdb.t4g.mediumが有力候補となりました。

  • db.m3.medium 1vCPU メモリ 3.75 (GiB)
  • db.t4g.medium 2vCPU メモリ 4 (GiB)

db.t4gはバーストパフォーマンス(T系)インスタンスであるため、現行の環境ではCPUがどの程度利用されているかが重要になります。

調べてみると現在は20%弱を推移していることが分かりました。

db.t4g.mediumのvCPU あたりのベースラインパフォーマンスは20%となります。vCPUが1から2へ増えることによる1CPU当りの負荷の低減と、Graviton2のCPUの処理能力の向上を期待して、通常稼働時はベースラインは割らないだろうという結論になりました。

立ちはだかるバージョン

件のサービスには検証環境があるため、さっそく検証環境のRDSをdb.t4g.mediumに変更しようと、、、できない(T_T)

理由は下記の記事にあるとおり、db.t4gインスタンスを利用するには、PostgreSQL バージョン 12.5 以上である必要があり、弊社の環境ではバージョンが12.5未満のものを利用していたことが原因でした。

Amazon RDS が MySQL、MariaDB、および PostgreSQL データベース用の T4g インスタンスのサポートを開始。

バージョンを上げる必要があるため、アプリ側への影響が懸念されます。

検証環境でバージョンアップを実施し、アプリチームに動作に問題がないかを確認してもらう必要がありました。

結果、バージョンアップによるアプリ側の修正は不要で動作も問題がないことを確認できました。

本番環境への適用

本番環境への適用ではバージョンアップやインスタンスタイプの変更に伴う、サービス断があるため、サービスのメンテナンス期間を設けて深夜に実施しました。この機会にその他の項目も改修を行っていますが、ここでは割愛します。

Graviton2化という観点からだけですと、

①PostgreSQLのバージョンアップデート

②インスタンスをdb.t4g.mediumに変更

となり特に問題なく作業は完了しました。

Graviton2化した効果

それではGraviton2へ移行した後の状況を確認していきましょう。

まずは切り替え前後のCPU使用率のグラフです。CPU使用率がガクッと下がっています。

次にベースラインも割っておらず、CPUクレジットの減少も見られません。

最後に当初の課題であったコストもほんの少し下がりました。

なお、実際にはリザーブドインスタンスを購入したため、下記の金額より下がっています。

東京リージョン オンデマンドインスタンス(マルチAZ)の金額

  • db.m3.medium 0.24 USD/時
  • db.t4g.medium 0.202 USD/時

まとめ

そもそもの発端はdb.m3系インスタンスの廃止でしたが、この機会に自社サービスで使っているRDSをGraviton2化することができました。

今回はPostgreSQLのバージョンアップがあったためアプリチームの検証がはいりましたが、Graviton2化に伴うCPUアーキテクチャの変更という点についてはアプリチームの検証はほぼ入っていません。マネージドサービスであるRDSではCPUアーキテクチャの変更によるアプリへの影響は少ないためです。

マネージドサービスのGraviton2化は容易にできますので、ぜひご検討いただければと思います。