Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MAUが1年で292%に成長した「aumoのおでかけ比較サイト」における取り組み

gree_tech
October 13, 2023

 MAUが1年で292%に成長した「aumoのおでかけ比較サイト」における取り組み

GREE Tech Conference 2023で発表された資料です。
https://techcon.gree.jp/2023/session/TrackA-2

gree_tech

October 13, 2023
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. 自己紹介 3 • 名前:関谷恒甫 • 所属:アウモ株式会社 • 担当:メディアチームにおける開発全般 • 経歴:

    ◦ 2020年4月:グリーに新卒入社 ◦ 2020年4月:アウモに配属 ◦ 2020年6月:WFSに配属 ◦ 2021年12月:アウモに配属
  2. 問題のコード 44 computed: { targetAreaRegion () { return this.allRegions.find((region) =>

    region.prefectures.some((pref) => pref.areas.some((area) => Number(area.id) === Number(this.targetArea) ) ) ) } } allRegions = [{ id: 1, name: '北海道・東北', prefectures: [{ id: 1, name: '北海道', areas: [{ id: 1, name: '札幌市' }, ...], }, ...] }, ...] ・allRegionsはregion->prefecture->areaという階層構造になっていて、階層構造を上か らiterateしていき、targetArea(例 札幌市)が属するregion(例 北海道・東北地方)を探す。 ・areaは全部で1600個程あるので、targetAreaが配列の後ろの方にある場合は探すのに 時間がかかる。 ・computedプロパティでキャッシュしてるので大丈夫だと思っていたが。。。
  3. なぜやるのか レスポンス速度の悪化によりCoreWebVitalの指標が低下してしまった • CoreWebVitalとは ◦ Googleが定めるWebサイトのUXを測る重要な指標のこと。 ◦ PageSpeed Insightsというサイトで誰でも計測できる •

    CoreWebVitalの主な指標 ◦ Time to First Byte (TTFB): ▪ レスポンスの最初のByteが返るまでの時間 ◦ First Contentful Paint (FCP): ▪ 視覚コンテンツの初期表示時間 ◦ Largest Contentful Paint (LCP): ▪ 最大コンテンツの表示時間 53
  4. NGINXでページキャッシュ導入 66 • mapディレクティブで対象パスを制限 map $host$request_uri $is_target_path { default 0;

    include /etc/nginx/cache_target_path.map; } aumo.jp/prefectures/13/scenes/8 1; aumo.jp/prefectures/27/categories/a12 1; gourmet.aumo.jp/areas/466/categories/a15 1; /etc/nginx/cache_target_path.map
  5. 72 • CoreWebVital指標 ◦ 合格!! リリース後の効果計測 指標
 定義
 キャッシュ前
 目標値


    キャッシュ後
 全体
 不合格
 合格
 合格
 LCP
 メインコンテンツの読み込み速度
 4.3s
 2.5s
 1.7s
 FID
 操作を行ってから応答が発生するま での遅延時間
 489ms
 100ms
 なし
 CLS
 読み込み時のレイアウトのずれ
 0
 0
 0
 TTFB
 サーバー初期応答時間
 2.8s
 0.8s
 0.5s
 FCP
 視覚コンテンツの初期表示時間
 3.7s
 1.8s
 1.3s
 INP
 コンテンツの反応速度
 3,943ms
 200ms
 2,263ms

  6. キャッシュについてのまとめ 74 • 速度改善にも種類がある ◦ バックエンド: DBアクセスのキャッシュ、N+1 ◦ フロントエンド: ページキャッシュ、CDN

    • ページキャッシュを導入すれば、ページがリッチになってもレスポンス速度が速 いまま変化しない より詳細が知りたい方は、テックブログを見てください! https://techblog.aumo.co.jp/articles/2278
  7. 77