決戰(zhàn)云平臺(tái)之巔:Heroku VS AWS
最近在選擇部署方面有一個(gè)討論,大部分辯論集中在Heroku的相對(duì)優(yōu)勢(shì)上。我們有一些使用Heroku和亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)的體驗(yàn),讓我們深入一些對(duì)它們進(jìn)行比較。
價(jià)格
對(duì)許多客戶來(lái)說(shuō),價(jià)格是比較的唯一標(biāo)準(zhǔn),所以最好從這里開(kāi)始。從價(jià)格方面比較來(lái)說(shuō),麻煩的是沒(méi)有兩項(xiàng)服務(wù)是完全一樣的,所以很難做一個(gè)同類的對(duì)比。接下來(lái)讓我們看看我們Heroku和AWS那分別可以得到什么。
Heroku
•免費(fèi)的dyno
這是一個(gè)相當(dāng)不錯(cuò)的產(chǎn)品。Dyno可以大量運(yùn)行多種應(yīng)用:Brochure網(wǎng)站、簡(jiǎn)單的API和博客等,這些只是這個(gè)免費(fèi)dyno許多可用應(yīng)用的少數(shù)。但是,為了讓這個(gè)對(duì)比公平,我們需要知道這個(gè)免費(fèi)dyno包含什么,以及由哪些字符串連接。
•RAM:512MB
•交換空間:最大1GB
•存儲(chǔ)空間:最大100MB
•計(jì)算能力:未知,但感覺(jué)就像一個(gè)衛(wèi)星和小型EC2實(shí)例之間的東西。
缺點(diǎn)
•額外dyno/workers每月35美元
•沒(méi)有其他服務(wù)可以運(yùn)行了dyno上,dyno是嚴(yán)格的應(yīng)用程序。數(shù)據(jù)庫(kù)、后臺(tái)工作人員和其他服務(wù)的通常通過(guò)Heroku花費(fèi)額外的插件或第三方服務(wù)。
•沒(méi)有辦法增加RAM、存儲(chǔ)或CPU性能。額外的存儲(chǔ)空間,必須通過(guò)如Amazon S3等服務(wù)單獨(dú)托管。APP性能只能通過(guò)增加運(yùn)行dyno的數(shù)量來(lái)改善。
•沒(méi)有辦法安裝系統(tǒng)軟件。Heroku提供如Imagemagick的一些常用的包,但是如果你另外還需要些什么,你將不得不對(duì)其進(jìn)行破解。
亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)
亞馬遜彈性計(jì)算云(Amazon EC2),Heroku的dynos最相似。一個(gè)EC2微型實(shí)例在RAM和計(jì)算能力上相當(dāng)于一個(gè)Heroku的dynos/workers。然而,在我們的經(jīng)驗(yàn)中,一個(gè)完整的堆棧的Rails應(yīng)用性能在單個(gè)微型EC2實(shí)例里和Heroku dyno不太一樣。這可能是因?yàn)槲覀冊(cè)谕粋€(gè)實(shí)例上運(yùn)行數(shù)據(jù)庫(kù)和工作。我們可以通過(guò)刪除不必要的系統(tǒng)進(jìn)程來(lái)縮減實(shí)例,但是我們通常會(huì)伴隨一個(gè)小的EC2實(shí)例。

