Slide 1

Slide 1 text

Redash v4をv8に アップデートした話 丹内優紀 合同会社DMM.com データ本部データインフラ部データオペレーショングループ BIチーム Redash Meetup v7.0.0 2021/05/21

Slide 2

Slide 2 text

• 丹内優紀(たんない ゆうき) • 2018年11月 中途入社 • データ本部BIチームリーダー 自己紹介

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

DMM.comのRedash運用状況 6

Slide 7

Slide 7 text

アップデート計画の概要 どのように進めたか 7

Slide 8

Slide 8 text

8 事前にオンプレからGKEに移行 Before After

Slide 9

Slide 9 text

• Python 3に追従したい • Python2のサポートが終了し、Redashもv9でPython3に変わる • Pythonデータソースで使うpipモジュールを更新できるようにしたい • Redashの新機能を使いたい • Athena Workgroup • ヒートマップ、タグ • 柔軟なスケジュール設定 • パッチ関連の問題を解決したい 9 Redash v8に更新したかった理由

Slide 10

Slide 10 text

パッチについて • ファイルを丸ごとコピーしていた • パスの変更に追従しにくい、差分を追いにくい

Slide 11

Slide 11 text

例: データソース情報コメントパッチ 11 • Redashで事業部ごとのクエリ実行状況を把握した い。 • 事業部ごとの消費リソース(特にAthena代)を知りた い。 => 分析環境の管理業務を容易に!

Slide 12

Slide 12 text

例: Partition Key強制パッチ データスキャン量を削減するため

Slide 13

Slide 13 text

アップデートプロジェクトに対する要求 • URLを変えないでアップデートしたい。 • 社内のSlackやWikiにRedashのURLが多数存在してる。 • 一般的な手順通り、DB migrationをするIn-Place Upgrade方式。 • 少ない工数でミスなくアップデートしたい • フルタイム1名(自分)、割り込み作業あり • 並行稼働期間でベータ版を提供し、利用者全員を巻き込む

Slide 14

Slide 14 text

プロジェクト概要 • バージョンを4から8に一気に上げる • v8のworkgroup機能を使うことでパッチを削減する • v4からv8にELTを毎日実施し、並行稼働期間を設ける。 • パッチ方式をpatchfile方式に変更する。

Slide 15

Slide 15 text

プロジェクトの流れ • v8環境構築(ローカル、ステージング) • DB同期 • パッチ移植作業 • Private Beta • 本番環境構築 • 並行稼働前半: Public Beta • 並行稼働後半: GA

Slide 16

Slide 16 text

v8環境構築 16

Slide 17

Slide 17 text

サーバー環境構築 • 初期からCI/CD環境を構築。 • DBの内容を日次で同期するバッチを実装 • psqlコマンドでDBをリセット • CloudSQL機能でエクスポート(.csv.gz) • CloudSQL機能でインポート • Redash v8のマイグレーションを実行

Slide 18

Slide 18 text

パッチの移植作業 • スキャン量を制限するためのパッチは、Redash v8から使えるAthena Workgroup機能で代替することで削減した。 • そのほかのパッチはv8用に修正して移植した。

Slide 19

Slide 19 text

REDASH_SECRET_KEY問題について • v4からv8に上げる際、複数の環境変数に同じ値を設定する • REDASH_COOKIE_SECRET • REDASH_SECRET_KEY • バグのため、両方設定されてないとデータソースが使えない • 長くなるので詳細は懇親会にて

Slide 20

Slide 20 text

ベータ版提供 20

Slide 21

Slide 21 text

ベータテスト • パッチ移植後にベータテストを行った。 • 合計で6件の不具合が見つかった。 • やってよかった!

Slide 22

Slide 22 text

ベータテスト • ダッシュボード検索でエラー • Known Issueで、masterブランチにはパッチがマージ済み • バックポートした。 • https://github.com/getredash/redash/pull/4804 • Redash Metadataをいじる一部のPython DSでエラー • スクリプトを修正した。

Slide 23

Slide 23 text

プロジェクトの総括 23

Slide 24

Slide 24 text

振り返り • 並行稼働で不具合が見つかったのでよかった。 • マイグレーションも勉強になった。 • Redash読む機会が増えた。 • 不明点を棚卸しできて良い。 • パッチのキャッチアップになる

Slide 25

Slide 25 text

アップデート後に運用してみて • 未解決のIssueに当たることが増えた。 • 本体に送れそうなPRのアイデアや修正点がいくつか出てきた。 • チームメンバー二人が送り、1つはマージされました • https://github.com/getredash/redash/pull/5447 • Redashの表示がとても早くなって、DB負荷が減った。

Slide 26

Slide 26 text

プロジェクトのまとめと今後の展望 • Redashに貢献したい • v9早期導入 • 本体へのPR • ナレッジシェア • SQLが書きやすい環境を作ってデータ利用環境を改善したい • データマートの整備、拡充 • スニペットやUDFで複雑なクエリを改善

Slide 27

Slide 27 text

データエンジニア採用中! https://dmm-corp.com/recruit/engineer/173/

Slide 28

Slide 28 text

No content