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
390
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
読めるかな?ちょっとレアなRubyの記法
kiyohara
0
67
Lightning Talk イベント運営を いいがにやりたい
kiyohara
0
69
首負担皆無!ゼログラビティ プログラミングスタイル
kiyohara
0
390
北陸で Ruby なお仕事に携わるための3つの戦略
kiyohara
1
1.7k
Algolia in CAMPFIRE
kiyohara
0
3.7k
地方エンジニアの日常 - 業務からコミュニティ活動まで
kiyohara
0
320
Web to macOS native app
kiyohara
0
410
金沢アプリ開発塾セミナー資料「テストについて」
kiyohara
1
280
Git インフラ選定事例 - 株式会社クルウィットが GitHub を選んだ理由
kiyohara
0
510
Other Decks in Technology
See All in Technology
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
200
Android Audio: Beyond Winning On It
atsushieno
0
100
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
360
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.2k
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
150
AI開発ツールCreateがAnythingになったよ
tendasato
0
120
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
130
Language Update: Java
skrb
2
290
Obsidian応用活用術
onikun94
1
470
エラーとアクセシビリティ
schktjm
1
1.2k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
ChatGPTとPlantUML/Mermaidによるソフトウェア設計
gowhich501
1
130
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Speed Design
sergeychernyshev
32
1.1k
What's in a price? How to price your products and services
michaelherold
246
12k
Optimizing for Happiness
mojombo
379
70k
The Language of Interfaces
destraynor
161
25k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
BBQ
matthewcrist
89
9.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Statistics for Hackers
jakevdp
799
220k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
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