Slide 1

Slide 1 text

  |  © PLAID Inc. 2023.8.1 |  3rdparty.js #1  |  1 ⼀部のユーザーに開発版スクリプトを配信する Fastly を使ったカナリアリリース

Slide 2

Slide 2 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 2 しおざわ はじめ Hajime Shiozawa Github : @hshiozawa 株式会社プレイドのエンジニア 主にプロダクト基盤の開発をやってます • 解析エンジン Blitz の開発 • 新しい埋め込みタグ Edge の開発

Slide 3

Slide 3 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 3 カナリアリリースをできるようにしよう 新機能を開発したから、新しいスクリプトの検証がしたい! でも、検証環境だとシンプルなテストデータしか⼊ってない いきなり本番環境にはリリースはできない・・・

Slide 4

Slide 4 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc.   4

Slide 5

Slide 5 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 5

Slide 6

Slide 6 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 6 考えるべきポイント KARTE の埋め込みスクリプトのアーキテクチャ

Slide 7

Slide 7 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 7 1 埋め込みスクリプトの URL は変えない

Slide 8

Slide 8 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 8 2 クライアントごとに配信スクリプトが異なる

Slide 9

Slide 9 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 9 3 クライアントが設定を変えると、スクリプトを再ビルド スクリプトを ビルドするサーバ

Slide 10

Slide 10 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 10 4 スクリプトへの修正は、全スクリプトの再ビルドが必要

Slide 11

Slide 11 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 11   1. 配信スクリプトは同じ URL 2. クライアントごとに違うスクリプト URL 3. クライアントが設定を変えると、スクリプトを再ビルド 4. スクリプトの修正は、全スクリプトの再ビルドが必要 ポイント

Slide 12

Slide 12 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 12 カナリアリリースを実現する

Slide 13

Slide 13 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 13 Fastly VCL を使う  1. 配信スクリプトは同じ URL  2. クライアントごとに違うスクリプト URL を解決する

Slide 14

Slide 14 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 14  

Slide 15

Slide 15 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 15   Cookie を付与して Fastly の VCL で カナリー環境に振り分け Cookie を付与 VCL で振り分け

Slide 16

Slide 16 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 16   sub vcl_recv { if (req.http.Cookie ~ "new_feature" && req.url ~ "aaa") { # カナリア環境 set req.backend_hint = canary_release_backend; } else { # プロダクション環境 set req.backend_hint = production_backend; } }

Slide 17

Slide 17 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 17 リクエストごとにビルドする  3. クライアントが設定を変えると、スクリプトを再ビルド  4. スクリプトの修正は、全スクリプトの再ビルドが必要 を解決する

Slide 18

Slide 18 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 18   カナリー環境はリクエストに応じてスクリプトをビルドする 多少⻑めにキャッシュ 毎リクエストビルド

Slide 19

Slide 19 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 19   全体像

Slide 20

Slide 20 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc. 20  

Slide 21

Slide 21 text

2023.8.1  |  3rdparty.js #1  |    |  © PLAID Inc.   21 まとめ&感想 埋め込みスクリプトのカナリアリリース 環境の振り分けに Fastly VCL を使う スクリプトは毎回ビルドしてる CDN にロジックを組めるのは便利 Edge Computing をもっと組み込みたい   💡  💡 

Slide 22

Slide 22 text

No content