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
DIGGLEの分析基盤アーキテクチャ
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Masanori OKAZAKI
November 20, 2023
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DIGGLEの分析基盤アーキテクチャ
以下イベントの登壇資料
https://aws-startup-community.connpass.com/event/299342/
Masanori OKAZAKI
November 20, 2023
More Decks by Masanori OKAZAKI
See All by Masanori OKAZAKI
エンジニアだけでスポンサーブースを出したら大変なことになった
zakky21
1
1.8k
Other Decks in Programming
See All in Programming
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
120
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
200
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
490
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
290
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
190
Cloudflare is Agents
chimame
0
190
仕様駆動開発の消費期限
watany
20
9.2k
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
570
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
400
FDEとは、何者なのか?
masapyon1212
0
110
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.8k
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.4k
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
500
Crafting Experiences
bethany
1
270
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
230
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Color Theory Basics | Prateek | Gurzu
gurzu
0
450
Navigating Team Friction
lara
192
16k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing Experiences People Love
moore
143
24k
Transcript
DIGGLEの 分析基盤アーキテクチャ zakky
Agenda 自己紹介 背景 課題 解決策 まとめ
自己紹介 私って誰?
DIGGLEでフルスタックエンジニアとしてイ ンフラに限らず、バックエンド、フロントエン ドなんでも広くやっています。 zakky
背景 DIGGLEについて
DIGGLEについて
DIGGLEについて 経営管理で求められる分析とは? 2023年度 計画 実績 差異 売上高 1,200 1,280 +80
売上原価 400 393 -7 売上総利益 800 887 +87 販売管理費 230 345 +115 営業利益 570 542 -28 勘定科目を 細かくしたい 月単位で 管理したい 任意の分析軸 で見たい 企業が成長すると 管理したい軸が増え、細分化する
課題 DIGGLEに求められること
数字を扱うSaaSであるため、データの整合性を担保 する必要がある 10,000セルを超えるテーブルの描画など、描画時に もパフォーマンスを求められる BigDataという程ではないが、RDBで扱うには難しい データ量を扱う必要がある BIツールのような自由度の高い分析を行う必要があ る 任意軸での分析 データ量
データの整合性 リアルタイム性 高速な描画 データ更新後の合計値や計算式(Excelの計算式の ようなもの)の再集計をオンライン処理の範囲内で行 う必要がある 経営管理の特徴
数字を扱うSaaSであるため、データの整合性を担保 する必要がある 10,000セルを超えるテーブルの描画など、描画時に もパフォーマンスを求められる BigDataという程ではないが、RDBで扱うには難しい データ量を扱う必要がある BIツールのような自由度の高い分析を行う必要があ る 任意軸での分析 データ量
データの整合性 リアルタイム性 高速な描画 データ更新後の合計値や計算式(Excelの計算式の ようなもの)の再集計をオンライン処理の範囲内で行 う必要がある DIGGLEが抱えていた課題 パフォーマンスに課題があり、自由度に対して一定の 制限がある RDBで実装していたがパフォーマンスの問題が発生 した RDBを 使 っているため 問 題 になっていないが、 Redshiftなどへそのままリプレイスすることはできな い 更新箇所に関係なく全体を再計算していたためパ フォーマンス問題が発生した tableタグを使 用しての描 画では10,000セルを超え ると性能劣化が激しく発生する 2017年7月のサービスローンチから 5年以上経過し、色々な課題が見えてきた
解決策 何をしたのか
数字を扱うSaaSであるため、データの整合性を担保 する必要がある 10,000セルを超えるテーブルの描画など、描画時に もパフォーマンスを求められる BigDataという程ではないが、RDBで扱うには難しい データ量を扱う必要がある BIツールのような自由度の高い分析を行う必要があ る 任意軸での分析 データ量
データの整合性 リアルタイム性 高速な描画 データ更新後の合計値や計算式(Excelの計算式の ようなもの)の再集計をオンライン処理の範囲内で行 う必要がある 課題を切り分ける パフォーマンスに課題があり、自由度に対して一定の 制限がある RDBで実装していたがパフォーマンスの問題が発生 した RDBを使っているため現 状 問 題になっていないが、 Redshiftなどへそのままリプレイスすることはできな い 更新箇所に関係なく全体を再計算していたためパ フォーマンス問題が発生した tableタグを使 用しての描 画では10,000セルを超え ると性能劣化が激しく発生する 1 2 2 2 3 1
課題を切り分ける BIツールのような自由度の高い分析を実現し、RDS では扱えない大量データを用いても高速に分析でき る基盤 分析基盤 1 顧客が入力したデータを整合性を保った状態でリア ルタイムに集計・計算する基盤の構築 データ入力基盤 2
大量の表データなどのクライアント負荷が高い画面描 画を高速実現する基盤の構築 描画基盤 3 任意軸での分析 データ量 データの整合性 リアルタイム性 高速な描画
分析基盤 BIツールのような自由度の高い分析の実現と、大容量データを受け 入れ可能な基盤の構築
分析基盤 分析基盤で参照するデータについては、多次元データモデルを採用することで、自由度 の高い分析を実現。 データに対する分析に特化し、キャッシュなども十全に活用することで高速な分析基盤 を実現。 多次元データモデル 自由度の高い分析を行う必要がある業務特性上、分析基盤の自製を決断。機械学習 などで有名なpandasを使用して分析基盤を構築。 pandasを使用して分析基盤を実現することにより、コンパイラ言語と同等の高速な分 析基盤をPythonで実現。
https://diggle.engineer/entry/dataframe_python_rust pandas(Python)
データ入力基盤 顧客が入力したデータを整合性を保った状態でリアルタイムに集計・ 計算する基盤の構築
データ入力基盤 旧来通りRDBを利用し、データ整合性担保などRDBの利点を最大限活用。 リアルタイム性(高速なデータ更新、更新データの取得など)に関してもRDBを採用する ことにより実現。 RDB 計算式の計算を必要最小限の範囲だけ再計算をするように最適化。更新をRDB上で プロシージャとして行うことにより高速な更新を実現。 計算式の高速化
描画基盤 大量の表データなどのクライアント負荷が高い画面描画を高速実現 する基盤の構築
描画基盤 DOM(tableタグ)描画コストが掛かるものについてはcanvasを採用することで10倍以 上の高速化を実現 canvasの利用 画面の再描画を必要最小限の範囲だけに絞ることにより描画コストを最適化 https://diggle.engineer/entry/introduce_jotai 再描画の抑止
まとめ さいごに
システム概要 データ入力基盤 描画基盤 分析基盤 API API データ連携 描画 / データ入力
/ 分析の3つに分離
We are hiring!