LIFULL HOME'Sにおけるサイトの高速化と今後の対応

307 Views

April 20, 17

スライド概要

・4/12(水)
・Forkwell Jobs主催イベント@LIFULL社
・LIFULL HOME'Sにおけるサイトの高速化と今後の対応

profile-image

LIFULL HOME'Sを運営する株式会社LIFULLのアカウントです。 LIFULLが主催するエンジニア向けイベント「Ltech」等で公開されたスライド等をこちらで共有しております。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

LIFULL HOME’Sにおけるサイト の高速化と今後の対応 2017/4/12 磯野 圭輔

2.

About me • Keisuke Isono – LIFULL HOME'S事業本部 技術開発部 基盤開発ユニット プラットフォームグループ • Web Engineer • Recent Interests – golang, nodejs – serverless architectures – AWS, GCP 2 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

3.

Our Mission 技術力と思考をもっ て挑戦し 技術基盤を革進さ せる 3 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

4.

Recent work • AWSへの移行 – キャッシュサーバーのElastiCache化 – 旧検索エンジンの廃止 • データフローの刷新 – 設計中 4 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

5.

Contents 1. 高速化施策の紹介 2. 高速化に関わる計測 3. 今後について 5 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

6.

高速化施策の紹介 6 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

7.

高速化施策の紹介 1. 体感速度の向上 2. レスポンス速度の向上 3. 反映速度の向上 7 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

8.

体感速度の向上 8 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

9.

ユーザーの体感速度向上:先読み 9 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

10.

ユーザーの体感速度向上:リクエストの分割(分割前) 10 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

11.

ユーザーの体感速度向上:リクエストの分割(分割後) 11 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

12.

レスポンス速度の向上 12 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

13.

レスポンス速度の向上 • キャッシング – 設定ファイルのパースを削減 • 通信データ圧縮 – APIとの通信もgzip圧縮 – APIの返却するフィールドを絞る • 検索クエリによる検索エンジンの分散 – 遅いクエリを専用のサーバーに振り分ける 13 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

14.

反映速度の向上 14 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

15.

サイトへの反映速度の向上 入稿 データ 検索 エンジン DB Web サイト 画像データ • 処理の非同期化 – 画像アップロードの非同期化 • AWSへの移行 – ディスク性能の向上による処理速度向上 – 共有データをNFSからS3へ移行することでの読み込み速度向上 15 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

16.

高速化に関わる計測 16 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

17.

高速化に関わる計測 1. ページ単位の計測 2. 分散トレーシング 3. その他 17 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

18.

ページ単位の計測 18 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

19.

レスポンスタイムやリクエスト数の計測 19 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

20.

レスポンスタイムやリクエスト数の計測 • ユーザーのアクセスごとに処理時間 やリクエスト内容を記録 • そのデータを解析してグラフ化 20 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

21.

レスポンスタイムやリクエスト数の計測 ! 21 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

22.

レスポンスタイムやリクエスト数の計測 • 気づければ直せる • ただし、これだけだと、何が原因かは よくわからない 22 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

23.

分散トレーシング zipkin 23 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

24.

zipkinについて 200ms 120ms Web サイト 40ms API 10ms API 60ms 45ms API 60ms DB DB 30ms API DB • 各サーバーのアクセスログを見ればそれぞれのレ スポンスタイムは分かる • それぞれを紐付けて見ようとすると辛い 24 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

25.

zipkinについて 200ms 120ms Web サイト 40ms API 10ms API 60ms 45ms API 60ms zipkin DB DB 30ms API DB • 一連のリクエストにユニークなIDを付けそれをまと めて記録する • 確認する際はブラウザで参照可能 25 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

26.

zipkinについて 26 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

27.

zipkinでの計測 27 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

28.

zipkinでの計測 • 謎の処理時間 • DBアクセスやキャッシュアクセスの計測はしていな いので、その部分の可能性あり 28 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

29.

zipkinでの計測 29 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

30.

zipkinでの計測 ! 30 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

31.

zipkinでの計測 ! 31 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

32.

zipkinでの計測 ! • APIが30msで返却しても20回呼べば600ms • 2回目以降はキャッシュされているので気付きづら かった 32 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

33.

その他 33 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

34.

その他 • 開発環境でのプロファイル – 本番でしか再現できないような場合は、切り離した本番サーバー上 で検証する場合もある • CloudWatchへのカスタムメトリクスの送信 – load avg. , memory utilization, cpu user/sys/idle、disk utilization など標準では取得できないもの – CloudWatchへの送信処理を自作して対応 • 34 collectd pluginに差し替えたい © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

35.

CloudWatchでのグラフ化 • いいグラフが見つからなかったので高速化関係な いグラフ • ある期間の物件数とデータサイズの推移グラフ 35 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

36.

CloudWatchでのグラフ化 • 急に減るような部分は CloudwatchAlarmで 検知可能 36 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

37.

まとめ 37 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。

38.

本日のまとめ • 計測の強化・可視化によりサービスの問題発見・改 善が格段に行いやすくなりました • アプリケーションやインフラの改善もログやトレース データの可視化もまだまだやれることはたくさんあ ります • 一緒にLIFEをFULLにしていきませんか? 38 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。