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.6k
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
13
3.1k
アジャイルテストの4象限で考える プロダクト開発の品質への向き合い方
nagano
1
2.3k
パッケージ管理ツール Ryeへの旅路
nagano
1
590
PHPerにとってのWebAssemblyの可能性
nagano
1
1.5k
PHPをブラウザで動かす技術
nagano
0
2.6k
PHPとWebAssembly
nagano
19
6k
アジャイルで始める データ分析基盤構築
nagano
1
3.5k
Goで始めるTDD
nagano
1
2.9k
Python製の姓名分割 ライブラリをGoに移植した話
nagano
0
1.6k
Other Decks in Programming
See All in Programming
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
3.1k
株式会社 Sun terras カンパニーデック
sunterras
0
220
Чего вы не знали о строках в Python – Василий Рябов, PythoNN
sobolevn
0
160
ABEMAモバイルアプリが Kotlin Multiplatformと歩んだ5年 ─ 導入と運用、成功と課題 / iOSDC 2025
akkyie
0
320
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
950
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
230
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
180
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
dynamic!
moro
9
6.5k
CSC509 Lecture 03
javiergs
PRO
0
330
開発生産性を上げるための生成AI活用術
starfish719
1
170
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
45
7.7k
A Modern Web Designer's Workflow
chriscoyier
697
190k
KATA
mclloyd
32
15k
4 Signs Your Business is Dying
shpigford
185
22k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
580
Site-Speed That Sticks
csswizardry
11
880
GraphQLとの向き合い方2022年版
quramy
49
14k
RailsConf 2023
tenderlove
30
1.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
The Language of Interfaces
destraynor
162
25k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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カレンダーやってます。