Webサービスのトラブルの現場 ~ Webサービスの今と昔 ~ / web-server-is-dead
by
soudai sone
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Webサービスのトラブルの現場 ~ Webサービスの今と昔 ~ PHP Conference Japan 2019
Slide 2
Slide 2 text
What is it? 鳴り止まないアラート… 天を仰ぐ上司… 黙々と戦うエンジニア
Slide 3
Slide 3 text
● Webサービスが突然落ちた… ● コネクションが溢れてサービス停止… ● サーバのload averageが青天井… What is it? トラブルは突然に
Slide 4
Slide 4 text
What is it? 今も昔も変わらないことは トラブルは大小あれど 必ず起こるという現実です
Slide 5
Slide 5 text
What is it? しかしトラブルシューティングは花形!
Slide 6
Slide 6 text
What is it? 様々な事例を交えながら トラブル対応のコツをお伝えします
Slide 7
Slide 7 text
あじぇんだ 1. 自己紹介 2. Web Server is dead 3. Batchの突き抜け 4. サイトにアクセス出来ませんッッッ! 5. 失敗から学ぶクラウドの正しい歩き方 6. まとめ
Slide 8
Slide 8 text
あじぇんだ 1. 自己紹介 2. Web Server is dead 3. Batchの突き抜け 4. サイトにアクセス出来ませんッッッ! 5. 失敗から学ぶクラウドの正しい歩き方 6. まとめ
Slide 9
Slide 9 text
自己紹介 曽根 壮大(35歳) 株式会社 オミカレ 副社長 CTO そ ね たけ とも ● 日本PostgreSQLユーザ会 勉強会分科会 担当 ● 3人の子供がいます(長女、次女、長男) ● 技術的にはWeb/LL言語/RDBMSが好きです ● コミュニティが好き
Slide 10
Slide 10 text
婚活といえばオミカレ https://party-calendar.net/
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
本書きました
Slide 13
Slide 13 text
あじぇんだ 1. 自己紹介 2. Web Server is dead 3. Batchの突き抜け 4. サイトにアクセス出来ませんッッッ! 5. 失敗から学ぶクラウドの正しい歩き方 6. まとめ
Slide 14
Slide 14 text
Web Server is dead 突然ですがWeb Serverは死ぬ
Slide 15
Slide 15 text
Web Server is dead 突然ですがWeb Serverは死ぬ ↓ 様々な理由で死ぬ
Slide 16
Slide 16 text
Web Server is dead ● アプリケーションのバグ ● ハードウェア障害 ● アクセス過多 ● おや?共有サーバの様子が… Web Serverの主な死因
Slide 17
Slide 17 text
Web Server is dead ● アプリケーションのバグ ● ハードウェア障害 ● アクセス過多 ● おや?共有サーバの様子が… Web Serverの主な死因 死因 第一位 テストしましょう
Slide 18
Slide 18 text
Web Server is dead E2Eテストやユニットテストは大事!
Slide 19
Slide 19 text
Web Server is dead E2Eテストやユニットテストは大事! ↓ PHP Unitを使うのじゃ
Slide 20
Slide 20 text
Web Server is dead ● アプリケーションのバグ ● ハードウェア障害 ● アクセス過多 ● おや?共有サーバの様子が… Web Serverの主な死因 HDD、電源、壊れるところは様々
Slide 21
Slide 21 text
Web Server is dead 冗長化は大事
Slide 22
Slide 22 text
Web Server is dead 冗長化は大事 ↓ Cloud Platformだと簡単に実現出来る
Slide 23
Slide 23 text
Web Server is dead 冗長化は大事 ↓ Cloud Platformだと簡単に実現出来る 1台でもオートスケールを設 定しましょう
Slide 24
Slide 24 text
Web Server is dead ● アプリケーションのバグ ● ハードウェア障害 ● アクセス過多 ● おや?共有サーバの様子が… Web Serverの主な死因 モニタリングしてますか?
Slide 25
Slide 25 text
Web Server is dead Web Serverを観測する
Slide 26
Slide 26 text
Web Server is dead ● OS側の情報 ● Apache or Nginxの情報 ● PHPの実行情報 ● Webサイトの情報 Web Serverのモニタリング
Slide 27
Slide 27 text
Web Server is dead ● OS側の情報 ● Apache or Nginxの情報 ● PHPの実行情報 ● Webサイトの情報 Web Serverのモニタリング top, netstat, vmstat ...etc
Slide 28
Slide 28 text
Web Server is dead ● OS側の情報 ● Apache or Nginxの情報 ● PHPの実行情報 ● Webサイトの情報 Web Serverのモニタリング server-statusで取得
Slide 29
Slide 29 text
Web Server is dead https://qiita.com/advent-calendar/2017/mackerel-plugins
Slide 30
Slide 30 text
Web Server is dead ● OS側の情報 ● Apache or Nginxの情報 ● PHPの実行情報 ● Webサイトの情報 Web Serverのモニタリング プロファイラ、APM ...etc
Slide 31
Slide 31 text
Web Server is dead noborus/trdsql がめちゃめちゃ便利
Slide 32
Slide 32 text
trdsqlの凄さ # cat test.ltsv id:1 name:Orange price:50 id:2 name:Melon price:500 id:3 name:Appleprice:100
Slide 33
Slide 33 text
trdsqlの凄さ # ./trdsql \ "SELECT * FROM test.ltsv WHERE id =1" 1,Orange,50
Slide 34
Slide 34 text
trdsqlの凄さ # ./trdsql \ "SELECT count(*),sum(price) FROM test.ltsv" 3,650
Slide 35
Slide 35 text
trdsqlの凄さ # ps | ./trdsql -ih -oh -id " " "SELECT \`PID\`, \`TTY\`, \`TIME\`, \`CMD\` FROM -" PID,TTY,TIME,CMD 8,tty1,00:00:13,zsh 2689,tty1,00:00:00,ps 2690,tty1,00:00:00,trdsq
Slide 36
Slide 36 text
Web Server is dead 雑にログとして出力して集計出来る CSVなど様々のフォーマットに対応 その中でもLSTVが使いやすい
Slide 37
Slide 37 text
Web Server is dead ● OS側の情報 ● Apache or Nginxの情報 ● PHPの実行情報 ● Webサイトの情報 Web Serverのモニタリング URL監視、エンドポイント監視
Slide 38
Slide 38 text
Web Server is dead [そーだいなるらくがき帳 ○○ 監視] [検索]
Slide 39
Slide 39 text
Web Server is dead ● アプリケーションのバグ ● ハードウェア障害 ● アクセス過多 ● おや?共有サーバの様子が… Web Serverの主な死因 自分以外の影響を受けることもある
Slide 40
Slide 40 text
Web Server is dead 影響範囲を知ることが大事
Slide 41
Slide 41 text
Web Server is dead Web Serverは死ぬ
Slide 42
Slide 42 text
Web Server is dead Web Serverは死ぬ ↓ 死ぬ前提で準備することが大事
Slide 43
Slide 43 text
あじぇんだ 1. 自己紹介 2. Web Server is dead 3. Batchの突き抜け 4. サイトにアクセス出来ませんッッッ! 5. 失敗から学ぶクラウドの正しい歩き方 6. まとめ
Slide 44
Slide 44 text
Batchの突き抜け Batchの突き抜け?
Slide 45
Slide 45 text
Batchの突き抜け
Slide 46
Slide 46 text
Batchの突き抜け 次のBatchが実行されるまでに Batchが終わらない!
Slide 47
Slide 47 text
Batchの突き抜け ● 開店までにBatchが終わらない ● 毎時、毎分のBatchが終わらない ● 終わってほしい時間までに終わらない 類似例
Slide 48
Slide 48 text
Batchの突き抜け Batchの突き抜けはクリティカル!
Slide 49
Slide 49 text
Batchの突き抜け Batchの突き抜けはクリティカル! ↓ Batchの進捗を確認する必要がある
Slide 50
Slide 50 text
Batchの突き抜け 非同期処理は忘れがち
Slide 51
Slide 51 text
Batchの突き抜け 非同期処理は忘れがち ↓ 実行結果を知る songmu/horenso
Slide 52
Slide 52 text
Batchの突き抜け 1. いつ実行されたか 2. 実行時間はどれくらいか 3. 複数のBatchが同時実行されることはあるか ...etc
Slide 53
Slide 53 text
Batchの突き抜け そうだ可視化をしよう!
Slide 54
Slide 54 text
Batchの突き抜け そうだ可視化をしよう! ↓ ariarijp/mackerel-client-php
Slide 55
Slide 55 text
Batchの突き抜け
Slide 56
Slide 56 text
Batchの突き抜け Batchの実行時間を集めることができれば... trdsqlで集計出来る! ※jsonも対応してます
Slide 57
Slide 57 text
あじぇんだ 1. 自己紹介 2. Web Server is dead 3. Batchの突き抜け 4. サイトにアクセス出来ませんッッッ! 5. 失敗から学ぶクラウドの正しい歩き方 6. まとめ
Slide 58
Slide 58 text
サイトにアクセス出来ませんッッッ! まず落ち着け
Slide 59
Slide 59 text
サイトにアクセス出来ませんッッッ! サイトは様々な理由で落ちる
Slide 60
Slide 60 text
サイトにアクセス出来ませんッッッ! クライアント インターネット サーバサイド 通信は常に往来している DNS BGP ISP サーバ ネットワーク アプリケーション
Slide 61
Slide 61 text
サイトにアクセス出来ませんッッッ! どこのレイヤーが駄目なのか知る
Slide 62
Slide 62 text
サイトにアクセス出来ませんッッッ! クライアント インターネット サーバサイド 通信は常に往来している DNS BGP ISP サーバ ネットワーク アプリケーション
Slide 63
Slide 63 text
サイトにアクセス出来ませんッッッ! クライアント インターネット サーバサイド 通信は常に往来している DNS BGP ISP サーバ ネットワーク アプリケーション
Slide 64
Slide 64 text
サイトにアクセス出来ませんッッッ! クライアント インターネット サーバサイド 通信は常に往来している DNS BGP ISP サーバ ネットワーク アプリケーション
Slide 65
Slide 65 text
サイトにアクセス出来ませんッッッ! 問題箇所を的確に知る
Slide 66
Slide 66 text
サイトにアクセス出来ませんッッッ! 問題箇所を的確に知る ↓ 根拠を持って調べる
Slide 67
Slide 67 text
あじぇんだ 1. 自己紹介 2. Web Server is dead 3. Batchの突き抜け 4. サイトにアクセス出来ませんッッッ! 5. 失敗から学ぶクラウドの正しい歩き方 6. まとめ
Slide 68
Slide 68 text
失敗から学ぶクラウドの正しい歩き方 Web Server is dead
Slide 69
Slide 69 text
失敗から学ぶクラウドの正しい歩き方 Cloud is dead
Slide 70
Slide 70 text
失敗から学ぶクラウドの正しい歩き方 Cloud is dead ↓ Cloudでも死ぬ
Slide 71
Slide 71 text
失敗から学ぶクラウドの正しい歩き方
Slide 72
Slide 72 text
失敗から学ぶクラウドの正しい歩き方 稼働率、考えていますか?
Slide 73
Slide 73 text
失敗から学ぶクラウドの正しい歩き方 稼働率、考えていますか?
Slide 74
Slide 74 text
失敗から学ぶクラウドの正しい歩き方 制御できるところ と 制御できないところ
Slide 75
Slide 75 text
失敗から学ぶクラウドの正しい歩き方 データストアが死ぬと対応が難しい
Slide 76
Slide 76 text
失敗から学ぶクラウドの正しい歩き方 データストアが死ぬと対応が難しい ↓ 画像、DB、CDN … etc
Slide 77
Slide 77 text
失敗から学ぶクラウドの正しい歩き方 自分たちの急所を知る
Slide 78
Slide 78 text
失敗から学ぶクラウドの正しい歩き方 トレードオフを理解した上で 自分たちに必要な技術を選ぶ
Slide 79
Slide 79 text
あじぇんだ 1. 自己紹介 2. Web Server is dead 3. Batchの突き抜け 4. サイトにアクセス出来ませんッッッ! 5. 失敗から学ぶクラウドの正しい歩き方 6. まとめ
Slide 80
Slide 80 text
まとめ Webサービスは様々な力で動いている
Slide 81
Slide 81 text
まとめ 便利になる
Slide 82
Slide 82 text
まとめ 便利になる ↓ 抽象化された
Slide 83
Slide 83 text
まとめ しかし漏れのある抽象化の場合 トラブル時に仕組みを知っている必要がある
Slide 84
Slide 84 text
まとめ PHPでも... フレームワーク... PHPの言語仕様...
Slide 85
Slide 85 text
まとめ 現場のトラブルを解決するのは誰?
Slide 86
Slide 86 text
まとめ 現場のトラブルを解決するのは誰? ↓ 自分自身
Slide 87
Slide 87 text
まとめ 技術で課題を解決する
Slide 88
Slide 88 text
まとめ ご清聴ありがとうございました