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
BASEの資金調達サービスを New Relicで楽に パフォーマンス改善できた話
Search
glassmonenkey
December 15, 2021
Programming
0
1.7k
BASEの資金調達サービスを New Relicで楽に パフォーマンス改善できた話
NRUG (New Relic User Group) vol1でLTをしました。
https://nrug.connpass.com/event/230940/
glassmonenkey
December 15, 2021
Tweet
Share
More Decks by glassmonenkey
See All by glassmonenkey
encoding/json/v2で何が変わるか
nagano
14
4.1k
アジャイルテストの4象限で考える プロダクト開発の品質への向き合い方
nagano
1
2.4k
パッケージ管理ツール Ryeへの旅路
nagano
1
610
PHPerにとってのWebAssemblyの可能性
nagano
1
1.5k
PHPをブラウザで動かす技術
nagano
0
2.7k
PHPとWebAssembly
nagano
19
6.2k
アジャイルで始める データ分析基盤構築
nagano
1
3.6k
Goで始めるTDD
nagano
1
3k
Python製の姓名分割 ライブラリをGoに移植した話
nagano
0
1.7k
Other Decks in Programming
See All in Programming
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
190
Graviton と Nitro と私
maroon1st
0
160
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
150
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
470
CSC307 Lecture 01
javiergs
PRO
0
660
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
240
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
610
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
590
GitHub's CSS Performance
jonrohan
1032
470k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
190
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
590
Become a Pro
speakerdeck
PRO
31
5.8k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
76
For a Future-Friendly Web
brad_frost
180
10k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
250
Heart Work Chapter 1 - Part 1
lfama
PRO
4
35k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The browser strikes back
jonoalderson
0
300
Transcript
© 2012-2021 BASE, Inc. 1 BASE株式会社 永野峻輔 (@glassmonekey) BASEの資金調達サービスを New
Relicで楽に パフォーマンス改善できた話
© 2012-2021 BASE, Inc. 2 @glassmonekey #NRUG BASEは160万ショップ
© 2012-2021 BASE, Inc. 3 @glassmonekey #NRUG 資金調達サービス
© 2012-2021 BASE, Inc. 4 © 2012-2021 BASE, Inc. 4
資金調達APIの パフォーマンス改善できた話
© 2012-2021 BASE, Inc. 5 @glassmonekey #NRUG 自己紹介 所属 BASE
BANK株式会社 Software Developer Go, PHP, Pythonあたりをよく書いています 趣味 Flutterアプリ開発 hasura.ioやsupabaseがマイブーム SNS Twitter: @glassmonekey Github: https://github.com/glassmonkey 永野 峻輔 (ながの しゅんすけ) 今年のアドベントカレンダー
© 2012-2021 BASE, Inc. 6 @glassmonekey #NRUG 今日話すこと 実はこれを実現するために一番苦労した話です https://devblog.thebase.in/entry/looker-debut
© 2012-2021 BASE, Inc. 7 @glassmonekey #NRUG YELL BANKの構成図 (一部簡略化)
提供金額 算出 API BASE加盟店さま BASE BANKチームで管理 機械学習 API 資金提供API
© 2012-2021 BASE, Inc. 8 @glassmonekey #NRUG ショップカルテとは? ショップごとの情報を 日毎で把握できる
ダッシュボード
© 2012-2021 BASE, Inc. 9 @glassmonekey #NRUG 提供金額の算出結果の情報が DBにない
© 2012-2021 BASE, Inc. 10 1 2 3 @glassmonekey #NRUG
APIは過去のデータを再現できるように Python製のAPIからログデータを作る ログデータをデータ基盤の形式に加工 提供金額記録システム
© 2012-2021 BASE, Inc. 11 @glassmonekey #NRUG 記録システム構成図 提供金額 記録バッチ
機械学習 API 記録バケット 提供金額 算出 API
© 2012-2021 BASE, Inc. 12 © 2012-2021 BASE, Inc. 12
APIからログデータをつくる
© 2012-2021 BASE, Inc. 13 @glassmonekey #NRUG 過去全件記録に90日の概算🙀 効率よくデータを記録したい
© 2012-2021 BASE, Inc. 14 @glassmonekey #NRUG 大量のAPIリクエスト
© 2012-2021 BASE, Inc. 15 @glassmonekey #NRUG _人人人人人人_ > 突然の死 <  ̄Y^Y^Y^Y^Y ̄
© 2012-2021 BASE, Inc. 16 @glassmonekey #NRUG 突然の死 提供金額 記録バッチ
機械学習API 提供金額 算出 API • CPU/メモリーともに50%ぐらい • 後続のLambdaには余裕があった (1/4の稼働率)
© 2012-2021 BASE, Inc. 17 @glassmonekey #NRUG 仮説 • 処理が並列に捌けてない?
• どこかに処理のボトルネックがある?
© 2012-2021 BASE, Inc. 18 © 2012-2021 BASE, Inc. 18
処理が何らかの要因で並列に捌けてない?
© 2012-2021 BASE, Inc. 19 @glassmonekey #NRUG 根拠 機械学習 システム群
提供金額 算出 API • 後続の稼働率は約25% • 最大でもAPIのコンテナ数と一致
© 2012-2021 BASE, Inc. 20 @glassmonekey #NRUG Gunicornの投入 • Python製APIで並列処理を扱えるためのミドルウェア
• python app.py だけだとリクエストのブロッキングが発生してた https://gunicorn.org/
© 2012-2021 BASE, Inc. 21 @glassmonekey #NRUG スループット向上 約1.5倍で 安定するように
200rpmぐらいが許容だった。 300rpm 超えても安定 before after
© 2012-2021 BASE, Inc. 22 © 2012-2021 BASE, Inc. 22
どこかに処理のボトルネックがある?
© 2012-2021 BASE, Inc. 23 @glassmonekey #NRUG 謎の空白期間が分散トレースに 空白の6秒間
© 2012-2021 BASE, Inc. 24 @glassmonekey #NRUG Pythonの分散トレース • New
Relicのfunction_trace機能を利用 ◦ https://docs.newrelic.com/docs/apm/agents/python-agent/configuration/python-agent-configuration/ • newrelic.iniの設定追加が必要 • 同僚謹製のCLIで雛形を作成 budougumi0617/list_func
© 2012-2021 BASE, Inc. 25 @glassmonekey #NRUG 設定ファイルイメージ [newrelic] transaction_tracer.function_trace
= lib.hoge:functionA lib.fuga:ClassX.methodY 以下が分散トレースに落ちるようになる • lib.hogeパッケージの「functionA」 • lib.fugaパッケージの「ClassXのmethodY」
© 2012-2021 BASE, Inc. 26 @glassmonekey #NRUG ボトルネックの正体 提供金額 記録バッチ
機械学習 システム群 提供金額 算出 API 異常検知モデル 異常検知 モデルのロード
© 2012-2021 BASE, Inc. 27 @glassmonekey #NRUG パフォーマンス向上 約20%改善 異常検知モデルのロードを
初回のみに変更 外部API部分が ボトルネック
© 2012-2021 BASE, Inc. 28 @glassmonekey #NRUG パフォーマンス向上その2 約30%改善 外部依存の呼び出しを減らすように
リファクタ
© 2012-2021 BASE, Inc. 29 @glassmonekey #NRUG インフラコスト削減 NATのコストを ほぼ半分に
© 2012-2021 BASE, Inc. 30 @glassmonekey #NRUG やれたこと • スループット向上
(1.5倍以上耐えられるように) • 処理速度改善 (約50%削減) • インフラコストの削減
© 2012-2021 BASE, Inc. 31 全データ記録の実施期間を 90日想定から7日まで短縮できた。
© 2012-2021 BASE, Inc. 32 @glassmonekey #NRUG 実現できた👏 https://devblog.thebase.in/entry/looker-debut
© 2012-2021 BASE, Inc. 33 @glassmonekey #NRUG やれてないこと(個人的に) • ダッシュボード化(標準のサマリーが便利故)
• NRQL活用 • パフォーマンス監視 • エンドユーザーレベルではまだまだ遅いので改善
© 2012-2021 BASE, Inc. 34 @glassmonekey #NRUG 感想 • 計測が簡単にできるのは楽だった。分散トレース良い。
• 推測するな計測しろ。しかし仮説立ても大事。 • 仕組み化していきたい。
© 2012-2021 BASE, Inc. 35 BASEの資金調達サービスを New Relicで楽に パフォーマンス改善できました。
© 2012-2021 BASE, Inc. 36 @glassmonekey #NRUG 宣伝その1 https://github.com/budougumi0617/nrseg budougumi0617/nrseg
Goで既存のAPIに セグメントを追加してくれる CLIツール
© 2012-2021 BASE, Inc. 37 @glassmonekey #NRUG 宣伝その2 https://devblog.thebase.in Adventカレンダーやってます。