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
BigData JAWS #16 RDB x DMS x QuickSightでDBデータを可...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Masanori Yamaguchi
March 01, 2021
Technology
340
0
Share
BigData JAWS #16 RDB x DMS x QuickSightでDBデータを可視化した話
2021/03/01 BigData-JAWS 勉強会#16 登壇時の資料です。
https://jawsug-bigdata.connpass.com/event/200841/
Masanori Yamaguchi
March 01, 2021
More Decks by Masanori Yamaguchi
See All by Masanori Yamaguchi
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
3
610
AWS DevOps Agent 検証で見えた可能性と限界 / AWS DevOps Agent
kinunori
6
1.8k
今日から使える AWS Step Functions 小技集 / AWS Step Functions Tips
kinunori
8
800
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
2.5k
AWS Well-Architected なインシデントレスポンスを実装しよう / Implementing Incident Response with AWS Well-Architected
kinunori
2
760
pre:Invent から気になった サービスを深掘りしてみる- ECS 予測スケーリング編 / ECS-predictive-scaling
kinunori
2
270
JAWS-UG 函館 Dr.Wernerの基調講演で振り返る "推測するな、計測せよ" / JAWS-UG Hakodate re:Invent 2024 recap
kinunori
2
130
Share your lessons - 20241217 AWS Ambassador & Top Engineer LT
kinunori
0
120
re:Invent 2024 事前勉強会 / re:Invent 2024 stby
kinunori
2
1.3k
Other Decks in Technology
See All in Technology
Network Firewall Proxyで 自前プロキシを消し去ることができるのか
gusandayo
0
150
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
2k
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
170
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
170
やさしいとこから始めるGitHubリポジトリのセキュリティ
tsubakimoto_s
3
2.1k
FASTでAIエージェントを作りまくろう!
yukiogawa
4
180
Datadog で実現するセキュリティ対策 ~オブザーバビリティとセキュリティを 一緒にやると何がいいのか~
a2ush
0
180
DMBOKを使ってレバレジーズのデータマネジメントを評価した
leveragestech
0
500
Babylon.js を使って試した色々な内容 / Various things I tried using Babylon.js / Babylon.js 勉強会 vol.5
you
PRO
0
100
トイルを超えたCREは何屋になるのか
bengo4com
0
110
BFCacheを活用して無限スクロールのUX を改善した話
apple_yagi
0
140
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
170
Featured
See All Featured
It's Worth the Effort
3n
188
29k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
92
Thoughts on Productivity
jonyablonski
75
5.1k
The untapped power of vector embeddings
frankvandijk
2
1.6k
Code Review Best Practice
trishagee
74
20k
Scaling GitHub
holman
464
140k
My Coaching Mixtape
mlcsv
0
91
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
170
Facilitating Awesome Meetings
lara
57
6.8k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.6k
Building an army of robots
kneath
306
46k
Transcript
1 RDB x DMS x QuickSightで 基幹DBのデータを可視化した話 - がんばれ QuickSight
- 2021/03/01 BigData-JAWS 勉強会#16 JAWS-UG 千葉⽀部 ⼭⼝正徳
2 名前:⼭⼝ 正徳 JAWS-UG千葉、Fin-JAWS コアメンバー JAWS DAYS 2021 実⾏委員⻑ 所属:フォージビジョン株式会社
2020 Japan APN Ambassador ⾃⼰紹介 好きなAWSサービス:ECS Fargate, Lambda 仕事:AWS事業管理、コンテナに関わる案件推進
3 https://aws.amazon.com/jp/builders-flash/202103/jawsdays-yamaguchi-interview/
4 1. 背景とアーキテクチャ 2. 直⾯した課題と解決⽅法 3. ここができるともっと良くなる、QuickSight︕ お話しすること
5 1.背景の説明
③将来的には、データレイク化の構想 ②BIツールアクセス先であるDB負荷の軽減 (DB⾃体のリプレイスは⾏わない) ①BIツールの刷新 1. 背景 ⇒ ユーザ端末から直接DB参照しているため スケールしない。 ⇒
BI⽤のデータリポジトリを作成 ⇒ データをS3へ蓄積し、今後他データ蓄積も視野 6 ユーザ端末内の BIツール ① ②、③ DB ミドルウェア
1. アーキテクチャ 7 z Glueジョブ リアルタイムで DBデータ差分抽出 S3 (⽣データ⽤) QuickSight
DMS S3 (分析データ⽤) DBデータ差分 をCSV出⼒ Athena SQLクエリ 分析データを 更新 差分CSVの 取り込み データ抽出 分析/可視化 データ編集 将来的には 他RDB等とも連携 DB ミドルウェア BIユーザ APIでデータセット更新 現⾏DB環境 Lambda DB負荷を最⼩限にするため、 連携テーブルは絞り込み コスト⾯を意識し、 ジョブを分けすぎない Athenaの多重度や S3負荷も意識し、 API実⾏間隔も考慮
8 2. 直⾯した課題と解決⽅法
9 2. 直⾯した課題と解決⽅法 プロジェクトを進める上で直⾯した課題と、その課題をどのように 回避したかを説明していきます。 このあたり 現⾏DB、DMS、Glueジョブと⾊々あるのですが、 なぜか普段あまり語られることが多くないQuickSight 関連に 絞ってお話しします。
10 2. 直⾯した課題と解決⽅法 ① SPICE のデータ更新間隔への挑戦 ② ⼤⼈数へのダッシュボード共有⽅法 ③ ダッシュボードのデータ更新⽇時をユーザに⾒せたい
④ ピボットのフィールドは20 列制限内での表現
11 要件︓ 『QuickSightに、1時間未満の間隔で、最新の分析データを インポートすること』 ここの話 2. SPICE のデータ更新間隔への挑戦
2. SPICE のデータ更新間隔への挑戦 ▪背景︓ ・ 今回はSPICEを利⽤ ・ 予めAthenaを介しSQLクエリで分析データを抽出し、SPICE内にインポートするつくり ・ SPICE
に取り込む場合、QuickSight上での表⽰データはSPICEへインポート時点と なるため、定期的にSPICE内のデータ最新化が必要 ※可能な限り、早いサイクルでSPICEのデータ最新化したい QuickSight Athena SQL SQL結果 をインポート SPICE S3 (分析データ⽤) ⾼速に 可視化 × 毎次SQLクエリ実⾏は 性能⾯で難 SPICEとは ・QuickSight に内蔵されたインメモリ型のデータベース ・分析データをSPICE にインポートすることで、SPICE内の インポートデータに対し分析/可視化を可能。そのため⾼速。
13 ▪解決⽅法︓ ・QuickSightの各データセットに対しCreateIngestion API(※)を発⾏することで、 任意タイミングでSPICE内データを⼿動更新できる。更に⾃動更新とも組み合わせる。 ※CreateIngestion APIとは https://docs.aws.amazon.com/ja_jp/quicksight/latest/APIReference/API_CreateIngestion.html ▪課題︓ ・QuickSight
標準機能では、SPICEのデータ⾃動更新間隔が最短1時間 (Enterprise版) 注意事項: ⼿動での SPICE 更新の実⾏回数制限について ・現状⼿動での SPICE 更新の実⾏回数には制限があり、24時間につき 32 回 まで。 ・QuickSight標準機能での⾃動更新は本回数には含まれないため、⾃動更新(最短1時間に1回)と ⼿動更新(CreateIngestion)を組み合わせることで、最⼤24 時間につき 56 回の更新が可能。 2. SPICE のデータ更新間隔への挑戦
14 要件︓ 『権限変更の運⽤作業を、カスタマイズせずに運⽤⼯数を落とすこと』 ここの話 2.⼤⼈数へのダッシュボード⼀括共有⽅法
15 ▪背景︓ • QucikSightは、ダッシュボードを共有する際に、どのユーザに公開するか範囲指定が必要 • 今回の案件では、将来的にユーザ数が300⼈以上になること、ダッシュボード数が 増加する計画があった ▪課題︓ • ダッシュボード追加、組織異動等(ユーザの権限変更)時の運⽤として、
都度コンソール画⾯でユーザ単位でダッシュボード公開範囲を変更するのは 運⽤負荷も⾼く、管理も煩雑になる可能性がある 2.⼤⼈数へのダッシュボード⼀括共有⽅法
16 ▪解決⽅法︓ • 実はQuickSightのユーザに対し、グループ設定が可能 ※ QuickSightのGUIコンソールではグループ作成画⾯は存在しない • ユーザをグループに所属させ、グループに対しダッシュボードを共有することによって、 そのユーザーグループに含まれる全てのユーザに共有可能 •
グループ⾃体の管理は、現時点ではAWS CLI(API) を使う必要があり 分類 アクション QuickSightコンソール AWS CLI ユーザ ユーザの作成、削除 ◦ ◦ ユーザ指定でダッシュボード共有 ◦ ◦ グループ グループの作成、削除 × ◦ ユーザーをグループへ追加、削除 × ◦ グループ指定でダッシュボード共有 ◦ ◦ ユーザA ユーザB ユーザC ダッシュボード1 ダッシュボード2 Group1 Group2 × 2.⼤⼈数へのダッシュボード⼀括共有⽅法
17 要件︓ 『表⽰しているQuickSight データが、いつ最新化したのかをユーザ が確認できること』 ここの話 2.ダッシュボードのデータ更新⽇時をユーザに⾒せたい
18 ▪背景︓ • SPICEを利⽤する場合、データは定期的に最新化する必要あり • ⼀般ユーザ(閲覧者権限を前提)はQuickSight ダッシュボード上でデータの 最新⽇時がわからないと業務に影響を及ぼす可能性がある ▪課題︓ •
⼀般ユーザから⾒ると、QuickSight上のデータはいつ取り込まれたデータであるかを、 明⽰的には確認できない(特に問題が発⽣し、データ鮮度が落ちた場合の懸念) ※ちなみに、作成者以上の権限である場合は、データセットへの権限を付与すれば ダッシュボード右上の「データ」にて最終更新⽇時を確認可能 2.ダッシュボードのデータ更新⽇時をユーザに⾒せたい
19 ▪解決⽅法︓ • SPICEのデータ⼿動更新処理のプログラム内で、更新⽇時をS3上にファイルとして出⼒ • ダッシュボード上でユーザが視認可能な箇所に、対象S3ファイルの中⾝を表⽰ z QuickSight S3 (分析データ⽤)
Athena SQLクエリ 分析データ 更新 API実⾏ Lambda 更新 ⽇時 分析 データ群 ⽣成 QucikSight ダッシュボード 取得した更新⽇時 を表⽰ 2.ダッシュボードのデータ更新⽇時をユーザに⾒せたい
20 要件︓ 『ピボットのフィールド数上限に負けずに、お客様の要望する ダッシュボードを表現すること︕』 ここの話 2.ピボットのフィールド20制限内での表現
21 ▪背景︓ • ピボットテーブルのフィールドには、QuickSightの仕様上、⾏/列ともに上限20の 制約がある。 ▪課題︓ • お客様が現⾏で確認されているBIをそのまま移⾏すると、⾏が21フィールド以上 となり再現できない。 2.ピボットのフィールド20制限内での表現
22 ▪解決⽅法︓ • 上限緩和はできないので、データ表⽰の⽅法を変えて対応するしかない 具体的には・・・ • ⽤途など状況を上、⼀部データをAthena側のSQLで結合してフィールド数を節約 例えば、住所3 + 住所2
+ 住所1 = 住所として結合 • 集計が必要ないデータなどは、ピボッドテーブルではなく、テーブル(⾏/列の制限なし)を 代替実装することで対応する 2.ピボットのフィールド20制限内での表現
23 3.ここができるともっと良くなる、 QuickSight︕
24 ◆機能上の制約︓ • 現時点では合計値は、ピボットテーブルでは最下部に表⽰される。 • 最上部、最下部を任意に選択できると使い勝⼿がよくなって嬉しい。 3. 「合計値をピボットテーブルの最上部に表⽰したい」 最下部までスクロールしないと 合計が確認できない。
データ量が多い場合つらい
25 ◆機能上の制約︓ • QuickSight コンソールへのアクセス元 IP アドレスからアクセスを制限は不可。 ※もし実現する場合の現状の代替︓ ①QuickSight 操作⽤のIAM
ロールを⽤意し、ロール切り替えに IP 制限 ユーザをIAMユーザとして払い出し、マネジメントコンソール経由でIAM ロール切り替えにてアクセス ②SSOの仕組みを作り、IdP 側で制御 外部 IdP による SAML 2.0 を利⽤した SSO を構築し、IdP 側で IP 制限を⾏う 3. 「アクセス元のIP制限をしたい︕」
26 ◆機能上の制約︓ • 現時点において CloudWatch メトリクス、アラームなどを⽤いて、 SPICEの空きサイズ閾値を超えた際にアラートを出せない。 • SPICE 容量を取得するために利⽤可能なAPI
、メトリクスがないため。 ※ SPICEは⾃動拡張ではなく、容量を購⼊型のため、運⽤としてSPICE空き容量の注視が必要 3. 「SPICEの容量監視をするインターフェースがほしい︕」
27 ◆機能上の制約︓ • 検索画⾯にて、“ダッシュボード”、”分析”、”データセット”を指定し、絞り込み検索ができない。 ( 横断的に検索されるため、数が多くなった場合、結果が⾒づらい場合がある) ※ 代替として、検索結果のURLを強引にentityTypeを指定し絞ることは可能。 例︓デフォルト︓ https://us-east-1.quicksight.aws.amazon.com/sn/search?keyword=XXX&entityType=ALL
変更後︓ entityType=DASHBOARD entityType=ANALYSIS entityType=DATASET 3. 「検索のGUIインターフェースに機能追加してほしい︕」
28 本編はここまで
JAWS DAYS 2021 re:Connect 2021年3⽉20⽇(⼟) 10:00〜18:00 オンラインにて開催 #jawsdays2021 #jawsug https://jawsdays2021.jaws-ug.jp/
JAWS DAYS 2021 - re:Connect - とは ・AWSユーザのエキスパートからノウハウがつまったセッション ・エンタープライズ企業からスタートアップまでのAWSユーザ事例 ・初⼼者向けセッションとハンズオン
・みんなで楽しめる参加型コンテンツ と、盛りだくさんのオンラインコミュニティイベントです。 普通の勉強会では聞けない、ここだけの話も聞けるかも︕︖
イベント開催前も楽しんじゃおう︕ JAWS DAYS 2021 - re:Connect - オリジナルグッズがもらえる 応援キャンペーン開催中︕(詳しくは jawsdays
note で検索)
申し込んだら絶対参加︕とは⾔いません。 「とりあえず申し込んでみようかな」 という軽い気持ちで⼤丈夫です。 みなさん、オンライン会場でお会いしましょう︕
JAWS DAYS 2021 re:Connect 2021年3⽉20⽇(⼟) 10:00〜18:00 オンラインにて開催 #jawsdays2021 #jawsug https://jawsdays2021.jaws-ug.jp/