正如你看到的,EC2在提前支付時(shí)還是很便宜的
•平均每月27.77美元。
•RAM:1.7GB
•交換空間:可配置(大概是存儲(chǔ)空間的總量減去root分區(qū)的量)
•計(jì)算能力:一個(gè)EC2計(jì)算單位
它們很難直接比較,但其中的一些數(shù)據(jù)大大高于Heroku(1600倍的存儲(chǔ)空間)。
缺點(diǎn)
•你必須自己來(lái)部署你的應(yīng)用程序,無(wú)論是通過(guò)設(shè)置向?qū)?、教程還是手動(dòng)添加。
•你必須自己來(lái)管理系統(tǒng)。EC2有機(jī)器映像的流行的發(fā)行版如Ubuntu易被啟動(dòng),而在這之后你就要來(lái)保持它的更新和安全。
•縮放水平(即啟動(dòng)多個(gè)應(yīng)用程序?qū)嵗?不像Heroku那樣容易,Heroku只需移動(dòng)滑塊在它們的web界面。如果你想頻繁的上下擴(kuò)展,你最好熟悉操作流程。這似乎是一個(gè)很大的缺點(diǎn),但在實(shí)踐中,我們很少調(diào)整運(yùn)行一個(gè)應(yīng)用程序的實(shí)例的數(shù)量。
活生生的例子
比如我們有一個(gè)應(yīng)用程序需要10MB的數(shù)據(jù)庫(kù)存儲(chǔ)、一個(gè)工作進(jìn)程和SSL。使用Heroku,將產(chǎn)生以下費(fèi)用:
•增加數(shù)據(jù)庫(kù)存儲(chǔ)20美元。Heroku的免費(fèi)共享數(shù)據(jù)庫(kù)僅提供5MB的存儲(chǔ)。它們推出了一個(gè)新的選項(xiàng),但目前還不請(qǐng)清楚它的規(guī)格。
•SSL端點(diǎn)為20美元
•35美元的工作進(jìn)程
總計(jì):每個(gè)月需要75美元
使用亞馬遜則需要花費(fèi):
•一個(gè)隨需應(yīng)變的小型EC2實(shí)例需要57.60美元(或者一年期27.77美元;三年期17.69美元)。
從價(jià)格角度看,亞馬遜可以很容易的添加或刪除服務(wù)。而使用Heroku,你則要每個(gè)月額外支付一筆費(fèi)用。
其他注意事項(xiàng)
除了成本外,你要考慮是否可以在Heroku運(yùn)行你的應(yīng)用程序。如果你需要運(yùn)行自定義的二進(jìn)制文件或從源代碼編譯,你就必須弄清楚如何破解Heroku。如果你需要存儲(chǔ)臨時(shí)文件,你應(yīng)該知道Heroku的臨時(shí)文件系統(tǒng)不會(huì)讓這一任務(wù)很容易。你可能會(huì)下了很大的功夫,但仍然碰壁。就個(gè)人而言,我有破解法寶可以嘗試找到許多Heroku具體問(wèn)題的解決方法。
另一方面,如果你知道你的應(yīng)用程序在限制范圍內(nèi),則在Heroku上部署將是輕而易舉的。web界面美觀、CLI客戶端大部分情況下運(yùn)行良好(除了它不能管理多個(gè)Heroku賬戶),而且很容易通過(guò)附加軟件添加其他服務(wù)。但如果你認(rèn)為你的應(yīng)用程序的需求增長(zhǎng)方式不滿足于簡(jiǎn)單的水平擴(kuò)展,那么你應(yīng)該考慮AWS。當(dāng)然,你可以開(kāi)始使用Heroku隨后遷移到AWS,但是在這種情況下,你需要在兩個(gè)環(huán)境下配置你的應(yīng)用程序,并花費(fèi)時(shí)間去進(jìn)行遷移。
有其他選擇嗎?
根據(jù)我的經(jīng)驗(yàn),沒(méi)有其他平臺(tái)可以與Heroku或AWS競(jìng)爭(zhēng)。有一些Heroku不錯(cuò)的替代品如Dotcloud,但它們收到了Heroku的影響,減少與第三方產(chǎn)品的集成并只有少數(shù)的社區(qū)支持。
Rackspace是AWS最有力的競(jìng)爭(zhēng)者,但它缺乏豐富的API和支持。我們希望有更多的競(jìng)爭(zhēng)對(duì)手趕上Heroku和AWS,為我們提供更多的選擇。
結(jié)束語(yǔ)
Heroku和AWS都是優(yōu)秀的平臺(tái)。它們?cè)陉P(guān)鍵領(lǐng)域都有很大的不同,挑選適合自己的平臺(tái)才是正確的。這并沒(méi)有明確的贏家,就我個(gè)人而言,我喜歡兩個(gè)綜合起來(lái)用:小型應(yīng)用Heroku,大型應(yīng)用亞馬遜。最終獲勝的平臺(tái)將是那個(gè)最能幫助你實(shí)現(xiàn)你的目標(biāo),并可以長(zhǎng)期負(fù)擔(dān)的平臺(tái)。