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
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
今日から始めるAmazon Bedrock AgentCore
har1101
4
420
Tebiki Engineering Team Deck
tebiki
0
24k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
270
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
400
20260204_Midosuji_Tech
takuyay0ne
1
160
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
610
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
410
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
140
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
670
Webhook best practices for rock solid and resilient deployments
glaforge
2
310
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
370
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
57
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
Are puppies a ranking factor?
jonoalderson
1
2.7k
Optimizing for Happiness
mojombo
379
71k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
280
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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のサポートが神
ご静聴ありがとうございました!