Slide 1

Slide 1 text

Daijiro Wachi - @watilde Node学園 35時限⽬ 2020/02/25 Web VitalsとJavaScriptエラーの可視化 フロントエンドにおけるObservabilityとは

Slide 2

Slide 2 text

Daijiro Wachi Social media ■ Twitter: @watilde ■ Blog: https://blog.watilde.com Recent activities ■ OSS: Node.jsのWPTのメンテナンス ■ お仕事: AWSでAmplifyの改善 – https://docs.amplify.aws/ 発表内容は個⼈の⾒解であって、所属組織を代表するものではありません

Slide 3

Slide 3 text

開発・分析・ マーケティング ホスティング・ モニタリング ユーザー管理・ データ管理 Libraries CLI Admin UI Admin UI CLI Console 関連サービスと連携 • 認証 • DB • ファイル • API • 分析 • 予測 • Bot • プッシュ通知 • など ホスティング • CI/CDビルドイン • GitHub連携 • PRレビュー • 閲覧パスワード設定 • など モニタリング • 4xx/5xxエラー • TTFB • など New ユーザー管理 • ユーザー権限管理 • グループ設定 • など コンテンツ管理 • CMS的にコンテンツ管理 • DB管理 • など

Slide 4

Slide 4 text

複雑化するフロントエンドが意図通りに動いているか 把握をするのに2つの監視ポイントを押さえる話 Start Request Response Rendering Works リソースは 意図通りに 読み込まれているか JavaScriptは 意図通りに 動作しているか 1 2

Slide 5

Slide 5 text

Observability(可観測性)の説明例 「システムが提供するデータからシステムの内部状態を理 解すること。データを調べ、何が起こったのか、なぜ起 こったのか、の質問に答えられる状態」 “(re)refine observability” by John Porcaro https://www.humio.com/whats-new/blog/observability-redefined

Slide 6

Slide 6 text

Observability(可観測性)の説明例 フロントエンドにおける意味合い 「システムが提供するデータからシステムの内部状態を理 解すること。データを調べ、何が起こったのか、なぜ起 こったのか、の質問に答えられる状態」 “(re)refine observability” by John Porcaro https://www.humio.com/whats-new/blog/observability-redefined 「複雑化するフロントエンドで可観測性を獲得すると、 データに基づいて何を改善すべきかを推測でき、より良い UXを短時間で提供できる」

Slide 7

Slide 7 text

計測すべきmetrics例 Source: Syslog severity level — Wikipedia

Slide 8

Slide 8 text

分類 ユーザー視点で何が起きているか フロントエンドに関連する具 体的な例 Error ウェブサイトが正しく動作していない JavaScriptエラー 4xx, 5xx エラー Warning ウェブサイトの動作が遅い Web Vitals TTFB Info N/A デバッグ情報 計測すべきmetrics例 フロントエンドの場合

Slide 9

Slide 9 text

JavaScriptエラーのlogging イベント名 イベントが発行されるタイミング GlobalEventHandlers.onerror • リソースの読み込みが失敗 • 実⾏時にエラーが発⽣ WindowEventHandlers.onunhandledrejection • catchしていないPromiseでエラーが発 ⽣ WindowEventHandlers.onrejectionhandled • rejectされたPromiseにハンドラーが初 めて追加 WindowEventHandlers.onmessageerror • デシリアライズできないメッセージを BroadcastChannelが受信 Source: Window - Web API | MDN, ECMUnhandled promise rejections, ECMAScript 2020/HostPromiseRejectionTracker, WHATWG/HTML/

Slide 10

Slide 10 text

JavaScriptエラーとWebVitalsの Amplifyを活用したTracing例 データ 整形 データ 送信 データ 管理 データ 分析

Slide 11

Slide 11 text

JavaScriptエラーの整形 データ 整形

Slide 12

Slide 12 text

整形したJavaScriptエラーに寄せて WebVitalsのデータ構造 データ 整形

Slide 13

Slide 13 text

Amplifyの Analytics(Kinesis Data Streams)に送信 データ 送信

Slide 14

Slide 14 text

送信されたデータをS3に保存し クエリーで取り出せるようにする データ 管理

Slide 15

Slide 15 text

QuicksightでURL, デバイス, Dateごとの JavaScriptエラー, WebVitalsを可視化 データ 分析

Slide 16

Slide 16 text

分類 ユーザー視点で何が起きているか フロントエンドに関連する具 体的な例 Error ウェブサイトが正しく動作していない JavaScriptエラー 4XX, 5XX エラー Warning ウェブサイトの動作が遅い Web Vitals TTFB Info N/A デバッグ情報 計測すべきmetrics例 フロントエンドの場合

Slide 17

Slide 17 text

Amplifyに4XX/5XXエラーやTTFBを、ほぼリアルタ イムでモニタリングする機能が追加されました Source: https://aws.amazon.com/jp/about-aws/whats-new/2021/02/aws-amplify-hosting-adds-monitoring-capabilities-with-amazon-cloudwatch-integration/

Slide 18

Slide 18 text

4xx errors HTTPステータス400-499が発⽣した数 5xx errors HTTPステータス500-599が発⽣した数 TTFB Time to first byteの平均秒数

Slide 19

Slide 19 text

ユーザーはサービスのUX改善を 加速させるcontributor ■ OSSの世界では「⼗分な⽬ん⽟があれば、全てのバグは洗い出される」という ⾔葉があり、著名なOSSがなぜ⾼い品質を保つことが出来ているかの説明にた まに引⽤されている(参考: リーナスの法則 - wikipedia) ■ コードを監査する⼈の数に⽐例して、潰されていくバグの数は増える ■ フロントエンドにおいても同様。 Observabilityを実現することにより、より多 くのユーザーと⼀体となってプロダクション環境の課題発⾒を⾏うことが可能 となる 本発表の関連記事: https://bit.ly/3bAKoxE

Slide 20

Slide 20 text

AWS/Amplifyに興味のある フロントエンドエンジニアのコミュニティ https://aws-amplify-jp.connpass.com/ 定期的にオンラインmeetupを行っているので、ぜひご参加ください!

Slide 21

Slide 21 text

Appendix

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Acknowledgments Takayuki Shimizu for review - https://twitter.com/shimy_net Koya Kimura for feedback - https://twitter.com/kimyan_udon2/ Daisuke Nagayama for feedback - https://twitter.com/jagaimogmog