using cdn to improve performance

178
Using CDN to improve performance Gea-Suan Lin [email protected]

Upload: gea-suan-lin

Post on 09-Jun-2015

7.705 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Using CDN to improve performance

Using CDN to improve

performanceGea-Suan Lin

[email protected]

Page 2: Using CDN to improve performance

如果有問題…

Page 3: Using CDN to improve performance

請不要舉手,

Page 4: Using CDN to improve performance

請直接打斷!

Page 5: Using CDN to improve performance

亂發問才會亂爆八卦

Page 6: Using CDN to improve performance

我不能回答的,

Page 7: Using CDN to improve performance

有人可以回答。

Page 8: Using CDN to improve performance
Page 9: Using CDN to improve performance

不過因為投影片超過一百張

Page 10: Using CDN to improve performance

所以請節制…

Page 11: Using CDN to improve performance

Anyway…

Page 12: Using CDN to improve performance

開始。

Page 13: Using CDN to improve performance

從小網站開始…

Page 14: Using CDN to improve performance

一台 Server

Page 15: Using CDN to improve performance

一台 Web

一台 Database

Page 16: Using CDN to improve performance

Page 17: Using CDN to improve performance

不小心把網站搞大了

Page 18: Using CDN to improve performance

Tuning

Page 19: Using CDN to improve performance

很多台 Web

Page 20: Using CDN to improve performance

DNS Round Robin

Page 21: Using CDN to improve performance

每一台 Web 都有 Public IP

Page 22: Using CDN to improve performance

Page 23: Using CDN to improve performance

前面架一台 Load balancer

Page 24: Using CDN to improve performance

兩個禮拜後…

Page 25: Using CDN to improve performance

Load balancer 凌晨三點當掉

Page 26: Using CDN to improve performance

總經理還沒睡

Page 27: Using CDN to improve performance

把換燈管的叫起來

Page 28: Using CDN to improve performance

換燈管的把我叫起來

Page 29: Using CDN to improve performance

Page 30: Using CDN to improve performance

買硬體的 Load balancer

Page 31: Using CDN to improve performance

出事就找人罰站

Page 32: Using CDN to improve performance

繼續 Tuning

Page 33: Using CDN to improve performance

用 Apache 提供 css ?

Page 34: Using CDN to improve performance

一個 css 3KB 佔用一個 50MB 的 httpd…

Page 35: Using CDN to improve performance

動態頁面與靜態檔案分離

Page 36: Using CDN to improve performance

靜態檔案

Page 37: Using CDN to improve performance

獨立網域

Page 38: Using CDN to improve performance

static.bubble.com

Page 39: Using CDN to improve performance

nginx 或 lighttpd

Page 40: Using CDN to improve performance

為什麼用 nginx ?

Page 41: Using CDN to improve performance

CSS/JavaScript +gzip on-the-fly

Page 42: Using CDN to improve performance

一台 nginx

Page 43: Using CDN to improve performance

兩台 nginx ( 兩份檔案 )

Page 44: Using CDN to improve performance

出事了…

Page 45: Using CDN to improve performance

客服殺人…

Page 46: Using CDN to improve performance

IE6 + gzip 地雷

Page 47: Using CDN to improve performance

IE6 時 gzip 關掉

Page 48: Using CDN to improve performance

繼續成長…

Page 49: Using CDN to improve performance

N 台 nginx (N 份檔案 )

Page 50: Using CDN to improve performance

Page 51: Using CDN to improve performance

政治不正確

Page 52: Using CDN to improve performance

Reverse Proxy Cache

Page 53: Using CDN to improve performance

Squid

Page 54: Using CDN to improve performance

Invalidate 問題

Page 55: Using CDN to improve performance

/main.css

Page 56: Using CDN to improve performance

/main.css?v=[ 修改時間 ]

Page 57: Using CDN to improve performance

/main.css?v=[CRC32]

Page 58: Using CDN to improve performance

講到這裡,有沒有問題?

Page 59: Using CDN to improve performance

網站繼續大下去…

Page 60: Using CDN to improve performance

「拓展海外市場」

Page 61: Using CDN to improve performance

需要改善非台灣的瀏覽速度

