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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
460
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
340
iOSDC2026登壇資料.pdf
riofujimon
0
160
A2UI for Android: Safely Rendering AI-Generated UI with Jetpack Compose - DroidKaigi 2026
itsmedreamwalker
0
140
Java 27新機能 / Java 27 new features
kishida
2
140
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
200
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.9k
スマート反転とウェブアクセシビリティ
camiha
0
210
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
190
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
4
2.9k
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
1k
AHC070解法紹介
eijirou
0
120
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Being A Developer After 40
akosma
91
590k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
First, design no harm
axbom
PRO
2
1.3k
WCS-LA-2024
lcolladotor
0
830
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Prompt Engineering for Job Search
mfonobong
0
450
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
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!