# Amazon Web Services 之門外漢心得

> 

Published: 2011-03-07
URL: https://kaochenlong.com/amazon-web-services

---

雲端，雲端，大家都在講雲端，不過我這種第三類組畢業的學生，沒有什麼的理論基礎，也不喜歡講理論(不過聽李教授說人死了之後就會在雲端了)，僅就我自己最近試玩幾天 Amazon 的 EC2 心得與大家分享。

&lt;!-- more --&gt;

以前要蓋網站，除了要找設計師來做設計、工程師來寫程式外，還要有一個網站空間可以放你做好的東西才行。而這個「空間」的來源就有很多種，一個是自己架，不管是公司內部有專線，架在自己公司裡，還是花點錢去內湖那邊的機房租個機櫃，把機器放進去住，就是所謂的「主機代管」，不管是哪一種，都至少有養一台機器跟線路的成本。另一種是「虛擬主機」，就是跟業者租用一小塊硬碟空間，把你的網頁檔案放上去。

用房子來比喻，主機代管就像獨棟的透天厝，而虛擬主機就像在社區裡租一層公寓。各有優缺點，透天厝的優點就是可以自己高興怎麼裝潢就怎麼裝潢，而社區公寓除了樓層空間大小限制外，還有一些先天的限制，例如管委會不願意讓你破壞原有的牆壁（某些元件沒辦法安裝），或是當你在你家辦 party，搞得太 high（CPU 或其它硬體使用率過高）影響到其它住戶，可能還會被管理員（主機商）來關切一下，或是狠一點直接把你趕走；相對的，透天厝的缺點就是成本比較高，而且還得自己小心會不會遭小偷，你可能得自己請一個看門的（MIS 人員）或花錢裝一些保全設備（防火牆），而社區公寓則是同個社區的人一起 share 管理人員或保全的費用，成本相對較低。

