『Web配信の技術』
https://gyazo.com/3643209f79585562d87e18af5d90be79
田中祥平著
https://blog.xcir.net/?p=2780
https://voluntas.medium.com/web配信の技術という本をレビューしました-a95b3dda8aa1
紙の本で456p、kindleで777pぐらいある
正誤表など
https://gihyo.jp/book/2021/978-4-297-11925-6/support
/mrsekut-book-4297119250
CDNやcacheに関するの本
HTTPを介した配信とその最適化について解説する入門書
積み上げてる感じなので、前から順に読み進めるのが良さそうmrsekut.icon
1~3章まで読めばいったん基礎がわかる
4章以降でCDNとかについて見ていく
技術の紹介時に、対応するRFCがちゃんと記載されている
わかりづらいRFCを、できるだけわかりやすく解説している感じがあって良い
読もうと思った動機
キャッシュやCDNについてよく知らないので、まとまった情報を得たかった
第1章 はじめに
/mrsekut-book-4297119250/17 (第1章 はじめに)
キャッシュを上手く使うことで、serverへのreq数を減らせる(serverの負荷低下に繋がる)
第2章 配信の基礎
/mrsekut-book-4297119250/29 (第2章 配信の基礎)
なにこれ?
HTTP Live Streaming (HLS)/MPEG-DASHやRange Header
動画関連の何かかmrsekut.icon
配信の経路
2.4 配信をより高速なものにするために
/mrsekut-book-4297119250/063
物理的に経路を短くする
CDNを使えばいい
コンテンツのサイズを小さくする
コンテンツをキャッシュする
第3章 HTTPヘッダ・設定とコンテンツの見直し
/mrsekut-book-4297119250/095 (第3章 HTTPへッダ·設定とコンテンツの見直し)
Cache-Control Header
条件付きGET Request
/mrsekut-book-4297119250/209から
3.13 ヘッダクレンジング
/mrsekut-book-4297119250/291もついでに
3.13.1 ゲートウェイとオリジンサーバーを把握する
3.13.2 どのようにコントロールするのか
3.14 コンテンツのサイズ削減
3.14.1 テキストが圧縮転送されていない
Column どこで圧縮するべきか
3.14.2 ストレージサービスの圧縮漏れ
Column 圧縮は万能ではない
3.15 適切なメディアの選択によるコンテンツの改善
3.15.1 配信システムとファイルサイズ
3.15.2 画像サイズが必要以上に大きくないか(サムネイル)
3.15.3 bppを考える
3.15.4 画像フォーマットは適切か
Column WebPと画像サイズ削減
Column JPEG画像の注意点
Column 外部サービスという選択肢
3.16 問題点を調査する
3.16.1 圧縮転送が有効になっていない
3.16.2 ETag/Last-Modifiedがおかしい
3.16.3 画像コンテンツが大きい
3.16.4 キャッシュが有効に使われていない
第4章 キャッシュによる負荷対策
/mrsekut-book-4297119250/254 (第4章 キャッシュによる負荷対策)
ProxyやOriginなどの、gateway cacheについての解説
ProxyにはVarnishを採用して話が進む
流し読みしてる感じもあるので再読したほうがいいかもmrsekut.icon
良さそうなタイミング
Varnishの設定をしたい
負荷試験をしておきたい
リクエストの増加対策をしたい
これは、
/mrsekut-book-4297119250/254 (第4章 キャッシュによる負荷対策)
~/mrsekut-book-4297119250/288
のことを指している
流し読みしてる感じもあるので再読したほうがいいかもmrsekut.icon
良さそうなタイミング
userごとの情報など、URLだけで判別できないコンテンツなどもcacheさせたい時
特にこの辺はsecurityにも関わってくる
cache key/secondary keyなどの複雑な条件を用いたcacheをしたい時
これは
/mrsekut-book-4297119250/293 (4.7 キャッシュ戦略・キャッシュキー戦略)
~/mrsekut-book-4297119250/324
この辺
第5章 より効果的・大規模な配信とキャッシュ
/mrsekut-book-4297119250/356 (第5章 より効果的・大規模な配信とキャッシュ)
Cache Hit Ratio
Proxy/CDNのevent
cacheをpurgeする
動的コンテンツをCacheする
ESI
/mrsekut-book-4297119250/448 (5.14 配信構成の工夫)
5.14 配信構成の工夫
5.14.1 ストレージ
5.14.2 Proxyの増設(スケールアウト)
5.15 多段Proxy
5.15.1 Proxyを増設すると何が起きるのか
5.15.2 多段Proxyのメリット―一貫性
5.15.3 1段方式の多段Proxy
5.15.4 2段方式の多段Proxy
Column ハッシュをとってどのように振り分けを行うか
5.15.5 どの方式の多段Proxyを採用すべきか
5.15.6 多段Proxyのメリットをより深く理解する
5.15.7 多段Proxyの注意点
Column キャッシュ巻き戻りの問題
Column max-ageが変動する時の注意
5.16 障害時に正しくサーバーを切り離す(ヘルスチェック)
5.16.1 ヘルスチェックを行う側の設定
5.16.2 ヘルスチェックを受ける側の設定
5.17 ドメインの分割
5.17.1 動的コンテンツと静的コンテンツでドメインを分ける
5.17.2 ZoneApex問題への対策
第6章 CDNを活用する
/mrsekut-book-4297119250/495 (第6章 CDNを活用する)
この章で「自前」と呼んでいるのは「自前Proxy」のことで、例えばVarnishなどを使ったもののこと
6.3 CDNの選び方
/mrsekut-book-4297119250/524 (6.3 CDNの選び方)
6.3.1 代表的なCDNの一覧
6.3.2 どの地域に配信をするのか(海外・国内配信)
6.3.3 ピーク帯域がどの程度あるのか CDNが対応できるか
6.3.4 どのようにキャッシュを制御するのか
6.3.5 HTTPSの取り扱い
6.3.6 CDNのキャッシュの消去
6.3.7 Apexドメインの扱い
6.3.8 信頼できるのか
6.3.9 CDNの多段キャッシュ
Column コンテンツの一貫性はどれほど必要なのか
6.4 CDNを使うときに気をつけたいポイント
6.4.1 キャッシュされない設定を調べる
6.4.2 クエリ文字列の解釈について
6.4.3 トラフィックなどの制限に注意
6.4.4 コンテンツのサイズに注意
6.4.5 Varyに注意
Column キャッシュ汚染DoS(CPDoS)
6.4.6 CDNのデバッグ
Column CDNのヘッダと標準化
6.4.7 CDNで隠したい情報をきちんと整理する
6.4.8 ウォームアップ
6.5 クライアントの近くでコードを動かす - エッジコンピューティング
Column 内部向けにCDNを使う - internal CDN
Column CDNのコスト
6.6 CDNと障害
6.6.1 CDNの障害
6.6.2 問題の切り分け―それはCDNの障害なのか
6.6.3 まずはmetricsを見てみる
6.6.4 CDNの典型的な障害
6.6.5 コンテンツのダウンロードが遅い
6.6.6 キャッシュが壊れる
6.7 動的コンテンツのキャッシュやCDN利用は危険なのか
Column マルチCDN
Column DNSブロッキングにかかる
Column 適切に設定しているのにキャッシュされない
6.8 実際にCDNを設定する
6.8.1 動的コンテンツの設定例
第7章 自作CDN(DIY-CDN)
7.1 なぜCDNをつくるのか
7.1.1 低予算
7.1.2 ハイブリッドで使う
Column CDN自体を多段で使うときの注意
7.2 低予算自作CDNの構成
7.2.1 さまざまなことを諦める
7.2.2 基本構成
Column VPSのプランをどう選ぶか
7.3 自作CDNと外部CDNのハイブリッド構成
Column 低コスト運用からその先へ
7.4 VCLでの設定例
7.4.1 gatewayとcacheでの設定の目的
7.4.2 リクエストの正規化
7.4.3 キャッシュする場合のCookieなどの取り扱い
7.4.4 TTLの設定
7.4.5 オリジンへの振り分け
7.4.6 ストレージの分割
7.4.7 オリジンでの注意
7.4.8 VCLサンプル
Appendix Varnishについて
/mrsekut-book-4297119250/665 (Appendix Varnishについて)
先に5章の前半を読んでおいたほうがいいmrsekut.icon
#スクボ読書化した本
#技術評論社