CloudFlare & Google Cloud CDN

大概前兩天吧,為了測試 Google Computer Engineer (以下簡稱 GCE) 到底好不好用,網速到底夠不夠快,我們小 J 弄了台 VM 出來測試,當時我們就對 Google Cloud CDN 表現出來的速度水準驚艷不已,不管是拿 KeyCDN Tool 來測試全球速度,拿 Webkaka站長工具來測大陸速度,加上了 Google CDN 的測速結果都比單純使用 Google Load Balance 或僅用 GCE 的狀況下要來得快很多,可惜當時只是把幾個測試結果排在一起比較,並沒有截圖留念做個證明。
* 後來我們才發現當時所放上的 Google Cloud CDN之所以快,主因是因為有一起啟用了 Anycast IP,所以 Anycast IP 才是關鍵點,細節再請看以下的測試

CloudFlare 是另外一個我很愛的 CDN Provider,價格便宜、防攻擊,後台簡單好用,免費 DNS,又常會發表技術文在他們自己的部落格上讓人觀摩,只可惜不管是 Free Plan、Pro Plan 或是 Business Plan,速度表現上和其它商用的 CDN 來說都是差強人意的,有時候不錯,有時候就很慢,至於 Enterprise Plan 我個人是沒試過,聽說是和其它 CDN 一樣可以提供某種程度的客制化,例如 best routing 一類的,希望將來有機會用到。

雖然說 CloudFlare 通常是差強人意,但每次看到他們在部落格上 寫了些黑科技,就忍不住想要嘗試一下,像是 ArgoRailgun,兩種都有網友提到說他們的測試結果不錯,有人說 Railgun 比 Argo 好,也有人測試之後說 Argo 不錯,所以今天就讓我們自己來證明一下。

我大致上的基本架構,也是目前跑在 Internet 上的配置都是 GCE 為主,然後依序加上 Google Load Balance with Anycast IP、Google CDN、CloudFlare CDN 與 CloudFlare Argo 上去,看看哪一種配置跑出來的結果最好,這次的測試我只用 KeyCDN Tool 來測試,畢竟我們網站主要的使用者並非中國用戶,KeyCDN Tool 也相對簡單穩定,不會有其它工具有時候開不到的問題。

以下的測試結果因為 KeyCDN Tool 僅有 TTFB (Time To First Byte) 的關係,所以也就只能以這個數值為參考。

SpeedTest

 

結果… 最好的狀況就是 Google Anycast IP + GCE 的合體,由於我拿來測試的網站基本上全是動態內容,看來有沒有掛上 Google CDN 並沒有顯著的差異。以上結果就是說:全部採用 Google 的服務,其它什麼 CloudFlare + GCE ,或 CloudFlare + Argo + GCE 什麼挖貴的,全部都比不上 Google Anycast IP 的數字,拿掉了 Anycast IP 之後,速度就是上不去,跑幾次都是一樣。說實在的,這對於常常在讚嘆 CloudFlare 部落格的我來說,這實在是太打臉了,和什麼廣告都沒打,後台介面又整個陽春的 Google 比起來,在速度上 Google 實在是佔了太多優勢了。後來想一想,Google 花大錢在各地架海纜果然不是做白工的,有自有大頻寬海纜這種基礎建設大概就贏八成了。

當然 CloudFlare 有其 DDoS Mitigation 的功用在,也提供免費的 SSL 證書 (Google Cloud CDN 也有),但不管有沒有用 Argo,只要是上了 SSL 的網站,速度一律再下降一個檔次,所以我索性也就不紀錄了,放了也是難看。

最後要註明的是,我這次測試的 Argo 並非 CloudFlare 的完全版,完全版的 Argo 需要安裝一個 Argo Tunnel 的程式在 Server 端,讓 Server 可以走最好的路徑到 CloudFlare 機房,接著就看有沒有機會再去測試他了,不過我的下一個測試目標應該是號稱有機會可以節省動態網站頻寬 10 倍的 Railgun,Argo Tnnel… 再等等吧。

玩一下 Google Compute Engine 要花很多錢嗎?

雖然身為一個 IT 人,也知道這一行要與時俱進不然就被淘汰的道理,但是我個人對於「在雲端上花錢」這件事情的態度算是偏向保守的那一派,像是 LINE Pay 已經出來半年了,我是為了貪那繳稅的回饋金才去辦卡且綁定了我的 LINE 帳號,Google Play 上就算有需要綁定過信用卡,也是用完之後就移掉,不然我自己會想像被他亂收錢。

這次之所以會想要在 GCE 上花錢,是因為看了某個對岸網友的文章,發現 Google 竟然直接在他的 GCE 上提供 Anycast IP + Global Load Balancer + CDN 的服務,因為這實在是太狂了,所以我忍不住就打破了自己的的風險規則,跑去把我的信用卡放上去。

我測試的東西也就是 Anycast IP –> With CDN –> Load Balancer –> 一台台灣 VM + 一台新加坡 VM 這樣子的架構,測試之前先在我自己電腦上的 VM 跑了一次,並且把安裝與設定步驟記錄了下來,所以去 Google 上開機器時,除了幾個 Google 自己的設定需要實驗多花了點時間之外,大致上可以說是沒幾個小時就做完相關的設定工作,然後就開始測試了。之後就放那邊放了兩天,端午節之前把 Anycast IP, CDN, Load Balancer 及新加坡機器關掉,只留下台灣這台 VM 給同事測試用 (對,我實際上的需求並沒有一定得要用 Anycast IP,只是拿來試試看功能而已),這樣子我一共花了多少錢呢? 才 US$1.96

1

而且 Google 也提供了一個預算管制的功能,當所花的錢超過你設定的預算時,就會發警示信出來。因為我拿來玩 GCE 的帳號就是我平常在用的 Google 帳號,也綁了我的 Android 手機,所以這功能讓我很安心的繼續用下去。

2

前一陣子不知道是哪位臉書上的心得,說是微軟 Azure 要和 Amazon AWS 或 Google GCE 對打還是走得很辛苦的。對照一下這幾年來看到 Google 在做的事情:Google 自建海纜、GCE、Anycast IP on GCE、Google CDN (如果 Google 要把他們在世界各個 ISP 放的 Google Global Cache 也拿來做 CDN 加速的話,那就更恐怖了),可以看到 Google 要做而且已經快做到的是「世界」的 IT Infrastructure – 全世界的中華電信、全世界的 Hinet,這意思是什麼呢?如果你今天只想做台灣的網站也就算了,如果你是想搞跨國的網路應用(電子商務、遊戲、社群、直播…),以後你也不用多想了,就直接放 Google 上就好了,如同幾年前的台灣一樣,大家想搞網路、搞遊戲,機房鐵定要選中華電信、專線一定得拉 Hinet,因為全台灣的使用者幾乎都是用 Hinet,想不接 Hinet 線路就是要讓使用者 lag 爆。這種事情以後就會反過來,大家要在全球佈局的話首選就會是 Google,因為最簡單速度又最快。

所以,學學這些 Public Cloud 的使用經驗看來就是未來 IT 人的必備技能,而且搞不好還比去學什麼 Server 安裝或 Cisco 設備操作要來得基本且必要,要練習這些東西很花錢嗎?你要練 Server 安裝、系統管理之類的可能要去買台機器或借個環境才能操作,想練網路我看很多人會花個幾千塊去網路上買二手設備來練習,但是想練 Google Public Cloud? 以我這次的例子來說,只要 1.96 鎂就好,可能比很多人一天的通勤費用還便宜些,好東西,不買嗎?