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

日経電子版のキャッシュ戦略 / The cache strategy of the Nikke...

Builders Box
February 15, 2021

日経電子版のキャッシュ戦略 / The cache strategy of the Nikkei online edition

■イベント 

【Engineering Team Presentation】各社の事業を支えるアーキテクチャ
https://sansan.connpass.com/event/200589/

■登壇概要
タイトル:日経電子版のキャッシュ戦略
発表者:株式会社日本経済新聞社 デジタル事業デジタル編成ユニット
Tech Lead 梅崎 裕利

▼Builders Box
https://buildersbox-online.com/

Builders Box

February 15, 2021
Tweet

More Decks by Builders Box

Other Decks in Technology

Transcript

  1. About me Yuri Umezaki Engineer at Nikkei Inc. Python, Elasticsearch,

    AWS Elastic Beanstalk 電⼦版のAPI/インフラ基盤の設計や運⽤を中⼼に サービスのセキュリティ強化やデータ分析など幅広く担当 - 最近焦ったこと AWS gp3 volumeが出た直後に試したら 翌⽇600万円の請求アラートが来た (※バグでした) 翌⽇にはAWSにより修正済み. Twitterに情報無いときはRedditを⾒るのが良い 2
  2. 〜2019 * AWS移⾏ * 検索・レコメンド機能強化 * データ分析基盤作成・活⽤ * 内製の活性化 (現在

    GitHubに約930repos) 2020 * 主要サービスはCDN配信に *「NIKKEI Financial」サービス開始 *「AI推薦」リリース *「Think!」スタート、エキスパートが投稿 バックエンドシステムの変遷 5
  3. キャッシュの⽬的 - 速度 - ⾮常に重要 - 利便性⾯ - オフライン機能 -

    コスト削減 - 計算量/帯域 - スケーラビリティ - 安定性⾯ - stale-if-error 11
  4. アプリAPIのキャッシュ - アプリPush通知直後の負荷急増 - アプリ利⽤者の増加 - 突発的に普段の数百倍リクエストが来る - オートスケール →

    ほぼ間に合わない - 事前準備 → ⾼コスト Push直後は⼀部のデータ更新を⽌めて 表⽰に必要なものだけを返却 13
  5. 各レイヤでのキャッシュ - ブラウザキャッシュ(アプリ内キャッシュ) - 再利⽤時の通信量が減らせる.最速 - iOSは独⾃実装、AndroidはOkHttp - CDNキャッシュ -

    配信⽬的のキャッシュとして⾼効率 - Appバックエンドキャッシュ - バックエンドAPIが落ちたときに代替 - 不安定なSaaS利⽤時など 14 Cache Cache Cache Cache
  6. キャッシュ戦略 - キャッシュヒット率をいかに⾼めるか - 低頻度更新コンテンツ→URLにrevisionを含めてimmutable化 - JS, CSSなど. ブラウザキャッシュを使う -

    中頻度更新コンテンツ→SSR+変更イベントで更新 - 記事ページ - 低キャッシュ効率/⾼頻度のもの→CSR - 個⼈別のお知らせ 効率・更新頻度に合わせてエンドポイントを分離 15
  7. 改めて表⽰速度とは - サーバがレスポンスを返すまでの時間 - コンテンツの表⽰が始まる時間 - 画⾯内のコンテンツを表⽰し終わる時間 → 意外と難しい サーバのログ(CDNやALB、Nginxなどのログ)では、正しく計測できない

    - CDNのアクセスログはsend-queueに⼊れたタイミング - アプリログ: socket-queueに溜まっていた時間が⼊らない - 直列ロードなどで待ち時間が増えるケースも → 性能チェックはクライアント側でやるのが望ましい 25