其實之前一直就知道 [Amazon Web Services](http://aws.amazon.com/)（AWS）很強大，但因為自己已經有在內湖養自己的主機所以一直沒去試試看，直到最近在某次讀書會上聽了前輩們的介紹，聽起來相當心動，反正現在有第一年免費的優惠，就註冊了個帳號上去玩。註冊過程其實不會太難，就是步驟有點多，然後都是英文介面，感覺 AWS 真的是另一個世界..沒聽過的資訊名詞多到爆炸 :) 。在你註冊新帳號的時候，會需要你的聯絡電話跟信用卡號做驗證。

那 AWS 的[Elastic Compute Cloud](http://aws.amazon.com/ec2/)（EC2）跟前面提到的透天厝或社區公寓有什麼不同? 簡單的說，它可以同時有上述兩種方案的優點，而且成本還相當便宜。有這麼好康的事? 以下就以功能面跟成本面來說明：

### 以功能面來看：

EC2 有好幾個等級的機器，可以依照不同的需求及預算來租用，從最便宜的 Micro 等級到 High-Memory Instances 等級（68.4 GB RAM），如果你是要大量運算的，也可以考慮 High-CPU Instances。其實你在 EC2 啟用一個 instance 就等於你就擁有一台[VPS](http://en.wikipedia.org/wiki/Virtual_private_server)了。

VPS？簡單的講，這就跟一般把機器放到機房代管差不多，只是這台機器是「虛擬」的，你摸不到也看不到，但這台虛擬的主機跟一般獨立主機一樣可以 SSH 登入，要裝什麼軟體都可以裝，而且有擁有完整的 root 操作權限。

EC2 的安裝也很方便，你可以用 AWS 提供的 Image 檔（Linux 跟 Windows 平台都有），也可以找一些社群熱心人士貢獻的。安裝時間也是出乎意料的短，只要點幾下滑鼠，系統就整個裝好了!! 我自己是習慣 FreeBSD，所以找了 FreeBSD 8.2 Release 版本的 Image 來裝，不過那個 Image 還滿「乾淨」的，Apache、PHP、Python、Ruby、MySQL 都沒有，連 `/usr/ports` 也是空的，所以我自己花了點時間，把基本環境建好之後再做成自己的 Image 檔。

做自己的 Image 檔要幹嘛？以前當過網管或是管過電腦教室的人應該都對 Ghost 這個軟體不陌生，通常會在系統最完美（或乾淨）的狀態把它 ghost 起來，然後如果要重灌或是灌其它台電腦的時候，只要一下子的時間就可以把那個乾淨的環境裝到新的電腦裡了，省時省力。而在 AWS 上做自己順手的 Image 也差不多是這個道理，只要在管理後台點幾下，下次要開新的 instance 的時候只要選用自己做的 Image 就可以很快的再開一個新的 instance 起來，而且還是你習慣的作業環境。

想想以前想要學 Linux/FreeBSD 的話，可能得自己想辦法從網路或光碟來安裝，再快也差不多得要半小時才能裝好，現在有現成的 Image，只要滑鼠點幾下，幾分鐘就搞定，如果不想要或是被玩爛了，隨時可以砍掉重練，EC2 真的是練功的好地方..

EC2 有提供「Security Group」的功能，其實就是防火牆啦，你可以只限定某些 IP 或某些 Port 的連線才能存取資源，設定也相當簡單。如果在自己的機房自己弄，這可能還得花點錢買一台實體的防火牆來設定，而且要搞懂那些防火牆的 rule 設定也挺煩人的。

雖然 micro instance 的等級並不高，但放一些簡單的網頁或是基本的服務（例如 DNS 管理），是相當足夠的。像我就是把它拿來管理我手上的一些 domain name，還有放一些簡單的 HTML 頁面。

AWS EC2 的 instance 的 IP 預設是浮動的，如果重新啟動後，它的 IP 可能會變動，你可以跟 EC2 要固定的 IP，並把它掛上到你指定的 instance 上。要注意的是，申請固定 IP 不用另外收費，但如果要了 IP 卻沒有掛到任何一個 instance 上，會被額外收費，免得大家亂要 IP，佔著不拉屎。（IPv4 已經發光了，請大家好好珍惜）

對我來說的另一個重點，是因為我近來喜歡用[Ruby on Rails](http://rubyonrails.org/)（RoR）來做網路活動的後端，原因請見另一篇[門外漢心得](/2010/07/16/internet-campaign-with-ruby-on-rails/)。不過國內虛擬主機很少支援 RoR，又加上我喜歡每次都放一些新玩意進來做實驗，虛擬主機限制太多，所以這也是我自己養機器的最主要原因。

### 以成本面來看：

錢很重要，所以先來看一下[價目表](http://aws.amazon.com/ec2/pricing/)。

它的計價單位是”小時”，主要有兩種租用方式，一個是 On-Demand Instances，一個是 Reserved Instances。On-Demand 就是要的時候租，不要的時候就退還，Reserved 則是一次租比較長的一段時間（1 年或 3 年）。

On-Demand 的 micro instance 的一個月算下來才 18 塊美金（第一年免費），等級稍微好一點的 standard instance 是 33 塊/月。

因為我的工作大部份是跟網路活動相關的，而且網路活動的特性就是「時間短、流量會忽大忽小、下線之後就撤掉了」，所以 On-Demand 的計費方式就很適合，案子下線之後直接到後台把它停掉，就不會繼續算錢了。而如果是長期維護的的網站的話，就可以考慮 Reserved 的方式，一次買 1 年或買 3 年，價格更便宜，1 年期的 micro instance 只要 54 塊美金。

這樣的價錢貴嗎? 以我現在養在內湖機房的 12U 機櫃費+頻寬費來算(不含主機跟其它硬體)，一年差不多是 2,100 美金，如果換到 EC2 的話可以買到相當不錯的規格。那像智 X 的 VPS 方案呢? 一年約 650 美金([規格](http://hosting.url.com.tw/vps.html))，戰國 X 的 VPS 的費用也差不多([規格](http://www.nss.com.tw/NSS/Server/Server_index.php?p=117)) 。

比較起來 EC2 的價錢是真的不貴，而且 EC2 現在第一年還免費。那一年後怎麼辦? 真的覺得用得不錯的話，就付費吧。

其實雲端主機最重要的是它的 scalability。

這讓我想到年輕時的一個故事，2005 年 Yahoo!有一個叫做”[咖啡聽](http://www.adol.com.tw/7thclickawards/ads/B06-250/coffeeting_offline/coffeeting.htm)“的網路活動（已下線，僅剩網頁備份），那是個滿特別的網路行銷案例，目的是為了證明「網路廣告是有效的」，所以虛擬了一個罐裝咖啡的品牌，沒有在一般的電視或平面媒體打廣告，只在 Yahoo!的首頁買了好幾百萬的網路廣告（都是雙星那種很貴的版位）。那案子的程式是我寫的，第一次遇到這麼大流量的案子，結果還是有幾次被衝到掛點。

再假想今天如果你蓋了一個線上購物的網站，一開始可能會想只買一台主機來放，但隨著會員越來越多，當你發現你的主機的硬碟燈閃不停、已經負荷不了，為了提供更好的網站瀏覽品質，也許你會想再加幾台機器來幫忙。即使如此，你可能得找人來想辦法新的主機跟原來的機器”串”起來(這個”串”其實挺複雜，這又是另一個故事了)，這過程還是免不了得停機休息一下。但如果今天用的是雲端服務，通常只要刷卡付錢就可以”無痛”的馬上切換或擴充成高檔設備，來應付更多的需求，這點自己弄主機是很不容易辦到的。

突然想起以前我老闆給過我的一句話：「**錢能解決的事都是小事**」。

這樣講起來好像真的上了雲端就變神仙一樣了，真的這麼好，那生意就全部給它做就好了! 其實 AWS 還是有些我擔心的問題的，最主要的就是因為台灣沒有 AWS 的機房，亞太地區的機房目前只有新加坡跟最近新開的東京，畢竟還是得出國，反應速度就是比台灣本地的會慢了那麼一些些。

有個檢測的工具叫做[CloudPing](http://www.cloudping.info/)，可以測試不同地區 AWS 的 Latency，我在台北用中華電信的線路測試，新加坡 133ms，日本 75ms。真希望 AWS 也來台灣開個機房啊..機會好像不大就是了。

AWS 也沒這麼弱，也是有一些配套的解決方案，例如可以用[AWS Simple Storage Service](http://aws.amazon.com/s3/) （Amazon S3）搭配 CloudFront 服用來改善速度，把靜態檔案放在 S3 上，然後 [CloudFront](http://aws.amazon.com/cloudfront/) 會找到離使用者最近的機房，並從那邊丟檔案出來。例如我常逛的[天瓏書局](http://www.tenlong.com.tw/)網站就是個很成功的例子。

AWS 的另一個問題，就是使用者的技術能力最好得有一定的網管基礎，不然玩起來會有點辛苦。另外就是因為台灣沒有 AWS 的客服，所以萬一有問題可能得打越洋電話或是英文書信往來，這也是另一個小小的門檻。

這就是我個人最近試玩的一些簡單心得，目前還沒有真正拿客戶或自己的案子在上面實戰過，應該不久的將來就會有了。

以上，才疏學淺，若內容有誤還請多多指教 :)

#### 參考資料：

- [在 Amazon EC2 安裝 Ubuntu 10.10](http://oss.tw/elgg/pg/pages/view/13584/-amazon-ec2-ubuntu-1010)，Kiang 有佛心的把 EC2 的設定過程畫面拍下來
- Ernest 大大的 blog 有一些[相關文章](http://talk.ernestchiang.com/search/label/amazon)可以參考

#### 補充：

- 感謝[johnpupu](http://blog.johnpupu.tw/)補充，其實還有[ebs](http://aws.amazon.com/ebs/)跟頻寬的費用，AWS 有做了一個[計算機](http://calculator.s3.amazonaws.com/calc5.html)，可以更方便的算出成本 :)
- [Linode](http://www.linode.com/)似乎也是 VPS 不錯的選擇，價格上也比 AWS 來得便宜一些。

