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
95
Redshiftを中心としたAWSでのデータ基盤
mashiike
0
360
運用の役立たないダッシュボードの作り方。
mashiike
3
1.3k
Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!
mashiike
0
1k
Warningアラートを放置しない!アラート駆動でログやメトリックを自動収集する仕組みによる恩恵
mashiike
6
5.4k
Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~
mashiike
0
2.2k
人狼ゲームで考えるデータ基盤 〜データとはいったい・・・〜
mashiike
0
490
『エンタープライズ』という言葉の重さ 〜Data Vault 2.0をやめた2022年冬〜
mashiike
2
6.2k
Redshift ServerlessとProvisioned Cluster のちょっとした違い
mashiike
0
7.5k
Other Decks in Programming
See All in Programming
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
490
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
170
Google Apps Script で Ruby を動かす
kawahara
0
150
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.2k
「人を評価する AI」の設計と実装
ryoyanara
0
180
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
680
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
420
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.2k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
100
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
460
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
200
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
From π to Pie charts
rasagy
0
270
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
330
Build your cross-platform service in a week with App Engine
jlugia
234
19k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
350
So, you think you're a good person
axbom
PRO
2
2.1k
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の暗号化を揃えるところ。