Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DIGGLEの分析基盤アーキテクチャ
Search
Masanori OKAZAKI
November 20, 2023
Programming
1.6k
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
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
120
golang-bob.pdf
iwatsukayura
0
100
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
160
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
100
The Rails Doctrine Decade
koic
2
540
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
240
mrbgem 三角測量 開発
ogom
0
220
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
510
contenteditable と日本語入力に向き合う
colorful12
0
180
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
200
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
200
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
390
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
740
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
350
Making the Leap to Tech Lead
cromwellryan
135
10k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
730
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
From π to Pie charts
rasagy
1
390
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!