虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

【CDNを学びたい方にオススメ】「Web配信の技術」を読んだ感想

こんにちは! 最近、釣りにハマりだした虎の穴ラボのS.Sです。 この前は、サビキ釣りで、たくさんのイワシと小サバを釣ってきました。

昨今、スマホの普及や回線速度の高速化で、高解像度の画像や動画などを数多くのコンテンツをサイトに掲載する機会が増えてきました。
その中で、安定かつ高速にコンテンツを配信するためにキャッシュやCDN(Content Delivery Network)などコンテンツ配信に関する技術が解説された本を購読しましたので、今回はこちらをご紹介します。

f:id:toranoana-lab:20210616130356j:plain

書籍情報

  • Web配信の技術―HTTPキャッシュ・リバースプロキシ・CDNを活用する
  • 著者:田中祥平
  • 出版社:技術評論社
  • 発売日:2021年2月13日

内容

第1章 はじめに

第1章では、本書のあらすじと構成が書かれています。 ちなみに本書で紹介されているシステム構成は以下になります。

Ubuntu 20.04 LTS + Varnish Cache 6.5.1

※ Varnish(Varnish Cache)はキャッシュに強みを持つソフトウェア。
※ Varnishのインストール方法と使う上での注意点は、本書で解説されていますが、チューニング方法や全機能の紹介などはないため、その辺りは別途公式ドキュメントを参照した方がよさそうです。
※ 本書はVarnishを例に用いてますが、nginxなど他のProxyでも活用出来る内容になっています。

第2章 配信の基礎

本書における配信とは「サーバーにあるコンテンツをクライアントに届けること」を指します。
ひと口に配信と言っても様々な方法がありますが、この第2章では、配信やキャッシュの分類、それに伴う考え方の指針が紹介されています。

第3章 HTTPヘッダ・設定とコンテンツの見直し

いざCDNやProxyを導入する前に、配信するコンテンツ自体を見直すことで改善出来る方法が紹介されています。
第3章では、総転送量の削減などで大幅な構成変更を行わずに出来る改善案が紹介されています。
※ ちなみに総転送量は、以下の方法で算出することが出来ます。
総転送量 = リクエスト数 × 平均コンテンツサイズ

・HTTPヘッダの設定の改善で、ローカルキャッシュをうまく使って、サーバーのリクエストを減らす。
・コンテンツ自体の改善(圧縮や適切なリサイズ)を行うことでコンテンツサイズを小さくする。

これらを実現するだけでも、無駄なリクエストが少なくなり、転送量の削減に繋がります。
コスト面でも高い効果が得られるので、この辺りの見直しは積極的に行いたいものです。

第4章 キャッシュによる負荷対策

第4章では、実際にProxyやCDNでのキャッシュによる負荷対策が解説されています。
・キャッシュの役割
・キャッシュの消し方
・TTL(キャッシュの保持時間)の取り扱い
この辺りが詳細に解説されています。

キャッシュをまだよく知らない方などには、この辺りは参考になるかと思います。

第5章 より効果的・大規模な配信とキャッシュ

第5章では、キャッシュヒット率を高めて、CDNの負荷を減らす方法が解説されています。これにより、より効率良くコンテンツを配信することが出来ます。

例えば、以下のリクエストにvとdateのクエリストリングを付けた場合、内容は一緒でも順序を入れ替えてしまうと、違うキャッシュキーとして扱われてしまいます。

http://example/api/hoge?v=1&date=20210622
http://example/api/hoge?date=20210622&v=1
※ この2つのリクエストは、内容は一緒でも順序が違う為、違うキャッシュキーとして扱われる。

必ず、クエリストリングの順番を固定にしてリクエストを投げることで、キャッシュヒット率を高めることが出来ます。

第6章 CDNを活用する

第6章では、CDNの役割と導入するメリットなど詳細に解説がされています。
Webコンテンツのキャッシュが主な役割ですが、それ以外にも以下のようにセキュリティ対策の機能などがあります。

・柔軟なキャッシュ設定
・キャッシュの削除
・アクセス情報の可視化
・DDos対策
・WAF(Web Application Firewall)
・Bot対策

これらに関しても解説が書かれていますので、CDNがどんなものか知りたい方にはオススメです。
またCDNで障害が発生した際の問題の切り分け方とその対処方法も解説があるので、既にCDNを扱っている方にもこの辺りは参考になるかと思います。

第7章 自作CDN(DIY-CDN)

自作(自社)CDNについて導入するメリットや外部CDNとのハイブリッド構成などについて解説がされています。
代表例としてNetflixの例が紹介されています。
Netflixでは自社CDNを採用しており、これはNetflixにとって「配信」がコアビジネスであることから、外部CDNに依存するよりも自社でCDNを構築したほうが、コスト面とカスタマイズ性に優れるからです。
また、Netflixのような、大規模配信のサービス以外にも自作CDNを導入するケースはあります。

・低予算でCDNを構築したい。
・外部のCDNと自社のCDNの組み合わせにより、ハイブリッド構成にする。
  → 基本は、自社のCDNで配信して、溢れた部分を外部のCDNで配信する。

なかなか自社で自作CDNを導入する機会はないかと思いますが、この辺りの知識は参考になるかと思います。

感想

キャッシュやCDNなどWebコンテンツの配信をテーマとした本は少なく、この辺りの知識をおさらいするにはオススメの本です!
内容もユースケースを元にわかりやすく解説されているため、キャッシュやCDNを触ったことがない方にも入門書としてオススメです!
また第3章では、HTTPヘッダの見直しでコンテンツを効率良く配信するための方法も解説されているため、CDNを導入せずとも改善出来る点も紹介されているので、この辺りも参考になります。
少しでもコンテンツ配信を安定化・高速化したい方は、この本を読むと改善点が見えてくると思います。

P.S.

採用情報

■募集職種
yumenosora.co.jp

カジュアル面談も随時開催中です

■お申し込みはこちら!
yumenosora.connpass.com

■ToraLab.fmスタートしました!

メンバーによるPodcastを配信中!
是非スキマ時間に聞いて頂けると嬉しいです。
anchor.fm

■Twitterもフォローしてくださいね!

ツイッターでも随時情報発信をしています
twitter.com