Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
小規模ワークロードにおけるRedshift Serverlessのログの取り扱い
Search
ikeda-masashi
September 27, 2022
Programming
690
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
小規模ワークロードにおけるRedshift Serverlessのログの取り扱い
JAWS-BigData 勉強会 #21
ikeda-masashi
September 27, 2022
More Decks by ikeda-masashi
See All by ikeda-masashi
コーディングエージェントに 独自Extension書かせてみた
mashiike
0
91
Redshiftを中心としたAWSでのデータ基盤
mashiike
0
350
運用の役立たないダッシュボードの作り方。
mashiike
3
1.3k
Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!
mashiike
0
1k
Warningアラートを放置しない!アラート駆動でログやメトリックを自動収集する仕組みによる恩恵
mashiike
6
5.3k
Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~
mashiike
0
2.2k
人狼ゲームで考えるデータ基盤 〜データとはいったい・・・〜
mashiike
0
480
『エンタープライズ』という言葉の重さ 〜Data Vault 2.0をやめた2022年冬〜
mashiike
2
6.1k
Redshift ServerlessとProvisioned Cluster のちょっとした違い
mashiike
0
7.4k
Other Decks in Programming
See All in Programming
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
680
共通化で考えるべきは、実装より公開する型だった
codeegg
0
250
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
650
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
170
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
140
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.3k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
3
1.5k
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
230
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Limits of Empathy - UXLibs8
cassininazir
1
500
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
The Curse of the Amulet
leimatthew05
2
13k
GraphQLとの向き合い方2022年版
quramy
50
15k
Designing for Timeless Needs
cassininazir
1
370
エンジニアに許された特別な時間の終わり
watany
108
250k
Transcript
2022/09/26 19:03 - 19:28 BigData-JAWS 勉強会#21 面白法人カヤック 池田将士
@mashiike 小規模ワークロード向けのRedshift Serverlessのログの取り扱い
自己紹介 池田 将士 (@mashiike) 技術部 SREチーム所属 好きなAWSサービス Amazon S3 Amazon
Kinesis Data Firehose Amazon Redshift 2016年末に入社 入社当時はサーバーサイドエンジニア 現在はデータエンジニア活動 趣味 • ネットゲーム • OSSを書くこと
会社紹介 鎌倉の地にて、主にWeb技術を用いて 人の印象に深く残るような面白コンテンツを作る会社 ゲームからWebサービス、ミュージアムetc… 様々なことに挑戦
会社紹介 鎌倉の地にて、主にWeb技術を用いて 人の印象に深く残るような面白コンテンツを作る会社 ゲームからWebサービス、ミュージアムetc… 様々なことに挑戦 https://www.kayac.com/ より引用 本当に多種多様です。
こんな弊社では、 基本的には小規模ワークロード(ra3.4xlarge以上が必要にならない程度)
えっ!? ra3.xlplusより小さいサイズないの!!? むしろ・・・
そんな にとって嬉しい Redshift Serveless GA!
何が嬉しいのか? • 使ったコンピューティング性能に対する課金 Redshift Processing Unit (RPU) で測定 •
素早いスケーリング • 安心な可用性 (ra3.xlplus 1ノードで運用することもあったので・・・)
何が嬉しいのか? • 使ったコンピューティング性能に対する課金 Redshift Processing Unit (RPU) で測定 •
素早いスケーリング • 安心な可用性 (ra3.xlplus 1ノードで運用することもあったので・・・)
先日、9/22にてこういう内容で話したりも
第3回 AWSで実践!Analytics Modernization ~事例祭り編~ の資料より その内容を要約すると・・・ 安く使うためには!!! データ取り込み(LOAD)にRPUを使わない!!!
今回の内容は・・・ 小規模ワークロード向けに Redshift Serverlessで (料金がお安く) どうやってログデータを取り扱えば良いのか? ※仮に Kinesis Data Firehose経由で
1分に1回、取り込みに1秒かかるCopyコマンドを発行したとすると... 24 [分/day] ✕ 0.494 [USD/ RPU hour] ✕ 32 [RPU] = 379.392 [USD/day] ??? 真面目にやると多分お高くなる。
今回の内容は・・・ 小規模ワークロード向けに Redshift Serverlessで (料金がお安く) どうやってログデータを取り扱えば良いのか? ※仮に Kinesis Data Firehose経由で
1分に1回、取り込みに1秒かかるCopyコマンドを発行したとすると... 24 [分/day] ✕ 0.494 [USD/ RPU hour] ✕ 32 [RPU] = 379.392 [USD/day] ??? 真面目にやると多分お高くなる。 0.4 [hour/day] ✕ 0.494 [USD/ RPU hour] ✕ 32 [RPU] = 6.3232 [USD/day] 配信中は計算ミスしてましたすみません!
どうしたら、いいのでしょう! 方針は2つ!
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度
Redshift Spectrum Amazon S3上に存在するデータを直接参照する機能 before: after: https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c-getting-started-usi ng-spectrum-create-external-table.html より引用 外部スキーマを定義して
外部テーブルを定義する (データの取り込みなし)
Redshift Spectrum Amazon S3上に存在するデータを直接参照する機能 before: after: https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c-getting-started-usi ng-spectrum-create-external-table.html より引用 外部スキーマを定義して
外部テーブルを定義する (データの取り込みなし) 外部スキーマの外部テーブルに対してクエリが可能
ところで、Redshift Spectrumを使うとき、 ログだったら、使いますよね?パーティション https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c-spectrum-external-tables.html より引用 1時間に1回起動したとして 6 USD/day =
180 USD/month
実は、このパーティション・・・
実は、このパーティション・・・ 実際にS3のオブジェクトがなくても登録できます。 つまり、1日に一回先読みで1日分入れてしまうと良い。何だったら、1年分でも・・・
実は、このパーティション・・・
実は、このパーティション・・・ AWS Glue経由でも追加できる。 AWS GlueのAPI経由で追加してしまえば、Redshift Serverlessのワークグループは起きないっぽい
Redshift Serverlessで Redshift Spectrumを使うときの節約ポイント 未来のパーティションを予め AWS Glue経由で たくさん登録しておく
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度 https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/materialized-view-create-sql-co mmand.html Redshift Spectrumのデメリット例: マテリアライズドビューのAUTO REFRESH が使えなくなる
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度
毎分 COPYコマンドで取り込むから、RPUをたくさん使うんだ! 1時間に1回とか低頻度でまとめて取り込めば良いのでは? そう思って、Kinesis Data Firehoseの設定を開くと。。。
• Kinesis Data Firehoseは止められない • 最大でも900秒ごと • 流量が多くなるともっと分割されて、COPY回数が増える
• Kinesis Data Firehoseは止められない • 最大でも900秒ごと • 流量が多くなるともっと分割されて、COPY回数が増える 一体どうしたら良いのか・・・
ところで、昔はどうやってKinesisに流れるログを取り込んでいたのか? 実は、Kinesis Firehoseが発表されたのは 2015.10 、 東京に来たのは2017年 https://aws.amazon.com/jp/blogs/aws/amazon-kinesis-firehose-simple-highly-scalable-data-ingestion/
ところで、昔はどうやってKinesisに流れるログを取り込んでいたのか? 実は、Kinesis Firehoseが発表されたのは 2015.10 、 東京に来たのは2017年 https://aws.amazon.com/jp/blogs/aws/amazon-kinesis-firehose-simple-highly-scalable-data-ingestion/ https://speakerdeck.com/fujiwara3/aws-devday-tokyo-2019?slide=14 弊社は、隙間家具OSS
『Rin』を使っていた(いる) 実は、 • Kinesis firehoseの取り込み再試行は最大2時間 • メンテナンス時に取り込みを止められない • 昔から使い続けてるから変えられない • etc… で、まだまだ現役だったりする。
そうだ・・・Rinならば S3 NotificationをSQSにずっと溜めておいて、 数時間に一回起動して『一瞬に並列で取り込めば良い!』
そうだ!!? 時間が来るまで、元のQueueに戻すLambda関数があればいい https://github.com/mashiike/sqpulser RinもLambdaで起動するようにすれば、並列 度とスケーリングも良い!
github.com/fujiwara/Rin とても便利です!おすすめです。
Redshift Serverlessで Copyを使って取り込むときは Kinesis Data Firehoseの送信先Redshiftの設定に頼らない 何か、取り込み間隔を制御できる仕組みを考えよう Rinを使うかは置いといて・・・
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度
方針1: Redshift Spectrum メリット: ほぼリアルタイムデータ デメリット: SUPER型やマテリアライズドビュー といった機能が活用しづらい 方針2: 低頻度にCopy
メリット: Redshiftの機能をフル活用できる デメリット: データの鮮度 https://aws.amazon.com/jp/about-aws/whats-new/2022/02/amazon-redshift-public-preview-streaming -ingestion-kinesis-data-streams/ 覚えていますか?このPreview どうやら外部スキーマに対する マテリアライズドビューのようです。 Previewでは手動更新のみですが、 GAではどうなるのでしょうか? もしかしたら、Redshift Serverlessの ワークグループが起動したタイミングで 24時間分しゅっと取り込んでくれるかもしれないで す? (願望)
• Redshift Serverlessでログを取り扱うときは要注意 • Kinesis Data Firehoseを使ってCopyすると高くなるかも? • 方針は2つ!節約のポイントはそれぞれあるよ! ◦
方針1: Redshift Spectrumを使う 節約ポイントはAWS Glue経由で未来のパーティションを! ◦ 方針2: 低頻度Copy 節約ポイントはKinesis Data Firehoseに頼らない取り込み方法を考え よう! (弊社は github.com/fujiwara/Rin の再登場!) • プレビュー中のKinesis Data Streamのストリーミング取り込みは ちょっぴり期待が高い! まとめ
えっ!?大規模ワークロードは? 小さいサイズのProvisiond Clusterを用意し、取り込みを続けるのが多分一番楽。 このときの注意点は、Proisiond ClusterとServerlessの暗号化を揃えるところ。