雲端平台使用心得分享

johnmueller CC BY NC ND 2.0

好爛的標題喔 XD 小弟有幸在這兩三年使用了幾家不同的雲端平台, 想說在此分享給一些還沒有用過的朋友, 也許這些資訊有些幫助。

現在跟以前比起來, 真是一個幸福的時代。記得以前都要想辦法找一台電腦, 架個 Slackware、Redhat, 一直到大學的時候, 同學們都要把汰舊的電腦組起來裝個 FreeBSD 或什麼的來做自己的實驗機 (二號機), 裝 BBS, 裝 news server, 裝 Web server, 裝 MovableType… 裝 FTP server (orz…)

出社會後, 也曾經在自己家的客廳把舊機器組起來, 想說 VDSL 的上傳頻寬也多了, 但噪音以及熱度的問題很快的就讓我把他丟在一旁。這種東西怎麼可能會比得過按幾個紐, 就可以產生出一整台給你用的 Linux 呢? 現在的 VPS 或 IaaS 可以給的實在是多太多, 也方便太多了!

Amazon Web Service

首先, 第一個要介紹的就是最有名的 AWS。由於工作上的需要, 我們當時的整個 infrastructure 都是建立在 AWS 上的。Infrastructure 聽起來真威猛, 其實就是我們所有建構的服務 (對內、對外) 都是建立在 AWS 上的。

AWS 的 EC2 功能真的非常多, 也是當時我認為最完整的 (目前我想應該也是, 但感覺 Google Cloud Platform 緊追在後)。他們提供了一個 Free-tier 可以讓你用一整年免錢。當時 EC2 Free-tier 的機種是 t1.micro。聽起來很吸引人對吧? 但到底 t1.micro 用起來會是怎樣的呢? 簡單來說, 就是卡卡的 XD

apt-get update、apt-get upgrade 或作什麼 compiling 的動作會卡住, 在 terminal 打東西打一打也會卡住… 其實這樣的效能實用性真的不怎麼高, 所以還是使用了最便宜的付費方案 m1.small。

機房, 想當然爾的要選擇靠近台灣一點的機房, 而我們當時選擇的是東京機房。雖然很近也挺快的, 但是可以很明顯的感受到, 速度不及機器放在台灣學術網路的快。

使用 AWS 有另外一個好處, 就是可以使用 VPC (Amazon Virtual Private Cloud)。VPC 可以讓你自己設定你的虛擬網路, 不會跟別人的干擾, 可以自己設定 routing 等。如果你沒有使用 VPC 的話, 使用 EC2 的內網的網域是跟其他人共用的。但使用了 VPC, 你可以自己切 10.x.x.x 開頭的虛擬網路。如此一來, 其中一台可以架個 openvpn, 你就可以讓內部才能使用的 service 只聽 10.x.x.x 的 address 不對外公開, 也是個隔離的好辦法。

最後, EC2 有個叫做 Reserved Instance 的東西。在此要特別講一下。如果你會長時間開啟 EC2, 可以考慮購買所謂的 Reserved Instance。RI 的玩法如下: 你一開始要先繳一筆大筆的費用, 叫做 Upfront price。然後接下來的一年或三年的時間裡, 每一個月機器的價格最低可以低到原本的 25 折 (以目前 m3.small, 3-year heavy utilization RI 來算)。跟原本的方案比起來, upfront 費用加上最低 25 折的小時費率基本上還是便宜非常多。

聽起來很誘人是吧? 當你一確認使用此方案後, 你會先被扣該方案的 Upfront price, 接著, 他就會直接把當月的小時數 x 費率直接扣款, 接著使用該機型的機器使用的費用都會算成 0 元。但是有些地方要注意。首先, 你要確保你的機器真的是 24/7 都開著, 而且會開一年 (或三年)。如果公司的營運計畫有轉變, 甚至是 Amazon Web Service 推出了新的機種, 你可能就會有點後悔你跟他買了一個一年 (或三年) 約的機器了。

不過他基本上是可以賣掉的, 而且他提供了一整套的機器讓你可以線上賣出你不想要的約。然而目前只接受你有在美國的銀行開戶的戶頭才能進行這種交易。

Linode

嚴格上, 他無法跟 AWS 做比較, 因為這個純粹是 VPS, 而 AWS 應該算 IaaS。但其實他們一樣都可以拿來當作架站的底層, 因次還是合在一起講好了。選用 Linode 的好處就是他很簡單, 計價方式也很簡單, 功能也不複雜。開了一台, 選定 Linux distribution 跟一些基本設定如 swap、硬碟大小、root password, 然後開機! 你馬上就有一台全新的 Linux。

