yossydev Blog

読書メモ: Web配信の技術

publishedAt:
2024/09/23
updatedAt:
目次

Intro

Web配信の技術―HTTPキャッシュ・リバースプロキシ・CDNを活用するという本を読みました。

今関わっているプロダクトの技術スタックや配信過程などの理解を深めるためにもちょうど良い本だと思い、読み始めました。 キャッシュの種類や、CDN/Proxyの使い方、これらは我々エンジニアにとっては当然必要という認識ですが、ビジネスサイドにどう伝えるか。という部分も、以前より理解度が深まった気がします。

とても良い本だったので、フロントエンドインフラみたいなものに興味がある人は読んでみることをお勧めします。以降は筆者の読書メモです。

読書メモ

  • 配信と言っても色々ある

    • Webサイトの配信
    • スマートフォンゲームでのアセット配信
    • 同時配信ライブ
  • 配信とは、サーバーにあるコンテンツをクライアントに届けること

  • 配信最適化のために何ができるか

    • 配信経路の最適化
      • 日本 ↔︎ アメリカのやりとりはかなり遅い
      • サーバーがクライアント側に近づく
        • クライアント↔︎CDN↔︎サーバー
      • 経路上にCDNを挟んでキャッシュしたコンテンツを返せば、サーバーが近づたも同然
    • クライアントとサーバーの最適化
      • CDNが間に挟まっていれば、クライアントから見ればCDNがサーバー、サーバーから見ればCDNがクライアント
  • ブラウザでWebサイトを閲覧する場合はおおまかに3つのキャッシュが存在する

    • クライアント側のキャッシュ
      • ブラウザキャッシュ
      • 今までは「このURLをこの時間までキャッシュする」と言う簡単な制御しかできなかった
      • 今はServiseWorkerを使えば細かい制御も可能
    • 配信経路のキャッシュ
      • CDNのキャッシュ
    • オリジンのキャッシュ
      • Proxyのキャッシュ
      • オリジンはリクエストを受けるために更新されたオブジェクトをレスポンスするため、CDNが別々のオブジェクトをキャッシュする可能性がある
        1. クライアント → CDN(オリジンから返ってきたAのデータをキャッシュした) → オリジン
        2. クライアント → CDN(オリジンから返ってきたBのデータをキャッシュした) → オリジン
  • private/shardキャッシュ

    • privateキャッシュはユーザー情報など
    • ローカルキャッシュでは他の端末からキャッシュデータを扱うことはないが、CDNなどでキャッシュをすると他の端末からでもキャッシュデータを扱えるようになってしまう
  • キャッシュの役割

    • キャッシュでコスト削減
      • 負荷軽減によりWebサービス全体をより少ないインスタンスで動かすことができる
    • キャッシュは吹き飛ぶ
      • 不具合対応やキャッシュサーバーの更新などでデータが吹き飛ぶ可能性がある
      • キャッシュデータがなくなった場合再キャッシュまで負荷が上がるので、最低限その負荷が集中しても耐えられるような状態にはしておく必要がある
  • CDNについて

    • クライアントを適切なエッジサーバーへと振り分けるためにLBが必要となる
    • そこで主に使われるのがGSLB(グローバルサーバーロードバランシング)という機能を持ったLBが使われる
  • エッジコンピューティングは何が嬉しいの?

    • エッジコンピューティングでないと実現できないことというのは難しい
    • CDNに元々なかった機能を開発できる、コードで柔軟に制御できるというところに、エッジコンピューティングの利点がある
      • JWT検証
      • 高度なルーティング
      • 柔軟なリダイレクト
      • 入力データのフィルタリング・バリデーション
      • 高度なロギング

0