Page 62: Using CDN to improve performance

光速是固定的

Page 63: Using CDN to improve performance

台北 – 美西120+ms

Page 64: Using CDN to improve performance

台北 – 美東180+ms

Page 65: Using CDN to improve performance

在美國放伺服器

Page 66: Using CDN to improve performance

用 GeoDNS 分配流量

Page 67: Using CDN to improve performance

寫 Health Check 當國外當掉時改用台灣的伺服器

Page 68: Using CDN to improve performance

ZzZz…

Page 69: Using CDN to improve performance

除了美洲還有歐洲

Page 70: Using CDN to improve performance

自己管理的成本過高

Page 71: Using CDN to improve performance

外包給專業的…

Page 72: Using CDN to improve performance

CDN

Page 73: Using CDN to improve performance

( 終於進入主題了 )

Page 74: Using CDN to improve performance

Content Delivery Network

Page 75: Using CDN to improve performance

內容傳遞網路

Page 76: Using CDN to improve performance

(屁 )

Page 77: Using CDN to improve performance

等於沒解釋…

Page 78: Using CDN to improve performance

多個伺服器群

Page 79: Using CDN to improve performance

多個地點

Page 80: Using CDN to improve performance

提供相同的內容

Page 81: Using CDN to improve performance

所以…

Page 82: Using CDN to improve performance

1. 就近取得內容

Page 83: Using CDN to improve performance

加快 TCP handshake 速度

Page 84: Using CDN to improve performance

加快 TCP 下載速度

Page 85: Using CDN to improve performance

2. 提供高可靠度

Page 86: Using CDN to improve performance

不同地點互相備援

Page 87: Using CDN to improve performance

3. DoS 防禦

Page 88: Using CDN to improve performance

「由專業公司防禦 DoS 」

Page 89: Using CDN to improve performance

「死道友不死貧道」

Page 90: Using CDN to improve performance

4. 成本

Page 91: Using CDN to improve performance

CDN 頻寬比較貴?

Page 92: Using CDN to improve performance

台灣頻寬比 CDN 貴!

Page 93: Using CDN to improve performance

一般頻寬計算方法: 95%

Page 94: Using CDN to improve performance

五分鐘取樣一次

Page 95: Using CDN to improve performance

一個月 30 天共 8640 次

Page 96: Using CDN to improve performance

刪除最高的 5% (432 次 )

Page 97: Using CDN to improve performance

取剩下最高的

Page 98: Using CDN to improve performance

From http://en.wikipedia.org/wiki/Burstable_billing

Page 99: Using CDN to improve performance

CDN 頻寬計算方式:總量

Page 100: Using CDN to improve performance

總量 = 平均流量 (等價 )

Page 101: Using CDN to improve performance

1Mbps ~ 10GB/day

Page 102: Using CDN to improve performance

換算?

Page 103: Using CDN to improve performance

依照網站的 MRTG Pattern

Page 104: Using CDN to improve performance

From http://en.wikipedia.org/wiki/Burstable_billing

Page 105: Using CDN to improve performance

95% 2.62M 與平均 1.27M

Page 106: Using CDN to improve performance

大約 2.06 倍

Page 107: Using CDN to improve performance

5. 克服瀏覽器壓縮 bug

Page 108: Using CDN to improve performance

用 CDN 後總量反而下降

Page 109: Using CDN to improve performance

講到這裡,有沒有問題?

Page 110: Using CDN to improve performance

CDN 的分類

Page 111: Using CDN to improve performance

Latency、 Thoughput、 Cost

Page 112: Using CDN to improve performance

CSS、 JavaScript

Page 113: Using CDN to improve performance

低 Latency、初期 Thoughput 要高、 Cost 不

是主要考量

Page 114: Using CDN to improve performance

亞洲要有直接連線的 PoPs

Page 115: Using CDN to improve performance

尤其是 HiNet 與 TANet

Page 116: Using CDN to improve performance

影音

Page 117: Using CDN to improve performance

Latency 不重要, Thoughput 足夠就好, Cost 要低

Page 118: Using CDN to improve performance

封包到美西再到香港

Page 119: Using CDN to improve performance

所以…

Page 120: Using CDN to improve performance