Linode 一樣最近的機房在東京。而他目前最低的費率是 USD 10/mo, 今年的新機種全面改用 SSD 硬碟。有這些改變應該是被競爭對手 DigitalOcean 追著打。不過在此沒有特別介紹 DigitalOcean 是因為之前在網路上有過一些這家供應商的爭議, 因此我就沒有使用過他們的服務了。

其實 Linode 能講的不多, 大概就是這樣子了。但使用上, 大概一兩年前使用的時候, 常常到了晚上會有點 lag, 這大概是使用上最大的麻煩吧。

對了, 另外, 在 Linode 的機器上你也可以配置 Private IP。如果你有想台 Linode 想要互連的話, 可以兩台都配置 Private IP, 就可以連線了。但這一樣要小心一點, 因為大家的帳號都是共用這個內網的。

最後, Linode 的客戶服務回信的速度之快, 是非常嚇人的! 通常你發一個 ticket, 大概五到十分鐘之內就會有人回信, 我個人覺得非常威猛!

Heroku

這個就更不能跟其他比了, 但之所以會拿他出來講, 一樣, 之前曾經考慮過的省錢的 solution。他算是 PaaS, 你沒有 OS 的控制權, 而佈署網站的方式是透過 git push。

Heroku 很棒的地方在於他最低的方案是免錢的, 而大部分小網站的流量光是這個方案就可以應付了。不過他最致命的缺陷就是你可以控制得太少, 尤其是 filesystem 這一塊。我碰到的大問題就是在於, 我客戶的網站有 Content Management, 如果使用者要上傳 media, 一定要搭配 S3 之類的東西。可惜 Django 目前的 solution (django-tinymce, django-storages, django-filebrowser 三個搭配起來) 對於 S3 這種狀況會出很大的問題。每個小的 system call 都要透過 HTTP call S3 API, 很容易 timeout, 即使不 timeout 也要等非常久。

因為這樣的事情後來就放棄這個選項了。(所以這個平台我沒有真的讓 production 在上面跑過)

Google Cloud Platform

這算是目前我的新歡吧… 他最大的優勢就是在於他的機房在台灣! 在台灣!! 網路速度從台灣連非常非常的快。他的功能組比較像是 AWS, 他有內網可以建制, 然後開的機器有很多不同規格可以作選擇與調整。

然而, 目前 Google Compute Engine 提供的 OS 有限, 目前免費提供的有 Debian 7, CentOS 6, openSUSE, coreOS。我個人用 Ubuntu 用慣了, 因此在這上面選用 Debian。其實 Debian 也不錯, image 跑起來沒有亂裝一堆有的沒的, 但其實我覺得還是沒有到 Ubuntu 那麼人性化, 感覺比較 hardcore 一點。

Google Compute Engine 的定價很酷, 因為當初他主打的就是他把 AWS Reserved Instance 的概念直接 Bundle 在他們所有的計價方式。因此 Google Compute Engine 你只要開機時間越久費率就越低, 不用在額外選擇年約的方案。而目前試用下來, Google Compute Engine 最低的方案 f1.micro (shared core, 0.6G RAM) 其實也不會像當初我使用 AWS t1.micro 一樣卡卡的。而這個方案組起來也是非常便宜。但最華麗的還是在於他的速度, 隨便開一台 ping 一下值可以在 8-15ms 左右, 相當驚人。

Google Compute Engine 如果你最簡單的方案開個一天兩天其實也不到一塊錢美金, 想要試用的人不妨試試看。

結語

試用了這麼多, 最後仍然要回歸到你的需求是什麼? 當初選用 AWS 是因為預計會大擴張, 因此當然是選擇這方面的領導品牌。然而, 領導品牌的價格也高出很多。如果需求轉向了, 公司所打造的服務轉向了, 那是否還需要用到這麼豪華的東西呢? 其實可能主要以成本考量, 是否在成本上也符合需求。

有些事情其實當初也真的沒有想過, 例如說使用了 RI 優惠的價格但綁約之後, 公司轉型而使用別家廠商, 又或者是雲端供應商提供了更新更好的機種… 而在選用這些服務時, 搬遷的工程, 使用 PaaS 帶來的限制導致需要更多開發或研究的工作項目, 這些增加的成本與帶來的效益是否值得呢? 但不可諱言的, 這些東西真的比以前自己動手組實體機器還要來得好多了!