not enterpriseな会社でredshiftを使ってみた
DESCRIPTION
TRANSCRIPT
![Page 1: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/1.jpg)
Not Enterpriseな会社で
Redshiftを使ってみた
![Page 2: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/2.jpg)
星野 豊 (@con_mame)
クックパッド株式会社 インフラストラクチャー部
AWS / MySQL / DataStore etc...
http://d.conma.me/
http://facebook.com/conmame
![Page 3: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/3.jpg)
BIG DATA
![Page 4: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/4.jpg)
世はまさにビッグデータ
ログ
アクセスログ
行動ログ
購入・決済ログ
クリック・動線
![Page 5: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/5.jpg)
ビッグデータ
![Page 6: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/6.jpg)
DWH / BI tool
![Page 7: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/7.jpg)
数千万~数億
![Page 8: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/8.jpg)
( ゚д゚) ・・・ (つд⊂)ゴシゴシ (;゚д゚) ・・・ (つд⊂)ゴシゴシゴシ _̲, ._̲ (;゚ Д゚) …!?
![Page 9: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/9.jpg)
∧_̲∧ ⊂(#・ω・) 置き場所が無い! / ノ∪ し―-‐‑‒J |l| | ⼈人ペシッ!! __ \ \  ̄ ̄
![Page 10: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/10.jpg)
Redshift
![Page 11: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/11.jpg)
Redshift?
![Page 12: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/12.jpg)
Redshift?データウェアハウス
フルマネージド
拡張性が高い
数TB~数PB
カラムナ型
リーズナブル?
![Page 13: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/13.jpg)
Architecture
![Page 14: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/14.jpg)
![Page 15: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/15.jpg)
![Page 16: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/16.jpg)
使ってみた
![Page 17: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/17.jpg)
BI tool
市場動向
ユーザ動向
サイト回遊
マーケティング
商品開発
![Page 18: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/18.jpg)
Original tool
ユーザ動向
検索ワード動向
監査
サポート
developer
more user
![Page 19: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/19.jpg)
COOKPAD的Redshift行動ログ
検索ログ
ユーザ属性
会員情報
監査ログ
![Page 20: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/20.jpg)
Redshiftを選んだわけMySQL Instance
バックアップ -> 自前
容量 -> 増え続ける
クエリ実行速度 -> レコード数の増加と共に遅くなる
運用負荷 -> パーテショニングなどのスクリプト作成
RDS
容量 -> 増やしやすいが増え続ける
クエリ実行速度 -> レコード数の増加と共に遅くなる
![Page 21: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/21.jpg)
Redshiftを選んだわけKVS
容量 -> メモリサイズに引っ張られる
検索性 -> 柔軟なクエリは使えない
運用負荷 -> バックアップなどは自前
Redshift
クラスタを拡張しやすい
バックアップ・スナップショット自動
リカバリも簡単
SQLが使える
![Page 22: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/22.jpg)
スケジュール 検証~RI購入
2 weeks
speed / backup / operation / specific
様々なメトリクスで測定
最初は監査ログは考慮していなかった
RI購入~ログ収集開始
XL * 2
1 week
![Page 23: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/23.jpg)
1日の検証が終わったらSnapshotを作成してクラスタを
Delete
クラスタをDeleteするのでSnapshotのS3保存料金はかかる
がクラスタを起動しているより安い
検証開始時はSnapshotからクラスタを起動
データ
メタデータ (ユーザ・クラスタスペック・台数)
FQDN ・ Parameter Group
Snapshotに必要なデータが全て入っているのですぐに検証を
再開出来る
ただし、Security Groupは毎回Modifyする
![Page 24: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/24.jpg)
app app app
fluentproxy
fluentproxy
manage
Separate audit from general logs
TREASURE DATA
![Page 25: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/25.jpg)
app app app
fluentproxy
fluentproxy
manage
Separate audit from general logs
DataPipline supportTREASURE DATA
![Page 26: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/26.jpg)
app / manage server -> fluent-proxy
通常のログと監査用ログは別proxyへ
fluentd-plugin -> S3
30分毎にS3にUpload
S3 -> Redshift
copyを発行
![Page 27: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/27.jpg)
Development
![Page 28: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/28.jpg)
staging
![Page 29: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/29.jpg)
DB
複数のDBを作成
development
many development tables
production
many tables (Each system)
![Page 30: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/30.jpg)
UserRoot User
Management All DB and Cluster
Service User
Each Service and WLM User Group
Development User
![Page 31: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/31.jpg)
1つのクラスタに複数のDB
開発用のDB
複数サービス用のテーブル
サービス・用途ごとに異なるクエリ
実行時間
対象データ
![Page 32: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/32.jpg)
Work Load Management
![Page 33: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/33.jpg)
Redshiftへのクエリはキューごとに管理される
キュー毎に並列度が設定されている
defaultでは1つのキュー・5並列
並列度を超えた場合は先行クエリが終わるのを待つ
キューの識別
ユーザ
クエリグループ
サーバリソースは全てのキューで共有
![Page 34: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/34.jpg)
最優先
アプリケーションから発行されるクエリ
並列度高め
優先度低
バッチなどから発行されある程度時間がかかってい
いもの
どうにもこうにも時間内に収まらない場合はクラス
タサイズアップも検討
最低
開発用
![Page 35: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/35.jpg)
Parameter Group -> WLM
Max 8キュー (default キュー含)
並列度合計 15
Superuserキュー 並列度1 (設定不可)
wildcardproduction_a
production_b
Timeout
statement_timeout
Timeoutとstatement_timeout
短い方優先
default queue
![Page 36: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/36.jpg)
1. Superuserでログインしていて、クエリグルー
プでSuperuserを指定している場合はSuperuserキ
ューで実行
2. ログインユーザがユーザグループに含まれて
いる場合は、一番最初にマッチするユーザグルー
プで指定されているキューで実行
3. ユーザグループに存在しておらず、クエリグ
ループが指定されている場合は、最初にマッチし
たクエリグループのキューで実行
4. どれにも当てはまらない場合はデフォルトキ
ューで実行
ユーザグループ > クエリグループ
![Page 38: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/38.jpg)
Access Control
![Page 39: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/39.jpg)
![Page 40: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/40.jpg)
クエリやデータのロード状況を確認したい
実行計画
クラスタリソース状況
クエリ毎のリソース使用状況・実行時間
![Page 41: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/41.jpg)
ViewQueriesInConsole
Describe*
![Page 42: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/42.jpg)
redshift:get*
![Page 43: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/43.jpg)
Resource Type ARN
Clusterarn:aws:redshift:ap-northeast-1:123456789012:cluster:oreore-
cluster
Parameter Grouparn:aws:redshift:ap-
northeast-1:123456789012:parametergroup:oreore-pm-group
Security Grouparn:aws:redshift:ap-
northeast-1:123456789012:securitygroup:oreore-sg
Snapshotarn:aws:redshift:ap-northeast-1:123456789012:snapshot:oreore-
cluster/*
Subnet Grouparn:aws:redshift:ap-
northeast-1:123456789012:subnetgroup:oreore-subnet
![Page 44: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/44.jpg)
{
“Statement": [
{
"Action": [
"redshift:CreateClusterSnapshot"
],
"Effect": "Allow",
"Resource": [
"arn:aws:redshift:ap-northeast-1:123456789012:snapshot:oreore-cluster/*"
}
]
}
管理権限を細かくIAMユーザに割り当て可能
![Page 45: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/45.jpg)
Query
![Page 46: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/46.jpg)
![Page 47: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/47.jpg)
![Page 48: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/48.jpg)
Generate Compiled Code
libpq and ODBC
JDBC
事前にアクセスされそうなクエリは流しておく
最初の実行は数秒かかる
プレースホルダに入る値が変わってもOK
![Page 49: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/49.jpg)
Happening
![Page 50: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/50.jpg)
キーワード ▲キーワード ▲キーワー
ド...
select substring(cast(substring(keywords from 5) as
varchar(100)) from 9) from hoge;
![Page 51: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/51.jpg)
_人人人人人人人人人人人人_
> Leader Node is DEAD <
‾^Y^Y^Y^Y^Y^Y^Y^^Y^Y^Y^Y^‾
![Page 52: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/52.jpg)
UTF8 な文字のバイト境界を下手にぶった切ると
Leader Nodeが落ちてるぽいようで
切断されて数十秒繋がらなくなる
7月下旬に治った
![Page 53: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/53.jpg)
Maintenance Window中でもCOPYが成功し
てしまう
調査お願い中…
![Page 54: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/54.jpg)
Maintenance Windowの時間でメンテナン
スが告知されている場合はCOPYを実行し
ないように改良
![Page 55: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/55.jpg)
Conclusion
![Page 56: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/56.jpg)
ユーザ動向だけじゃない
監査ログにも
最初は複数システムまとめてもOK
WLMはしっかりと
メンテナンス動向は要確認
Watch Forum
![Page 57: Not Enterpriseな会社でRedshiftを使ってみた](https://reader038.vdocuments.net/reader038/viewer/2022102922/54b75e9e4a79593e0d8b46f9/html5/thumbnails/57.jpg)
Thank you!!