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
Web API をデバックするときに必要なたったひとつのこと
Search
Tomokazu Kiyohara
May 16, 2015
Technology
1
340
Web API をデバックするときに必要なたったひとつのこと
Web API 開発の観点からみたロギングのコツについて。
kanazawa.rb meetup 33 発表資料。
Tomokazu Kiyohara
May 16, 2015
Tweet
Share
More Decks by Tomokazu Kiyohara
See All by Tomokazu Kiyohara
首負担皆無!ゼログラビティ プログラミングスタイル
kiyohara
0
300
北陸で Ruby なお仕事に携わるための3つの戦略
kiyohara
1
1.5k
Algolia in CAMPFIRE
kiyohara
0
3.4k
地方エンジニアの日常 - 業務からコミュニティ活動まで
kiyohara
0
250
Web to macOS native app
kiyohara
0
330
金沢アプリ開発塾セミナー資料「テストについて」
kiyohara
1
230
Git インフラ選定事例 - 株式会社クルウィットが GitHub を選んだ理由
kiyohara
0
450
ベッドで技術書を快適に読むただひとつの方法
kiyohara
19
23k
JavaScript で OS X を自動操作
kiyohara
1
460
Other Decks in Technology
See All in Technology
ついに出た!OpenAIの最新モデル「o1」って何がすごいの?
minorun365
PRO
3
1k
可視化により内部品質をあげるAIドキュメントリバース/20240910 Hiromitsu Akiba
shift_evolve
0
220
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
46k
サプライチェーン攻撃に備える
ryunen344
0
280
アプリをリリースできる状態に保ったまま 段階的にリファクタリングするための 戦略と戦術 / Strategies and tactics for incremental refactoring
yanzm
6
1.4k
Developer Experienceを向上させる基盤づくりの取り組み事例集
coconala_engineer
0
150
『GRANBLUE FANTASY Relink』キャラクターの魅力を支えるリグ・シミュレーション制作事例
cygames
0
120
ナレッジグラフとLLMの相互利用
koujikozaki
0
420
Discovering AI Models
picardparis
4
3.9k
o1のAPIで実験してみたが 制限きつすぎて辛かった話
pharma_x_tech
0
190
より快適なエラーログ監視を目指して
leveragestech
4
1.4k
Fediverse Discovery Providers overview
andypiper
0
170
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
Speed Design
sergeychernyshev
22
430
Adopting Sorbet at Scale
ufuk
73
8.9k
Agile that works and the tools we love
rasmusluckow
327
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
36
2.1k
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
Design by the Numbers
sachag
277
19k
Building a Modern Day E-commerce SEO Strategy
aleyda
36
6.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
322
23k
How to Think Like a Performance Engineer
csswizardry
16
960
A designer walks into a library…
pauljervisheath
201
24k
Transcript
Web API Λσόοά͢Δͱ͖ʹඞཁͳ ͨͬͨͻͱͭͷ͜ͱ 2015/05/16 - Kanazawa.rb meetup 33
͔͍͜͠ϩΪϯά ͨ͑͜
͔͍͜͠ϩΪϯά ͨ͑͜
Web API ͷಛ • ଟͷߏཁૉ • ϩʔυόϥϯα, ϦόʔεϓϩΫγ, Ξϓέʔγϣϯαʔόʔ, DB
... • ϓϩηε, εϨου … • ଟͷฒྻॲཧ • ෳΫϥΠΞϯτ, ଟॏ API ίʔϧ …
client A client B RP RP App Server App Server
DB DB Process α ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ Process β ɾ ɾ ɾ ɾ ɾ ɾ LB client A ͔Βͷ API ίʔϧ x ͷ ॲཧύεΛಛఆͯ͠ ͦΕͧΕͷ log Λ grep ͯ͠…
ͦΜͳඋͰେৎ͔ʁ
–T.K, 2013 “։ൃڥͦΜͳෳࡶ͡Όͳ͍ɻෳ Terminal ։͍ͯ log Λ tail ͓͚ͯ͠ेɻ”
–T.K, 2014 “։ൃڥෳࡶͩͬͨ”
–T.K, 2015 “ຊͷόάӡ༻ڥʹͦ͜જΉ”
͔͜͠͞ͷछ • ϩΪϯάશൠ • ͍Ζ͍Ζ͋Δɻ͓͓͍ɻ • ͓άάΓ͍ͩ͘͞ɻ • Web API
ʹߜΔͱ • ूͱࣝผ
ूͱࣝผ
ूͱࣝผ
ϩάͷू • ͢Ͱʹ༷ʑͳΞϓϩʔν͕͋Δ • ݹ͘ syslog • ΠϚυΩ fluentd
ूͱࣝผ
ϩάͷࣝผ • API Call Λࣝผ͢Δ • ߏཁૉԣஅͰࣝผ • αʔόϓϩηεΛ·͍ͨͰࣝผͰ͖Δ͜ͱ͕େࣄ •
API Call ຖʹࣝผ • ΫϥΠΞϯτຖͰͳ͘ Call ຖͰ͋Δ͜ͱ͕େࣄ
Ͳ͏ͬͯʁ • ࣝผࢠΛൃߦͯ͠ߏཁૉؒͰൖ • ͩΕ͕ൃߦʁ • Ͳ͏ͬͯൖʁ
ͩΕ͕ൃߦʁ
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ LB APIΫϥΠΞϯτʹ ͬͱ͍ۙߏཁૉ ೖΕ͍͢ͷ͜ͷล
Ͳ͏ͬͯൖʁ
ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ client
A client B RP RP App Server App Server DB DB ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ ᶅ ࣝผࢠ͖ Ͱ logging ᶆ ࣝผࢠ͖ ͰIPC(call) ᶇ ࣝผࢠ͖ Ͱ logging ᶈ ࣝผࢠ͖ ͰIPC(call) ᶉ ࣝผࢠ͖ Ͱ logging ᶊ ࣝผࢠ͖ ͰIPC(call) ᶋ ࣝผࢠ͖ Ͱ logging ᶌ ࣝผࢠ͖ ͰIPC(res) ᶎ ࣝผࢠ͖ ͰIPC(res) ᶍ ࣝผࢠ͖ Ͱ logging ᶏ ࣝผࢠ͖ Ͱ logging ᶐ ࣝผࢠ͖ ͰIPC(res) ᶑ ࣝผࢠ͖ Ͱ logging ᶒ API Response
γϯϓϧͳ
ԡ͑͞Δ͖ϙΠϯτ͕ ͏ͻͱͭ
Ͳ͏ͬͯʁ • ࣝผࢠΛൃߦͯ͠ߏཁૉؒͰൖ • ͩΕ͕ൃߦʁ • Ͳ͏ͬͯൖʁ
Ͳ͏ͬͯʁ • ࣝผࢠΛൃߦͯ͠ߏཁૉؒͰൖ • ͩΕ͕ൃߦʁ • Ͳ͏ͬͯൃߦʁ • Ͳ͏ͬͯൖʁ New!
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ
ϩάͷࣝผ • API Call Λࣝผ͢Δ • ߏཁૉԣஅͰࣝผ • αʔόϓϩηεΛ·͍ͨͰࣝผͰ͖Δ͜ͱ͕େࣄ •
API Call ຖʹࣝผ • ΫϥΠΞϯτຖͰͳ͘ Call ຖͰ͋Δ͜ͱ͕େࣄ
ϩάͷࣝผ • API Call Λࣝผ͢Δ • ߏཁૉԣஅͰࣝผ • αʔόϓϩηεΛ·͍ͨͰࣝผͰ͖Δ͜ͱ͕େࣄ •
API Call ຖʹࣝผ • ΫϥΠΞϯτຖͰͳ͘ Call ຖͰ͋Δ͜ͱ͕େࣄ Ұҙੑ (Uniqueness)
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ࣝผࢠൃߦ αʔόʔ × The ϘτϧωοΫ
ࢄܕϢχʔΫIDੜ
ࢄܕ࠾൪ख๏ • ࢄͨ͠࠾൪ڥͦΕͧΕͰཱࣗతʹ࠾൪Մೳ Ͱ͋Δ͜ͱ • ࠾൪݁Ռ͕ઈରʹিಥ͠ͳ͍͜ͱ
ࢄܕ࠾൪ख๏ • ࢄͨ͠࠾൪ڥͦΕͧΕͰཱࣗతʹ࠾൪Մೳ Ͱ͋Δ͜ͱ • ࠾൪݁Ռ͕ઈରʹিಥ͠ͳ͍͜ͱ
ࢄܕ࠾൪ख๏ • ࢄͨ͠࠾൪ڥͦΕͧΕͰཱࣗతʹ࠾൪Մೳ Ͱ͋Δ͜ͱ • ࠾൪݁Ռͷিಥ͕֬ӡ༻͞ΕΔγεςϜʹ͓͍ͯ ेʹ֬Ͱ͋Δ͜ͱ
ࢄܕ࠾൪ख๏ • େ͖ͳܻͷϥϯμϜจࣈྻ • UUID
ࢄܕ࠾൪ख๏ • ԋࢉίετ • Snowflake • Twitter ͷ Tweet ID
ੜख๏ • িಥ্͕֬Δ • Twitter ʹͱͬͯे֬
·ͱΊ • Web API ʹ͓͚Δ͔͍͜͠ϩΪϯά • ऩूͱࣝผΛ࣮ݱ͢Δ • ࣝผࢠʹࢄܕϢχʔΫIDੜख๏Λ͍ͪΔ
Thank you Tomokazu Kiyohara http://github.com/kiyohara http://facebook.com/tomokazu.kiyohara