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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
SODA - FACT BOOK(EN)
sodainc
1
200
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
170
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
180
sbt 2.0: takeoff
eed3si9n
0
180
GraphQL の onError と Nullability のこれから
quramy
0
200
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
400
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.7k
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
530
ChromeでローカルLLM
ryu1013
0
180
Performance Optimization With LLMs
xleitix
0
230
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
310
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.3k
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
940
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
620
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
390
30 Presentation Tips
portentint
PRO
1
450
Designing for humans not robots
tammielis
254
26k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Raft: Consensus for Rubyists
vanstee
143
7.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
660
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
The SEO identity crisis: Don't let AI make you average
varn
0
620
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
490
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!