[AWS]猫でもわかった気になるRedshift Serverless(更新系限定) 追加情報 

## はじめに
### 記事内容について
[NTTテクノクロス株式会社](https://www.ntt-tx.co.jp/)の[メガクラチーム](https://www.ntt-tx.co.jp/products/aws/)に所属している加藤です。AWS関連の業務をしています。

この記事は私が2024年8月[JAWS-UG朝会 #60 セッション枠](https://jawsug-asa.connpass.com/event/321688/)において発表した「[更新系限定]猫でもわかった気になるRedshift Serverless」おいて時間の関係で省略した内容について補足する記事になります。

### 目次
+ JAWS-UG 朝会 #60 セッション枠発表資料の抜粋＋簡単な説明
+ セッション枠発表から漏れた内容(本記事の主たる内容)
    + Redshift Serverlessスナップショットの別リージョンコピーについて
    + Redshift Serverless DR環境構築について
    + 【2024/12追記】re:Invent 2024 Redshiftアップデート情報

### 記事の元ネタ
本情報は、私が2023年11月から2024年3月まで担当したプロジェクトで得たRedshift Serverlessの更新系処理に限定したノウハウをまとめたものになります。

## 「[更新系限定]猫でもわかった気になるRedshift Serverless」資料紹介
JAWS-UG 朝会#60 セッション枠において発表した資料になります。Redshift Serverlessの更新系処理に限定して観測結果、ノウハウをまとめました。ベース容量(RPU値)を変更した際にRedshift側で何が起きていたかをパフォーマンスモニターのグラフ等をもとに色々と推測もしています。

:::note warn
注意
本資料はあくまでも筆者が実際に構築した環境において観測した情報を元にしています。そのため限定された条件での情報であり、他の条件では参考にならない可能性があります。
:::
:::note warn
注意
2025年2月10日Redshift ServerlessのIPアドレス要件が3固定へと変更になりました(EVRなし)。
[Amazon Redshift Serverless announces reduction in IP Address Requirements to 3 per Subnet](https://aws.amazon.com/about-aws/whats-new/2025/02/amazon-redshift-serverless-ip-address-3-per-subnet/)
このため資料P15の使用IPアドレス数は拡張VPCルーティング時(EVR)の場合になります。
:::


<script defer class="speakerdeck-embed" data-id="ea0eed4f86f8439a8ebb15b202fb27f5" data-ratio="1.414516129032258" src="//speakerdeck.com/assets/embed.js"></script>

### 結論
- 性能向上、コスト削減のためベース容量(RPU値)のチューニングは必須
- チューニング時は最初にベース容量(RPU値)32未満、以上にするかを検討する
- 更新処理はSELECT→DELETE→INSERTではなくはMERGE文を使う


### 資料抜粋その１(更新処理時のRPU値の割当観測結果の事例)
更新処理の負荷が変わってもRPU値の変動は発生しませんでした。また軽い負荷のアクセスでも基本RPU値はしっかり使ってます。
![neko-rs-kihon-01_r1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/fad50712-537b-24b4-c477-dbe97b80ae2e.png)


### 資料抜粋その２(ベース容量RPU値変更時)
ベース容量を変更しても直ぐには反映されない時があります。また、裏で色々な処理が行われていると推測されます。
![rs-rpu-chg-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/b23046af-56ee-4b42-85a6-ef08d5334334.png)

## Redshift Serverless スナップショットの別リージョンへのコピー
:::note warn
注意
この記事を執筆した2024年8月時点では、大阪リージョンではRedshift ServerlessはGAされていません。将来大阪リージョンでRedshift ServerlessがGAされれば以下の考慮は不要になります。
:::

以下、Serverless版スナップショットを別リージョンへコピーする際の注意点になります。

### 別リージョンへのコピー時制約
Serverless版スナップショットを別リージョンにコピーする場合は、**コピー先リージョンにおいてRedshift ServerlessがGAされている**必要があります(マニュアル等確認しましたが本制約についての記載は見つけられず、サポートへ問い合わせて確認しました)。

このため2024年8月時点では本番環境が東京リージョンの場合は、リージョン障害対策用スナップショットを大阪リージョンにコピーする事ができません。Redshift ServerlessがGAされた他のリージョンにコピーが必要です。
![neko-rs-crr-01_r2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/4ac61b96-3adc-642c-b7c0-bdab4081e391.png)

要件に利用可能リージョンが国内のみの制限(代表例：ガバメントクラウド)がある場合は、後述の「DR環境を大阪リージョンに構築する場合の構成・手順例」の「海外リージョン使用不可な場合」の手順を参考にしてください。

## DR環境を大阪リージョンに構築する場合の構成・手順例
以下、DR環境を大阪リージョンに構築する場合の構成・手順例になります。

### Redshift Provisioned版を使う
Serverless版のスナップショットからProvisioned版にリストアすることが可能です。そのため大阪リージョンはProvisioned版を使うことでDR環境は実現できます。

ただし上記したように東京リージョンから大阪リージョンへはServerless版スナップショットを大阪リージョンへコピーが不可のため、一度Serverless版がGAされているリージョン経由でProvisioned版スナップショットを用意する必要があります。
![rs-ss-hosoku01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/156d890b-0f85-bb4c-15e9-040f90952596.png)

### 大阪リージョンにてProvisioned版をリストアする
私のプロジェクトでは幸い国内リージョン縛りが無かったため、以下の手順で対応しました。

|順番   | 手順内容                                  |
|:----|:-------------------------------------------|
|0    |Serverless版スナップショットのクロスリージョンレプリケーション先にServerlessがGAされている海外リージョン(例：バージニア北部)を指定|
|1    | 東京リージョンで障害が発生した場合は、海外リージョンでServerless版スナップショットからProvisioned版をリストア|
|2    | 海外リージョンでProvisioned版のスナップショットを取得。これをクロスリージョンレプリケーションで大阪リージョンへコピー|
|3    |大阪リージョンでProvisioned版スナップショットからProvisioned版をリストア|

【スナップショットコピー、リストア手順】
![rs-sn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/9352668f-33c1-9ff5-8fd7-d03e27d987bd.png)

### 海外リージョン使用不可な場合
この場合は、東京リージョンでServerless版スナップショットを取得したタイミングにおいて東京リージョン上でProvisioned版にリストアし、その後Provisioned版のスナップショットを取得して大阪リージョンにコピーする必要があります。もっとスマートな方法があるかもしれませが私には思いつきませんでした。
|順番   | 手順                                    |
|:----|:-----------------------------------------|
|0    |Serverless版スナップショット取得|
|1    | 東京リージョンでServerless版スナップショットからProvisioned版をリストア|
|2    | 東京リージョンでProvisioned版のスナップショットを取得。これをクロスリージョンレプリケーションで大阪リージョンへコピー|
|3    |大阪リージョンでProvisioned版スナップショットからProvisioned版をリストア|

【スナップショットコピー、リストア手順】
![pro-bk-rep.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/a7dfbaa9-e2a3-f524-25cb-6f6c2528aeba.png)


この方法の場合は、Provisioned版リストア～大阪リージョンへのコピーまでをStepFunctions等で作り込む必要がります。また日々Provisioned版スナップショット作成の為だけに高額な料金も発生します。
![rs-cal-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/c26884a5-138c-f62c-7e3a-efe88c657d31.png)

Serverless版スナップショットからProvisioned版へリストアする時には料金に注意が必要です。リストア可能なProvisioned版にはインスタスタイプ＋最低ノード数の制限があります(私が調べた限り2024年8月時点でAWS上のマニュアルでは記載を見つけられませんでした)。リストア時はかなり高額な構成となるためリストア後は速やかにノード数を少なくするか、必要なくなった時点で停止・削除する事をお勧めします。

検証時は最安構成(dc2.largex32ノード)でリストアしましたが、短時間で数千円単位の課金が発生しました。

【リストア可能な構成と料金一覧】
|ノード種類 | ノード数 |最小ノード数オンデマンド料金   |
|:--------:|:---------|:------------------------------------------|
|dc2.large|32ｰ128(３パターン)|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/月|

## 【2024/12追記】re:Invent 2024 Redshiftアップデート情報
re:Invent 2024 Redshift において発表された内容で個人的にこれはと思った機能についての紹介になります。

### データ共有による Amazon Redshift マルチデータウェアハウス書き込み
この[発表](https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-redshift-multi-data-warehouse-through-data-sharing/)は個人的には待ち望んでいたものでした。複数の書き込みワークロードに対して、より適した基本RCU値を個別に設定することでコスト最適化がより容易に行えるようになりました。私が試した限りではRedshift Serverlessは、書き込み時の基本RCU値は負荷変動による動的変更はほぼ発生しなかったからです。

【参考情報】
Snowflakeではコンピューティングリソースは、仮想ウェアハウスという単位で管理されます。そのため書き込みも含め利用者単位で仮想ウェアハウスを立てることで、利用者単位での課金(受益者負担)が簡単に可能でした。

## おわりに
Redshift Serverlessのスナップショットの他リージョンへのコピー、DR環境を検討する場合は事前に十分な検証を行うことをお勧めします。

### 猫でもわかるシリーズ紹介
過去に私が作成した猫でもわかるシリーズ記事の紹介です。2024年8月時点でのQiita上で発表済みのものになります。
- [猫でもわかるDirect Connect(Cloud Wan対応版)](https://qiita.com/kamogashira/items/501543b04c1d9a2d9970)
- [猫でもわかるBLEA](https://qiita.com/kamogashira/items/e1a7852617ec1d7e3bf5)
- [猫でもわかるRoute53(Resolver,Hosted zone)](https://qiita.com/kamogashira/items/60a1f2720d016c167951)

## 参考文献
[Amazon Redshift管理者ガイド](https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/welcome.html)
[Amazon Redshiftデータベース開発者ガイド](https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/welcome.html)
[AWS Black Belt Online Seminar Amazon Redshift](https://pages.awscloud.com/rs/112-TZM-766/images/20200318_AWS_BlackBelt_Redshift.pdf)
[AWS Black Belt Online Seminar Amazon Redshift運用管理](https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon-Redshift-Management_0331_v1.pdf)