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
なぜCDNを移行をしようと思ったか/ DAC 's CDN Migration Case Study
Search
HAL
October 23, 2019
Technology
0
2.8k
なぜCDNを移行をしようと思ったか/ DAC 's CDN Migration Case Study
HAL
October 23, 2019
Tweet
Share
More Decks by HAL
See All by HAL
Yamagoya で話せなかったところ/Fastly User Meetup #3
_k_hal_
0
98
kubernetes(GKE)環境でのdatadog利用事例 / Using Datadog in Kubernetes environment
_k_hal_
0
100
Other Decks in Technology
See All in Technology
AWS認定を取る中で感じたこと
siromi
1
190
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
7.6k
ゼロからはじめる採用広報
yutadayo
3
920
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.7k
Lakebaseを使ったAIエージェントを実装してみる
kameitomohiro
0
110
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
380
開発生産性を測る前にやるべきこと - 組織改善の実践 / Before Measuring Dev Productivity
kaonavi
9
4.3k
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
1
460
Lazy application authentication with Tailscale
bluehatbrit
0
210
第4回Snowflake 金融ユーザー会 Snowflake summit recap
tamaoki
1
280
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
9.2k
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
270
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Raft: Consensus for Rubyists
vanstee
140
7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
740
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
A better future with KSS
kneath
238
17k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Transcript
なぜCDNを移行をしようと思ったか Fastly 移行事例 春名 光一 (デジタル・アドバタイジング・コンソーシアム株式会社) Fastly Yamagoya Meetup 2019
2019/10/23 1
自己紹介 • 春名 光一 • デジタル・アドバタイジング・コンソーシアム株式会社 (DAC) • インフラエンジニア •
GitHub: @k-hal • Twitter: @_k_hal_ 2
会社説明 3 DAC は、インターネット広告の黎明期にあたる 1996 年にメディアレップとして設立されて以来、市場の形成と業界の成長を 牽引し、情報や生活のデジタル化とともに事業を拡大、発展させてきました。現在は、デジタルマーケティングにおける広告を基 点としたさまざまなサービスを国内外で展開しています。 媒体社と広告会社などのパートナーとして双方に向けたシームレスなサービスを提供。広告枠の仕入れ・販売、コンサルテー ションからプランニング、運用、結果の解析までをトータルに支援する広告取引関連サービス、メディアの特性を活かしたクリエ
イティブ制作、豊富なデータと高度なテクノロジーを掛け合わせたソリューション開発・提供や、グローバルなプロモーション支援 などを行っています。 "Empowering the digital future" というブランドスローガンのもと、これからのマーケティングのあり方を追求し、新たな事業を 生むイノベーションの創出をリードしていきます。 デジタル・アドバタイジング・コンソーシアム 1996 年 設立 40 億円 資本金 1,302 名 役職員数 (DAC 単体) ※2019 年 4 月 1 日現在
4 国内最大規模の オーディエンスデータ 研究機関との共同開発や特許取得技術 により向上した推計技術 1,400種類 の嗜好性データ、 郵便番号データ単位での位置情報データ など 多岐に渡るデータ項目
データの量 データの質 データの種類 AudienceOne®とは 月間4.8億ユニークブラウザと1億以上のモバイル広告ID、2兆レコード以上の膨大な3rdパーティデータと、 多様なデータパートナーから提供された専門領域データ(2ndパーティデータ)を保有し、そのデータを解析して 高精度なセグメントデータを生成・提供する国内最大級のデータ・マネジメント・プラットフォーム(DMP)です。 Cookie数:月間 4.8億 UB 広告ID数:月間 1億超 ID から収集した2兆を超えるオンライン行動データ 各パートナー企業保有のデータ 信用スコア リサーチパネル 企業属性 電子チラシ クレジットカード情報 データの拡充 3rdパーティデータ 2ndパーティデータ
5 LINE と Messenger に連携したメッセージング管理ソリューション 集客からカスタマーサポートまで一連のコミュニケーションを様々な機能でサ ポート。LINE 向けサービスでは、国内で唯一 4 期連続
LINE Biz-Solutions Partner Program において最上位パートナーに認定。
今日お話すること • 以前のCDN構成と問題点 • 移行と改善を図ったこと • 実際の構成と管理 • ログとモニタリング •
今後の課題 • まとめ 6
以前のCDN構成と問題点 7
DACでのCDN用途 • JavaScriptやクリエイティブなどの配信に利用 • 基本的に静的なファイルのみ ◦ Set-Cookie: はしていない ◦ Cache-Control:
private で配信すべきものはない(はず 8
以前の構成 • 昔から使っていた某CDNと某クラウドのCDN ◦ プロダクトによりバラバラ ◦ オリジンもバラバラ、設定もバラバラ 9
問題点 • ガバナンス不全 ◦ 多数設定され定価での配信費用がえらいことに • 配信ドメイン名ばらばら ◦ 上記にも関連するが、自社管理ドメイン名でないためロックイン •
Cache-Control 不備 ◦ Cache-Control: private ? ◦ EC2, GCE から S3, GCS にオリジンを移す中多数出る ◦ CDN側で設定を上書きし、握りつぶしていたりもしたが見通しがわるい ◦ 移行の障害にもなる • 過去の経緯が不明 ◦ 使わなくなった設定が残りっぱなし • 呼び出し元がわからない ◦ 広告のタグって契約終了しても剥がしてもらえないことがある ◦ ロックインが尾を引く • ログをいまいち活用できてない 10
改善したかったところ • 一度設定リセットしたい ◦ 棚卸して必要な設定だけ残す /移す • ログを見やすくしたい ◦ 取るなら見やすく必要な情報は残す
◦ 配信実績の費用按分もあるので • オリジン設定もCDN設定もコード管理したい ◦ ちゃんと?管理したい • セルフサービス化 ◦ お願いしますではなく、インフラでなくても設定変更をできるように ◦ ガバナンスは効かせたい • CDNを集約してボリュームディスカウント ◦ まとめて恩恵を受けたい 11
移行と改善を図ったこと 12
移行で改善を図ったこと • 設定のコード化 ◦ Custom VCL という方法もあったが、一旦Terrafrom で管理することに ▪ Terraform
provider のGoogle Credential の扱いに多少ハマる ▪ サブルーチンとパス単位でSnippet化 13
移行で改善を図ったこと • GitHub に入れて CircleCI から Terraform apply ◦ Issue
や commit log に意図を残す ◦ Terraform workspace で staging 環境も用意 ◦ Terraform のヒアドキュメントだと terraform apply まで記述ミスに気が付かな い事がある ▪ Fiddle で確認 14
Fastly Fiddle • Fastlyが提供している VCLの検証ツール ◦ https://fiddle.fastlydemo.net/ ◦ サブルーチン単位に記述 •
Snippetとの相性も悪くな い 15
移行で改善を図ったこと • Cache-Control ◦ 当面CDN側での設定を原則とし、オリジンはCDNへの指示のみとする ◦ Cache-Control: s-maxage に •
ログ ◦ 一旦 GCS に出力し、BigQuery へ Cloud Function で Load ◦ Data Portal で可視化 • CDN費用 ◦ 全部まとめてボリュームディスカウント 16
移行前準備 1. オリジンはそのままに既存設定をFastly向けにおこす ◦ 複雑なことはしていなかった(はずだった)ので 2. オリジンアクセスの挙動差異吸収 ◦ Cache-Control: private
などが問題に ◦ 上記オリジン側設定の書き換え 3. HTTP Header などの差異、挙動確認 ◦ CORSなど 4. PURGE 処理の準備 ◦ 並行稼動を見据えて 17
CDN移行 静的なコンテンツしか配信しないことと、一気に切り替える必要性もなかったので、DNS の重み付け振り分けで少しづつ切り替え DNS振り分け設定を以下で順次変更 1. 1 % 2. 10 %
3. 50 % 4. 100 % 18
TLS Version • Fastlyが通常提供しているTLSネゴシエーションは1.2以上 • プロダクト側から安全側に倒してTLS1.0, 1.1 を有効にしたい と要望 ◦
専用IPオプションの導入とTLS1.0, 1.1 のサポート有効化 ◦ 急にお願いしましたけど素早く対応して頂けました 19
Query Parameterの扱い • GET で送られてくる文字列 ◦ キャッシュとして別のものとして扱われる ▪ 比率を上げたときにオリジンが耐えきれず死んでしまいかねない ◦
Query Parameter を切り捨てるように設定 ◦ 反映速いのでこういう時助かります 20 If ( 条件 ) { set req.url = req.url.path; }
ログとモニタリング 21
リクエストログ出力 22 • 必要な項目やフォーマット、出力先を定義できる ◦ BigQueryへの取り込みを決めていたためJSON形式で出力 ▪ リクエスト先 ▪ レスポンスサイズ
▪ TLS ver ▪ エッジのロケーション ▪ etc..
リクエストログ可視化 • 以前のメルカリさんの資料ほぼそのままの構成 • Google Cloud Storage + BigQuery +
DataPortal 23
リクエストログ可視化 • JSON形式で必要な項目をGCSへエクスポート ◦ 1時間ごとに出力 • GCS書き込み終了をトリガーにCloud Functionを起動してBigQueryへロード ◦ 非同期で取り込み
◦ 取り込み失敗はStackdriver Logging で BigQueryのInsertJob失敗を検知 ◦ Data Studio/Portal で良きに可視化 • 5xx とかのリクエスト内容も比較的すぐわかるように • Streaming Insertではないので、リアルタイムなモニタリングには適さない 24
リクエストログ可視化 • リクエスト数上位や配信量上位などを表示 25
モニタリング • Data Portal で確認 • Datadog とも連携 ◦ これも以前のメルカリさんの資料ほぼそのままの構成
◦ リクエスト数、キャッシュヒット率など • リアルタイム性が必要なときはFastly管理画面かDatadogで確認 26
モニタリング • ヒット率 ◦ 一部静的で無いものもあった が、かなり高い数字を維持 • TLS Ver ◦
心配したほど絶対値としては 大きくはなかった 27
今後の課題 28
今後の課題 • Fastly への完全移行 ◦ 実を言うと全部移行できてません ▪ ドメイン名が変更になる部分 ◦ 自社管理ドメイン名は移したが、CDN変更でのドメイン名変更でタグの置き換
えが必要な部分は今後も移行作業を引き続き実施 ◦ 来年度以降は総コストが安くなる予定 • TLS 1.0, 1.1からの脱却 • 静的なコンテンツのオリジンオブジェクトストレージ化 • Custom VCL化 ◦ Snippet の見通しが悪くなる前に • CDN利用用途の拡大 29
まとめ 30
まとめ CDN周りの抱えていた問題点を移行で解決を図ろうとしてい ること 移行でいくつか問題にぶつかったが対応したこと どのようなFastlyモニタリング環境を構築しているということ 31
ありがとうございました 32