Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Introducting the Fastly to TravelBook
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Masanori Iwakura
March 30, 2022
Technology
0
1.6k
Introducting the Fastly to TravelBook
トラベルブック(TrabelBook)のFastly導入事例
Masanori Iwakura
March 30, 2022
Tweet
Share
More Decks by Masanori Iwakura
See All by Masanori Iwakura
Ruby on RailsのJSON Serializer検討
masanoriiwakura
0
180
SHOROBAKOとエンジニアのお仕事
masanoriiwakura
0
75
Other Decks in Technology
See All in Technology
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
190
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
400
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
230
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
510
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
190
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
210
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
Agile Leadership Summit Keynote 2026
m_seki
1
670
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
Building Adaptive Systems
keathley
44
2.9k
4 Signs Your Business is Dying
shpigford
187
22k
Google's AI Overviews - The New Search
badams
0
910
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Code Review Best Practice
trishagee
74
20k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Mobile First: as difficult as doing things right
swwweet
225
10k
A Tale of Four Properties
chriscoyier
162
24k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
89
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Transcript
トラベルブックの Fastly導入事例 トラベルブック株式会社 岩倉誠徳 (Masanori Iwakura)
アジェンダ - 自己紹介 - はじめに - 導入した経緯 - トラベルブックの構成紹介 -
設定例紹介 - 失効済みコンテンツの配信 - Brotliの設定 - HTTP/3(QUIC )の設定 - まとめ
自己紹介 岩倉 誠徳 (いわくら まさのり) バックエンドメインのWEBエンジニア GitHub: MasanoriIwakura 好きなFastlyの機能:失効済みコンテンツの配信 ※後述
はじめに 2021年11月、トラベルブックはFastlyを導入しました👏👏👏 Brotli, HTTP/3(QUIC)と言った比較的新しい技術も導入したので 最後までお付き合いいただけますと幸いです
導入した経緯 • 元々はVarnishをEC2に入れてキャッシュ管理 • 日に日にキャッシュ対象のパスやページが増加 • Varnishサーバーが単一障害点となるリスク 冗長化したい!!! スケールを自動化したい!!!
構成紹介
None
管理方法 構成管理:Terraform • AWSの構成管理でも使用している • サービスをソース管理したい サービス管理:VCL • Varnishで使用した実績がある •
Varnishからの移行が比較的容易そう
管理方法 死活・ログ監視:Datadog • 既存のシステムでも使用している • ログの表示がとても優秀
設定例紹介
Terraformを使用した管理 プロジェクト構成 • modules ◦ VCLの管理 ◦ ログフォーマット管理 ◦ (Compute@Edgeの導入も検討)
• production • staging
Terraformを使用した管理 参考: https://registry.terraform.io/providers/fastly/fastly/latest/docs • Fastlyの設定画面で行えることは、ほぼ可能 • 管理画面で存在するのにTerraformから行えない設定には遭遇していない
Datadogへのログ送信 TerraformでDatadogへの送信設定を追加 Fastlyの変数を埋め込み可能
Datadogへのログ送信 Fastlyからログを送信することにより、リアルタイムに状況を可視化 例として、 - 200系レスポンスの割合 - エラーレスポンスの割合 - キャッシュのヒット率 -
アクセスしているブラウザ OSの割合 などをダッシュボードで確認が可能
Datadogへのログ送信 フィルター機能で任意のIPで絞り込んだり、任意のパスで絞り込んだりすることが可能 リアルタイムにログを確認することができるため 障害発生時や攻撃を受けている時の調査に有効的
Staleについて Staleなし Staleあり TTL+Staleの期間内は常にキャッシュが返却される
Staleの設定で苦戦したポイント [苦戦ポイント] Staleの期間内なのにキャッシュがHITしない? [原因] 1. TTLの時間が3700秒未満に設定されていた 2. オリジンシールドのStaleを無効化し、POPだけでStaleを有効化していた メモリ持ちになってしまうため LRUが
発生しやすい
改善前の設定 アクセスするPOPによってキャッシュのHIT/MISSが変わる
改善後の設定 オリジンシールドのStaleが適用される
Purgeについて • All Purge →サービス全体のキャッシュ削除 • URL Purge →指定したURLだけキャッシュ削除 •
Surrogate-Key Purge →独自で指定したキーでキャッシュ削除
Purgeについて hotelのキーを指定→ホテルに関するページ全てのキャッシュを削除 hotel-item-1を指定→特定のページのみ削除
カスタムエラーページについて 参考:https://docs.fastly.com/ja/guides/creating-error-pages-with-custom-responses
カスタムエラーページの実現方法 AWSのS3に配置したHTMLを参照するように設定 Fastly側でHTMLを管理する必要なく、最小限の修正でカスタムエラーページを実現
失効済みコンテンツの配信
失効済みコンテンツの配信 参考:https://docs.fastly.com/ja/guides/serving-stale-content
失効済みコンテンツの配信 次のアクセス時には キャッシュが適用
失効済みコンテンツの配信 ユーザーにはエラーを 認識させない!!
Brotliの設定
Brotli(ブロトリ)とは • Googleが開発した圧縮方式 • 他の圧縮形式と比べて高い圧縮率 • Edge, Firefox, Chrome, Safariなど主要ブラウザで対応している
Brotliの実験 実際にどれくらい圧縮されるのか、トラベルブックのトップページで実験
Brotliの実験 ※curlコマンドで検証 圧縮なし Gzip圧縮 Brotri圧縮
Brotliの実験結果 約130KB 約19KB (86%圧縮) 約13KB (90%圧縮) 参考:https://tech.travelbook.co.jp/posts/introducing-fastly/ ページによって結果が異なる場合があるため、あくまでも参考 Brotliの勝利!!
Brotli設定手順 1. FastlyサポートにBrotliを有効化していただく 2. VCLでBrotli圧縮を有効化 対応ブラウザ以外では他の圧縮形式にし たいため、Accept-Encodingで判定して 未対応の場合はgzip圧縮
HTTP/3の設定
HTTP/3(QUIC)とは? • HTTP/2に続く新バージョン • Googleが開発したQUICを使用することで高速化(UDP通信)
HTTP/2(TCP+TLS)とHTTP/3(QUIC)の対比 やり取りが少ない!
HTTP/3の設定方法 1. FastlyサポートにHTTP/3(QUIC)を有効化していただく 2. Alt-SvcヘッダーをVCLで追加 → h3.alt_svc() 3. HTTP/3用のDNSに切り替え 0RTT
enabled? IPv4 and IPv6 dual stack routing IPv4-only routing Yes dualstack.n.sni.global.fastly.net n.sni.global.fastly.net No dualstack.m.sni.global.fastly.net m.sni.global.fastly.net
HTTP/3の設定確認 対応ブラウザからアクセスし、確認 h3(HTTP/3)になっている
まとめ
まとめ • Fastlyを導入することでVarnish冗長化問題を解決できた • 失効済みコンテンツの配信が素晴らしい • Datadogと連携したログ監視が素晴らしい • BrotliやHTTP/3(QUIC)に触れる機会を作れた •
Fastlyのサポートが神
ご静聴ありがとうございました!