問題:哪個(gè)云平臺是應(yīng)用程序開發(fā)工作的最佳選擇? 答案:這取決于它是PaaS,還是AWS Lambda。
如果你不希望維護(hù)自己的應(yīng)用基礎(chǔ)設(shè)施,而且你正在專注于云應(yīng)用開發(fā)平臺,可能會面臨一個(gè)平臺即服務(wù)選擇(如Heroku或Cloud Foundry)的困境,以及像Amazon Web Services(AWS)Lambda這樣的無服務(wù)器平臺。但這兩個(gè)選項(xiàng)有何不同呢? 讓我們來看看。
基本計(jì)算單元:對于PaaS,計(jì)算的基本單位是應(yīng)用程序本身,你仍然需要配置實(shí)例,盡管這些實(shí)例的維護(hù)由PaaS平臺負(fù)責(zé); 對于Lambda,操作的基本單元是功能或任務(wù)。有一些實(shí)例運(yùn)行在幕后,但作為一個(gè)應(yīng)用開發(fā)人員,他們是不可見的。
任務(wù)期限:在云應(yīng)用開發(fā)平臺的世界中,PaaS適用于長時(shí)間運(yùn)行的應(yīng)用程序,無論任務(wù)是否正在運(yùn)行。Lambda用于在任務(wù)結(jié)束時(shí)具有確定終點(diǎn)的短期任務(wù)上。
必需的元數(shù)據(jù):使用PaaS以及代碼,你需要指定其他元數(shù)據(jù),如語言、框架和運(yùn)行時(shí)要求。而無服務(wù)器,所需的元數(shù)據(jù)要簡單得多。例如,對于AWS Lambda,你只需要指定身份和訪問管理角色、所需的RAM和超時(shí)間隔。對于云應(yīng)用開發(fā)平臺,無服務(wù)器更簡單,而PaaS對基礎(chǔ)設(shè)施提供了更多的控制性和靈活性。
通過RESTful API進(jìn)行公共訪問:PaaS應(yīng)用程序的代碼通過REST端點(diǎn)或網(wǎng)頁來公開。而Lambda功能只能從受信任的來源訪問,卻無法從公共互聯(lián)網(wǎng)訪問。
定價(jià)模式:使用PaaS,你可以為應(yīng)用程序使用的計(jì)算資源或?qū)嵗顿M(fèi)。使用Lambda,你只需對在應(yīng)用程序中執(zhí)行的成功的功能或任務(wù)付費(fèi)。如果你的應(yīng)用程序具有不可預(yù)知的或短期的工作負(fù)載,這可能會有很大的節(jié)省。
結(jié)論
PaaS和無服務(wù)器平臺相似,它們都抽象出底層基礎(chǔ)架構(gòu),并讓你管理應(yīng)用程序的代碼。但它們的運(yùn)作方式不同。如果你的應(yīng)用程序運(yùn)行時(shí)間長,你需要對基礎(chǔ)架構(gòu)進(jìn)行一些控制,并且希望采用更一致的支出模式,可以選擇PaaS作為云應(yīng)用開發(fā)平臺。 如果你愿意為每個(gè)任務(wù)付費(fèi),因?yàn)槟銚碛械氖嵌唐诤筒欢ㄆ诘娜蝿?wù),且希望完全無障礙地管理基礎(chǔ)設(shè)施,那么可以選擇像AWS Lambda這樣的無服務(wù)器作為云應(yīng)用開發(fā)平臺。