コーヒーが好きな木谷映見です。
2022 年 7 月 12 日、Amazon Redshift Serverless の一般提供が開始 されています。
Amazon Redshift とは、AWS における DWH(Data Ware House:データウェアハウス)のサービスです。これがサーバレスになったというのはどういうことなのか、Amazon Redshift Serverless の概要を調査しました。
- ドキュメント
- 今までの Amazon Redshift(RA3 インスタンス)
- Amazon Redshift Serverless とは
- Redshift Serverless のコンポーネント
- Amazon Redshift Serverless の特徴
- Redshift Serverless と従来の Redshift Provisioned の比較
- 考慮事項
- おわりに
- 参考
ドキュメント
ドキュメントはこちらになります。
今までの Amazon Redshift(RA3 インスタンス)
Amazon Redshift(RA3 インスタンス)のアーキテクチャはクラスターという構成になっており、クラスターは主に以下3つの要素で構成されています。
- リーダーノード
- コンピュートノード
- マネージドストレージ
リーダーノードがクライアントから SQL クエリを受け付けコンパイルし、コンピュートノードに配信します。複数のコンピュートノードでこの処理を並列実行するため、大量データを高速に処理することが可能です。
コンピュートノードは高速ローカル SSD キャッシュを利用しており、該当データがキャッシュに存在しない場合はマネージドストレージからブロック単位でデータ読み取りを実行します。
マネージドストレージは Redshift 管理の S3 バケットを使用していて、Redshift フォーマットという特有のファイル形式でデータを保存しています。
Amazon Redshift クラスターを作成したことがなければ、2 か月間の無料トライアルが提供されています。
本記事では、 Redshift Serverless と比較し従来の Redshift を Provisioned やプロビジョニングされたクラスターと記載している箇所があります。
Amazon Redshift Serverless とは
従来の Redshift は非常に高性能ですが、クラスターを構成するこれらのノードの数やインスタンスタイプの決定、分析を進めていく中でのクラスターのチューニングに少々手間がかかり、選択するインスタンスによっては高額になるため、ちょっとした検証目的で使用するにはやや重めのサービスでした。
Redshift Serverless は、ノード部分の綿密なキャパシティプランニング(ノード数やインスタンスタイプの決定)をする必要がなくなり、分析のためのクエリ実行時に自動でプロビジョニング・スケールしてくれる、というものです。
クラスターという概念がなくなり、「名前空間」「ワークグループ」というコンポーネントで管理されます。
Redshift Serverless のコンポーネント
「名前空間」と「ワークグループ」を使用して、AWS アカウントとリージョンごとに複数のサーバーレス エンドポイントを作成できます。
名前空間
名前空間は、データベースオブジェクトとユーザーのコレクションです。 以下の項目が設定できます。
- 名前空間の名前
- データベース名とデータベース管理者パスワード
- IAM ロールによる許可の設定
- データの暗号化とセキュリティ
ここでデータが管理され、ストレージの使用量を確認できます。
ワークグループ
ワークグループは、エンドポイントの作成元となるコンピューティングリソースのコレクションです。
以下の項目が設定できます。
- ワークグループの名前
- ネットワークとセキュリティ
各ワークグループには、アプリケーションを接続できるサーバーレス エンドポイントがあります。ワークグループ作成後、ワークグループの設定から、プライベートまたはパブリックにアクセス可能なエンドポイントを設定できます。
また、クエリ監視ルールを使用してコストを管理できます。
名前空間とワークグループの関連付けは 1対1 です。
1 つの名前空間に 2 つのワークグループを紐づけたり、1 つのワークグループに 2 つの名前空間を紐づけたりすることはできません。
Amazon Redshift Serverless の特徴
シンプルで使いやすい
「Amazon Redshift Serverless とは」で記載の通り、クラスターという概念がなくなったため、クラスターの管理不要でデータ分析の実行が可能です。
従来の Redshift Provisioned はこのクラスター管理が大変で、最初にクラスターを構成する段階から利用規模を推測しインスタンスの選択をする必要があり、分析を進めていく中で分析規模に合わせてクラスターを調整する必要がありました。
この手間が省けたことで、検証などでかなり手軽に Redshift でのデータ分析が試せるようになりました。
自動スケール
一貫したデータ分析のパフォーマンスを提供するため、データウェアハウスの処理能力を自動でプロビジョニング・スケーリングします。
ワークグループの設定で、以下のような設定をすることができます。
- Redshift 処理ユニット (RPU) のベース容量
- ワークロードの処理に使用される Redshift 処理ユニット(RPU:Redshift Processing Unit) という単位でベース容量を設定可能
- 1 RPU = 16 GiB メモリで、範囲は 8 刻みの 32~512 RPU まで
- RPU はデフォルトで 128 RPU
- 使用制限
- Redshift Serverless のリソースの使用量 (およびそれに伴うコスト) を制限するしきい値を設定
- 制限に達した際は「アラート発報」「システムテーブルにログを書き込む」「ユーザークエリを無効にする」のいずれかのアクションを指定でき、想定以上のコスト発生を抑制することができる
- クエリの制限
- 0~86,399 秒の範囲でクエリの実行タイムアウト時間を設定できる
基本容量と RPU の最大時間を設定することで、予測可能なコストを維持しながら、パフォーマンス要件を達成しやすくなります。
従来の Redshift Provisioned の機能・性能はそのまま
従来の Redshift の抱負な機能やデータレイクとの統合、パフォーマンスはそのまま利用できます。
Redshift Serverless で作成したスナップショットを、プロビジョニングされた Amazon Redshift クラスターに復元することもできます。
分析に使用した時間だけ支払い
コンピュートに対する請求と、ストレージの請求があります。
コンピュートの請求
コンピュートに対する請求に関して、クエリを実行していないアイドル時間中は料金がかかりません。
- RPU 時間に対して秒単位で課金、アイドル時間(クエリが流れていない時間)の料金はかからない
- 60 秒の最低料金あり
- 同時実行スケーリングと Redshift Spectrum はどちらも Redshift Serverless の料金に含まれているため、別途料金の支払いは不要
ストレージの請求
ストレージの請求は、Redshift Provisioned クラスターと同じ料金で、コンピューティングリソースの請求とは別に行われます。
- Redshift マネージドストレージ(RMS)とスナップショットに対して GB / 月単位で請求
- 過去 30 分単位で 24 時間以内の特定のポイントには無料で復元できる
料金表
東京リージョンでの価格(2022/9/12時点) | ||
---|---|---|
コンピュートの請求 | 1 RPU 時間あたり | 0.494 USD |
ストレージの請求 | GB 月あたり | 0.0261 USD |
無料利用枠
Redshift Serverless では 90 日間で 300 USD までの無料トライアルが提供されています。無料トライアルの使用に関する請求の詳細は、請求コンソールに表示されないことに注意してください。使用状況は、無料トライアルの終了後にのみ、請求コンソールで確認できます。
Redshift Serverless と従来の Redshift Provisioned の比較
Redshift Serverless は従来の Redshift Provisioned と比べてコンパクトに開始できるため、Redshift での分析をささっと試してみたい場合や、今後の予測がつきにくいアドホックな分析などに利用できます。
Redshift Serverless で試しに分析してみて、やはり安定した基盤で大規模な分析がしたいと思ったら、Redshift Serverless で作成したスナップショットをプロビジョニングされた Amazon Redshift クラスターに復元して移行することもできます。
Redshift Serverless | Redshift Provisioned | |
---|---|---|
分析の規模 | 低頻度、予測不能(小~大規模)最大 512 RPU | 予測可能(中~超大規模)最大インスタンスタイプ:ra3.16xlarge、128 ノード |
基盤管理 | 自動 | クラスターのプロビジョニングとチューニングが必要 |
費用 | 分析実行時間、RMS ストレージ料金 | クラスタ稼働時間、RMS ストレージ料金、Redshift Spectrum でのクエリスキャン |
Redshift Serverless が適しているケース
- 開発環境
- クエリが実行されない時間帯が比較的長い
- パフォーマンスチューニングなどの知見がある管理者がいない
Redshift Provisioned が適しているケース
- 本番環境
- 常にクエリが実行されている
- 稼働時間や処理能力の予測が可能
- 安定した性能が求められる
考慮事項
主な考慮事項を記載します。
- 3 つのアベイラビリティゾーンに配置された 3 つのサブネットが必要
- Redshift Serverless では少なくとも 3 つのサブネットが必要で、それらが 3 つのアベイラビリティゾーンに配置されている必要があります。
Redshift Serverless ではメンテナンスウィンドウは使用できない
- ソフトウェアバージョンの更新は自動的に適用されます。Amazon Redshift では、バージョンを切り替えても、既存の接続やクエリの実行は中断されません。
最大クエリ実行時間
- クエリが設定された実行時間を超えると、Redshift Serverless はクエリを中止します。キューでの待機時間は実行時間に含まれません。有効な値は 0~86,399 秒です。
Redshift Serverless では AQUA(アドバンストクエリアクセラレータ)がサポートされていない
参考:Amazon Redshift Serverless を使用する場合の考慮事項
おわりに
Redshift Serverless についてまとめてまいりました。
Redshift Provisioned クラスターは個人で検証するには重いな…と感じていたので、気軽に試せる Redshift Serverless が GA されて嬉しいです。
Redshift の導入を検討されている方のご参考になれば幸いです。
参考
第二十回 ちょっぴりDD -Redshift Serverless で今から始めるサーバレスデータ分析環境
Redshift Serverless で今から始める サーバレスデータ分析環境
emi kitani(執筆記事の一覧)
AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。