( 如果有時間的話 )

Page 121: Using CDN to improve performance

總是要講一下實際案例?

Page 122: Using CDN to improve performance

Akamai

Page 123: Using CDN to improve performance

很大,非常大,第一大

Page 124: Using CDN to improve performance

效能是最好的

Page 125: Using CDN to improve performance

台灣唯一有 PoPs 的 CDN

Page 126: Using CDN to improve performance

台灣有經銷商

Page 127: Using CDN to improve performance

價錢…

Page 128: Using CDN to improve performance

Limelight Networks

Page 129: Using CDN to improve performance

第二大?

Page 130: Using CDN to improve performance

YouTube 被 Google 買之前的 CDN

Page 131: Using CDN to improve performance

有香港與日本的 PoPs

Page 132: Using CDN to improve performance

但是都是導到美西 PoPs

Page 133: Using CDN to improve performance

第二大不一定比其他的好

Page 134: Using CDN to improve performance

CDNetworks

Page 135: Using CDN to improve performance

第三大?

Page 136: Using CDN to improve performance

二月買下 Panther Express

Page 137: Using CDN to improve performance

討論 Panther Express

Page 138: Using CDN to improve performance

有香港與日本的 PoPs

Page 139: Using CDN to improve performance

HiNet 與 TANet 到香港都是 20+ms

Page 140: Using CDN to improve performance

HiNet 調整 routing 時會自動跳到日本,約 30+ms

Page 141: Using CDN to improve performance

PIXNET 的 CSS/JavaScript

Page 142: Using CDN to improve performance

EdgeCast

Page 143: Using CDN to improve performance

第 N 大 ( 不重要了 )

Page 144: Using CDN to improve performance

有香港與日本的 PoPs

Page 145: Using CDN to improve performance

會導到香港的 PoP ,但是會先到美西

Page 146: Using CDN to improve performance

但是速度沒問題

Page 147: Using CDN to improve performance

PIXNET 的影音

Page 148: Using CDN to improve performance

Voxel

Page 149: Using CDN to improve performance

就是一家 CDN 業者…

Page 150: Using CDN to improve performance

價錢公佈在網站上

Page 151: Using CDN to improve performance

沒有亞洲的 PoPs

Page 152: Using CDN to improve performance

Amazon CloudFront

Page 153: Using CDN to improve performance

Because it’s Amazon…

Page 154: Using CDN to improve performance

Don’t waste your time

Page 155: Using CDN to improve performance

Amazon S3 應該找其他 CDN 搭配用

Page 156: Using CDN to improve performance

SimpleCDN

Page 157: Using CDN to improve performance

完全是拼價錢的 CDN

Page 158: Using CDN to improve performance

目前沒有亞洲的 PoPs

Page 159: Using CDN to improve performance

不吃 file.css?v=[ 時間 ]

Page 160: Using CDN to improve performance

就…

Page 161: Using CDN to improve performance

實際案例

Page 162: Using CDN to improve performance

( 如果還有時間的話 )

Page 163: Using CDN to improve performance

download.microsoft.com

Page 164: Using CDN to improve performance

Akamai + Limelight

Page 165: Using CDN to improve performance

js.microsoft.com

Page 166: Using CDN to improve performance

Akamai

Page 167: Using CDN to improve performance

www.barackobama.com

Page 168: Using CDN to improve performance

Panther Express (g2)

Page 169: Using CDN to improve performance

US-only PoPs

Page 170: Using CDN to improve performance

public.slideshare.net

Page 171: Using CDN to improve performance

Panther Express (g1)

Page 172: Using CDN to improve performance

US + EU PoPs

Page 173: Using CDN to improve performance

cdn.slideshare.net

Page 174: Using CDN to improve performance

Panther Express (l1)

Page 175: Using CDN to improve performance

價錢導向的 CDN Level

Page 176: Using CDN to improve performance

cdn1.badongo.com

cdn2.badongo.com

cdn3.badongo.com

cdn4.badongo.com

Page 177: Using CDN to improve performance

Amazon CloudFront

Akamai

EdgeCast (目前是這個 )

EdgeCast

Page 178: Using CDN to improve performance

Thanks