Enviar pesquisa
Carregar
Web API をデバックするときに必要なたったひとつのこと
•
4 gostaram
•
1,441 visualizações
Tomokazu Kiyohara
Seguir
Web API 開発の観点からみたロギングのコツについて。 kanazawa.rb meetup 33 発表資料。
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 38
Baixar agora
Baixar para ler offline
Recomendados
ウェブチップス勉強会 Action cable
ウェブチップス勉強会 Action cable
Yu Ito
CDP2.0 - cloudpack night #7 -
CDP2.0 - cloudpack night #7 -
SORACOM, INC
Rails5 Action Cableの紹介
Rails5 Action Cableの紹介
pro0901
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Thin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikam
Toshiaki Maki
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
Cockatoo
Cockatoo
Hiroaki Kubota
Recomendados
ウェブチップス勉強会 Action cable
ウェブチップス勉強会 Action cable
Yu Ito
CDP2.0 - cloudpack night #7 -
CDP2.0 - cloudpack night #7 -
SORACOM, INC
Rails5 Action Cableの紹介
Rails5 Action Cableの紹介
pro0901
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
Takuto Wada
Thin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikam
Toshiaki Maki
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
Cockatoo
Cockatoo
Hiroaki Kubota
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
Takahiro Tsuchiya
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
Albatross
Albatross
Hiroaki Kubota
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
KLab株式会社
Observability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
Taiki
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島 mongodb
Ryuji Tamagawa
Fluentd meetup #2
Fluentd meetup #2
Tomohiro Ikeda
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Developers Summit
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
hideyuki ikeda
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
真吾 吉田
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
祐司 伊藤
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
Amazon Web Services Japan
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
Node platforms
Node platforms
kumatch kumatch
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
Seiya Mizuno
Common Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろう
blackenedgold
6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents
Kensaku Komatsu
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
Masakazu Muraoka
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
光一 原田
JavaScript で OS X を自動操作
JavaScript で OS X を自動操作
Tomokazu Kiyohara
Google Cloud Platform を支える技術 …のごく一部
Google Cloud Platform を支える技術 …のごく一部
Tomokazu Kiyohara
Mais conteúdo relacionado
Semelhante a Web API をデバックするときに必要なたったひとつのこと
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
Takahiro Tsuchiya
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
Albatross
Albatross
Hiroaki Kubota
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
KLab株式会社
Observability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
Taiki
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島 mongodb
Ryuji Tamagawa
Fluentd meetup #2
Fluentd meetup #2
Tomohiro Ikeda
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
Developers Summit
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
hideyuki ikeda
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
真吾 吉田
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
祐司 伊藤
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
Amazon Web Services Japan
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
Node platforms
Node platforms
kumatch kumatch
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
Seiya Mizuno
Common Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろう
blackenedgold
6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents
Kensaku Komatsu
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
Masakazu Muraoka
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
光一 原田
Semelhante a Web API をデバックするときに必要なたったひとつのこと
(20)
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Albatross
Albatross
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Observability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島 mongodb
Fluentd meetup #2
Fluentd meetup #2
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
サーバーレスの今とこれから
サーバーレスの今とこれから
Node platforms
Node platforms
Fluentd1.2 & Fluent Bit
Fluentd1.2 & Fluent Bit
Common Lisp でビッグデータを作ろう
Common Lisp でビッグデータを作ろう
6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
Mais de Tomokazu Kiyohara
JavaScript で OS X を自動操作
JavaScript で OS X を自動操作
Tomokazu Kiyohara
Google Cloud Platform を支える技術 …のごく一部
Google Cloud Platform を支える技術 …のごく一部
Tomokazu Kiyohara
イベント継続のコツ
イベント継続のコツ
Tomokazu Kiyohara
明日から使えるコーディングツール
明日から使えるコーディングツール
Tomokazu Kiyohara
Atom.io Quick Scripting
Atom.io Quick Scripting
Tomokazu Kiyohara
Text-Objects - vim's elegant function
Text-Objects - vim's elegant function
Tomokazu Kiyohara
LiveStyle for Vim - Quick start
LiveStyle for Vim - Quick start
Tomokazu Kiyohara
こわくないプルリク
こわくないプルリク
Tomokazu Kiyohara
Github's HUB
Github's HUB
Tomokazu Kiyohara
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
Tomokazu Kiyohara
Beginner's Sinatra
Beginner's Sinatra
Tomokazu Kiyohara
Compact Web - Remind "web compression" -
Compact Web - Remind "web compression" -
Tomokazu Kiyohara
Zen coding15min
Zen coding15min
Tomokazu Kiyohara
USTREAMの視聴率を上げよう!
USTREAMの視聴率を上げよう!
Tomokazu Kiyohara
JavaScript Dynamic Loading
JavaScript Dynamic Loading
Tomokazu Kiyohara
Mais de Tomokazu Kiyohara
(15)
JavaScript で OS X を自動操作
JavaScript で OS X を自動操作
Google Cloud Platform を支える技術 …のごく一部
Google Cloud Platform を支える技術 …のごく一部
イベント継続のコツ
イベント継続のコツ
明日から使えるコーディングツール
明日から使えるコーディングツール
Atom.io Quick Scripting
Atom.io Quick Scripting
Text-Objects - vim's elegant function
Text-Objects - vim's elegant function
LiveStyle for Vim - Quick start
LiveStyle for Vim - Quick start
こわくないプルリク
こわくないプルリク
Github's HUB
Github's HUB
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
Beginner's Sinatra
Beginner's Sinatra
Compact Web - Remind "web compression" -
Compact Web - Remind "web compression" -
Zen coding15min
Zen coding15min
USTREAMの視聴率を上げよう!
USTREAMの視聴率を上げよう!
JavaScript Dynamic Loading
JavaScript Dynamic Loading
Último
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
Último
(7)
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Web API をデバックするときに必要なたったひとつのこと
1.
Web API をデバッグするときに必要な たったひとつのこと 2015/05/16
- Kanazawa.rb meetup 33
2.
かしこいロギング こたえ
3.
かしこいロギング こたえ
4.
Web API の特徴 •
多数の構成要素 • ロードバランサ, リバースプロクシ, アプケーションサーバー, DB ... • プロセス, スレッド … • 多数の並列処理 • 複数クライアント, 多重 API コール …
5.
client A client B RP RP App Server App Server DB DB Process α ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Process β ・ ・ ・ ・ ・ ・ LB client A からの API
コール x の 処理パスを特定して それぞれの log を 目 grep して…
6.
そんな装備で大丈夫か?
7.
–T.K, 2013 “開発環境はそんな複雑じゃない。複数 Terminal 開いて
log を tail しておけば十分。”
8.
–T.K, 2014 “開発環境は複雑だった”
9.
–T.K, 2015 “本当のバグは運用環境にこそ潜む”
10.
かしこさの種 • ロギング全般 • いろいろある。おおい。 •
おググりください。 • Web API に絞ると • 集約と識別
11.
集約と識別
12.
集約と識別
13.
ログの集約 • すでに様々なアプローチがある • 古くは
syslog • イマドキは fluentd
14.
集約と識別
15.
ログの識別 • API Call
を識別する • 構成要素横断で識別 • サーバやプロセスをまたいでも識別できることが大事 • API Call 毎に識別 • クライアント毎ではなく Call 毎であることが大事
16.
どうやって? • 識別子を発行して構成要素間で伝搬 • だれが発行? •
どうやって伝搬?
17.
だれが発行?
18.
client A client B RP RP App Server App Server DB DB ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ LB APIクライアントに もっとも近い構成要素 入れやすいのはこの辺
19.
どうやって伝搬?
20.
・ ・ ・ ・ ・ ・ ・ ・ ・ 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
21.
シンプルな話
22.
押さえるべきポイントが もうひとつ
23.
どうやって? • 識別子を発行して構成要素間で伝搬 • だれが発行? •
どうやって伝搬?
24.
どうやって? • 識別子を発行して構成要素間で伝搬 • だれが発行? •
どうやって発行? • どうやって伝搬? New!
25.
client A client B RP RP App Server App Server DB DB ・ ・ ・ LB ① API Call ② 識別子発行 LB ①' API Call
②' 識別子発行 ・ ・ ・ ・ ・ ・ ・ ・ ・
26.
client A client B RP RP App Server App Server DB DB ・ ・ ・ LB ① API Call ② 識別子発行 LB ①' API Call
②' 識別子発行 ・ ・ ・ ・ ・ ・ ・ ・ ・
27.
ログの識別 • API Call
を識別する • 構成要素横断で識別 • サーバやプロセスをまたいでも識別できることが大事 • API Call 毎に識別 • クライアント毎ではなく Call 毎であることが大事
28.
ログの識別 • API Call
を識別する • 構成要素横断で識別 • サーバやプロセスをまたいでも識別できることが大事 • API Call 毎に識別 • クライアント毎ではなく Call 毎であることが大事 一意性 (Uniqueness)
29.
client A client B RP RP App Server App Server DB DB ・ ・ ・ LB ① API Call ② 識別子発行 LB ①' API Call
②' 識別子発行 ・ ・ ・ ・ ・ ・ ・ ・ ・
30.
client A client B RP RP App Server App Server DB DB ・ ・ ・ LB ① API Call ② 識別子発行 LB ①' API Call
②' 識別子発行 ・ ・ ・ ・ ・ ・ ・ ・ ・ 識別子発行 サーバー×The ボトルネック
31.
分散型ユニークID生成問題
32.
分散型採番手法 • 分散した採番環境それぞれで自立的に採番可能 であること • 採番結果が絶対に衝突しないこと
33.
分散型採番手法 • 分散した採番環境それぞれで自立的に採番可能 であること • 採番結果が絶対に衝突しないこと
34.
分散型採番手法 • 分散した採番環境それぞれで自立的に採番可能 であること • 採番結果の衝突確率が運用されるシステムにおいて 十分に低確率であること
35.
分散型採番手法 • 大きな桁数のランダム文字列 • UUID
36.
分散型採番手法 • 演算コスト問題 • Snowflake •
Twitter の Tweet ID 生成手法 • 衝突確率は上がる • Twitter にとっては十分低確率
37.
まとめ • Web API
におけるかしこいロギング • 収集と識別を実現する • 識別子には分散型ユニークID生成手法をもちいる
38.
Thank you Tomokazu Kiyohara http://github.com/kiyohara http://facebook.com/tomokazu.kiyohara
Baixar agora