高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

Amazon Web Services之門外漢心得

image

雲端,雲端,大家都在講雲端,不過我這種第三類組畢業的學生,沒有什麼的理論基礎,也不喜歡講理論(不過聽李教授說人死了之後就會在雲端了),僅就我自己最近試玩幾天Amazon的EC2心得與大家分享。

以前要蓋網站,除了要找設計師來做設計、工程師來寫程式外,還要有一個網站空間可以放你做好的東西才行。而這個”空間”的來源就有很多種,一個是自己架,不管是公司內部有專線,架在自己公司裡,還是花點錢去內湖那邊的機房租個機櫃,把機器放進去住,就是所謂的「主機代管」,不管是哪一種,都至少有養一台機器跟線路的成本。另一種是「虛擬主機」,就是跟業者租用一小塊硬碟空間,把你的網頁檔案放上去。

用房子來比喻,主機代管就像獨棟的透天厝,而虛擬主機就像在社區裡租一層公寓。各有優缺點,透天厝的優點就是可以自己高興怎麼裝潢就怎麼裝潢,而社區公寓除了樓層空間大小限制外,還有一些先天的限制,例如管委會不願意讓你破壞原有的牆壁(某些元件沒辦法安裝),或是當你在你家辦party,搞得太high(CPU或其它硬體使用率過高)影響到其它住戶,可能還會被管理員(主機商)來關切一下,或是狠一點直接把你趕走;相對的,透天厝的缺點就是成本比較高,而且還得自己小心會不會遭小偷,你可能得自己請一個看門的(MIS人員)或花錢裝一些保全設備(防火牆),而社區公寓則是同個社區的人一起share管理人員或保全的費用,成本相對較低。

其實之前一直就知道Amazon Web Services(AWS)很強大,但因為自己已經有在內湖養自己的主機所以一直沒去試試看,直到最近在某次讀書會上聽了前輩們的介紹,聽起來相當心動,反正現在有第一年免費的優惠,就註冊了個帳號上去玩。註冊過程其實不會太難,就是步驟有點多,然後都是英文介面,感覺AWS真的是另一個世界..沒聽過的資訊名詞多到爆炸 :) 。在你註冊新帳號的時候,會需要你的聯絡電話跟信用卡號做驗證。

那AWS的Elastic Compute Cloud(EC2) 跟前面提到的透天厝或社區公寓有什麼不同? 簡單的說,它可以同時有上述兩種方案的優點,而且成本還相當便宜。有這麼好康的事? 以下就以功能面跟成本面來說明:

以功能面來看:

EC2有好幾個等級的機器,可以依照不同的需求及預算來租用,從最便宜的Micro等級到High-Memory Instances等級(68.4 GB RAM),如果你是要大量運算的,也可以考慮High-CPU Instances。其實你在EC2啟用一個instance就等於你就擁有一台VPS了。

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(RoR)來做網路活動的後端,原因請見另一篇門外漢心得。不過國內虛擬主機很少支援RoR,又加上我喜歡每次都放一些新玩意進來做實驗,虛擬主機限制太多,所以這也是我自己養機器的最主要原因。

以成本面來看:

錢很重要,所以先來看一下價目表

它的計價單位是”小時”,主要有兩種租用方式,一個是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美金(規格),戰國X的VPS的費用也差不多(規格) 。

比較起來EC2的價錢是真的不貴,而且EC2現在第一年還免費。那一年後怎麼辦? 真的覺得用得不錯的話,就付費吧。

其實雲端主機最重要的是它的scalability。

這讓我想到年輕時的一個故事,2005年Yahoo!有一個叫做”咖啡聽“的網路活動(已下線,僅剩網頁備份),那是個滿特別的網路行銷案例,目的是為了證明「網路廣告是有效的」,所以虛擬了一個罐裝咖啡的品牌,沒有在一般的電視或平面媒體打廣告,只在Yahoo!的首頁買了好幾百萬的網路廣告(都是雙星那種很貴的版位)。那案子的程式是我寫的,第一次遇到這麼大流量的案子,結果還是有幾次被衝到掛點。

再假想今天如果你蓋了一個線上購物的網站,一開始可能會想只買一台主機來放,但隨著會員越來越多,當你發現你的主機的硬碟燈閃不停、已經負荷不了,為了提供更好的網站瀏覽品質,也許你會想再加幾台機器來幫忙。即使如此,你可能得找人來想辦法新的主機跟原來的機器”串”起來(這個”串”其實挺複雜,這又是另一個故事了),這過程還是免不了得停機休息一下。但如果今天用的是雲端服務,通常只要刷卡付錢就可以”無痛”的馬上切換或擴充成高檔設備,來應付更多的需求,這點自己弄主機是很不容易辦到的。

突然想起以前我老闆給過我的一句話:「錢能解決的事都是小事」。

這樣講起來好像真的上了雲端就變神仙一樣了,真的這麼好,那生意就全部給它做就好了! 其實AWS還是有些我擔心的問題的,最主要的就是因為台灣沒有AWS的機房,亞太地區的機房目前只有新加坡跟最近新開的東京,畢竟還是得出國,反應速度就是比台灣本地的會慢了那麼一些些。

有個檢測的工具叫做CloudPing,可以測試不同地區AWS的Latency,我在台北用中華電信的線路測試,新加坡133ms,日本75ms。真希望AWS也來台灣開個機房啊..機會好像不大就是了。

AWS也沒這麼弱,也是有一些配套的解決方案,例如可以用AWS Simple Storage Service (Amazon S3)搭配CloudFront服用來改善速度,把靜態檔案放在S3上,然後CloudFront會找到離使用者最近的機房,並從那邊丟檔案出來。例如我常逛的天瓏書局網站就是個很成功的例子。

AWS的另一個問題,就是使用者的技術能力最好得有一定的網管基礎,不然玩起來會有點辛苦。另外就是因為台灣沒有AWS的客服,所以萬一有問題可能得打越洋電話或是英文書信往來,這也是另一個小小的門檻。

這就是我個人最近試玩的一些簡單心得,目前還沒有真正拿客戶或自己的案子在上面實戰過,應該不久的將來就會有了。

以上,才疏學淺,若內容有誤還請多多指教 :)

參考資料:

補充:

  • 感謝johnpupu補充,其實還有ebs跟頻寬的費用,AWS有做了一個計算機,可以更方便的算出成本 :)
  • Linode似乎也是VPS不錯的選擇,價格上也比AWS來得便宜一些。

Comments