はじめに
記事内容について
NTTテクノクロス株式会社のメガクラチームに所属している加藤です。AWS関連の業務をしています。
この記事は私が2024年8月JAWS-UG朝会 #60 セッション枠において発表した「[更新系限定]猫でもわかった気になるRedshift Serverless」おいて時間の関係で省略した内容について補足する記事になります。
目次
- JAWS-UG 朝会 #60 セッション枠発表資料の抜粋+簡単な説明
- セッション枠発表から漏れた内容(本記事の主たる内容)
- Redshift Serverlessスナップショットの別リージョンコピーについて
- Redshift Serverless DR環境構築について
記事の元ネタ
本情報は、私が2023年11月から2024年3月まで担当したプロジェクトで得たRedshift Serverlessの更新系処理に限定したノウハウをまとめたものになります。
「[更新系限定]猫でもわかった気になるRedshift Serverless」資料紹介
JAWS-UG 朝会#60 セッション枠において発表した資料になります。Redshift Serverlessの更新系処理に限定して観測結果、ノウハウをまとめました。ベース容量(RPU値)を変更した際にRedshift側で何が起きていたかをパフォーマンスモニターのグラフ等をもとに色々と推測もしています。
注意
本資料はあくまでも筆者が実際に構築した環境において観測した情報を元にしています。そのため限定された条件での情報であり、他の条件では参考にならない可能性があります。
結論
- 性能向上、コスト削減のためベース容量(RPU値)のチューニングは必須
- チューニング時は最初にベース容量(RPU値)32未満、以上にするかを検討する
- 更新処理はSELECT→DELETE→INSERTではなくはMERGE文を使う
資料抜粋その1(更新処理時のRPU値の割当観測結果の事例)
更新処理の負荷が変わってもRPU値の変動は発生しませんでした。また軽い負荷のアクセスでも基本RPU値はしっかり使ってます。
資料抜粋その2(ベース容量RPU値変更時)
ベース容量を変更しても直ぐには反映されない時があります。また、裏で色々な処理が行われていると推測されます。
Redshift Serverless スナップショットの別リージョンへのコピー
注意
この記事を執筆した2024年8月時点では、大阪リージョンではRedshift ServerlessはGAされていません。将来大阪リージョンでRedshift ServerlessがGAされれば以下の考慮は不要になります。
以下、Serverless版スナップショットを別リージョンへコピーする際の注意点になります。
別リージョンへのコピー時制約
Serverless版スナップショットを別リージョンにコピーする場合は、コピー先リージョンにおいてRedshift ServerlessがGAされている必要があります(マニュアル等確認しましたが本制約についての記載は見つけられず、サポートへ問い合わせて確認しました)。
このため2024年8月時点では本番環境が東京リージョンの場合は、リージョン障害対策用スナップショットを大阪リージョンにコピーする事ができません。Redshift ServerlessがGAされた他のリージョンにコピーが必要です。
要件に利用可能リージョンが国内のみの制限(代表例:ガバメントクラウド)がある場合は、後述の「DR環境を大阪リージョンに構築する場合の構成・手順例」の「海外リージョン使用不可な場合」の手順を参考にしてください。
DR環境を大阪リージョンに構築する場合の構成・手順例
以下、DR環境を大阪リージョンに構築する場合の構成・手順例になります。
Redshift Provisioned版を使う
Serverless版のスナップショットからProvisioned版にリストアすることが可能です。そのため大阪リージョンはProvisioned版を使うことでDR環境は実現できます。
ただし上記したように東京リージョンから大阪リージョンへはServerless版スナップショットを大阪リージョンへコピーが不可のため、一度Serverless版がGAされているリージョン経由でProvisioned版スナップショットを用意する必要があります。
大阪リージョンにてProvisioned版をリストアする
私のプロジェクトでは幸い国内リージョン縛りが無かったため、以下の手順で対応しました。
順番 | 手順内容 |
---|---|
0 | Serverless版スナップショットのクロスリージョンレプリケーション先にServerlessがGAされている海外リージョン(例:バージニア北部)を指定 |
1 | 東京リージョンで障害が発生した場合は、海外リージョンでServerless版スナップショットからProvisioned版をリストア |
2 | 海外リージョンでProvisioned版のスナップショットを取得。これをクロスリージョンレプリケーションで大阪リージョンへコピー |
3 | 大阪リージョンでProvisioned版スナップショットからProvisioned版をリストア |
海外リージョン使用不可な場合
この場合は、東京リージョンでServerless版スナップショットを取得したタイミングにおいて東京リージョン上でProvisioned版にリストアし、その後Provisioned版のスナップショットを取得して大阪リージョンにコピーする必要があります。もっとスマートな方法があるかもしれませが私には思いつきませんでした。
順番 | 手順 |
---|---|
0 | Serverless版スナップショット取得 |
1 | 東京リージョンでServerless版スナップショットからProvisioned版をリストア |
2 | 東京リージョンでProvisioned版のスナップショットを取得。これをクロスリージョンレプリケーションで大阪リージョンへコピー |
3 | 大阪リージョンでProvisioned版スナップショットからProvisioned版をリストア |
この方法の場合は、Provisioned版リストア~大阪リージョンへのコピーまでをStepFunctions等で作り込む必要がります。また日々Provisioned版スナップショット作成の為だけに高額な料金も発生します。
Serverless版スナップショットからProvisioned版へリストアする時には料金に注意が必要です。リストア可能なProvisioned版にはインスタスタイプ+最低ノード数の制限があります(私が調べた限り2024年8月時点でAWS上のマニュアルでは記載を見つけられませんでした)。リストア時はかなり高額な構成となるためリストア後は速やかにノード数を少なくするか、必要なくなった時点で停止・削除する事をお勧めします。
検証時は最安構成(dc2.largex32ノード)でリストアしましたが、短時間で数千円単位の課金が発生しました。
【リストア可能な構成と料金一覧】
ノード種類 | ノード数 | 最小ノード数オンデマンド料金 |
---|---|---|
dc2.large | 32ー128(3パターン) | 32ノード:$5,840.00/月 |
dc2.8xlarge | 4-16(13パターン) | 4ノード:$14,016.00/月 |
ra3.xplus | 16、32(2パターン) | 16ノード:$12,684.48/月 |
ra3.4xlarge | 8-64(57パターン) | 8ノード:$19,038.40/月 |
ra3.16xlarge | 2-32(31パターン) | 2ノード:$19,038.40/月 |
おわりに
Redshift Serverlessのスナップショットの他リージョンへのコピー、DR環境を検討する場合は事前に十分な検証を行うことをお勧めします。
猫でもわかるシリーズ紹介
過去に私が作成した猫でもわかるシリーズ記事の紹介です。2024年8月時点でのQiita上で発表済みのものになります。
参考文献
Amazon Redshift管理者ガイド
Amazon Redshiftデータベース開発者ガイド
AWS Black Belt Online Seminar Amazon Redshift
AWS Black Belt Online Seminar Amazon Redshift運用管理