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.6k
なぜ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
83
kubernetes(GKE)環境でのdatadog利用事例 / Using Datadog in Kubernetes environment
_k_hal_
0
66
Other Decks in Technology
See All in Technology
SREsのためのSRE定着ガイド
netmarkjp
10
1.7k
家族アルバム みてねで直面してきた技術的負債 / MIXI KAG 2024
isaoshimizu
17
7.7k
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
21
4.1k
データマネジメントを支える武器としてのメタデータ管理
10xinc
2
1k
ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
yuitosato
29
12k
KTC_DBRE.pdf
_awache
1
290
エンジニア候補者向け資料2024.03.28.pdf
macloud
0
2.9k
期待しすぎずに取り組む両面 TypeScript
shozawa
4
580
技術広報経験0のEMがエンジニアブランディングをはじめてみた
coconala_engineer
1
140
Azureコストは水道代/The_47th_Tokyo_Jazug
aeonpeople
3
390
20240321_生成AI時代のDevOps
kzkmaeda
2
620
KubeCon EU 2024 : Knative Maintainers Session
salaboy
0
380
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.4k
Making Projects Easy
brettharned
106
5.4k
Keith and Marios Guide to Fast Websites
keithpitt
407
22k
Raft: Consensus for Rubyists
vanstee
130
6.2k
What's in a price? How to price your products and services
michaelherold
236
11k
Code Reviewing Like a Champion
maltzj
512
39k
Practical Orchestrator
shlominoach
180
9.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
185
15k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.2k
Fontdeck: Realign not Redesign
paulrobertlloyd
75
4.8k
It's Worth the Effort
3n
180
27k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
950
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