馬上開(kāi)始:五種具備可行性的無(wú)服務(wù)器框架應(yīng)用方案
譯文作者:核子可樂(lè)譯
很多朋友搞不清“無(wú)服務(wù)器”與“功能即服務(wù)”架構(gòu)之間的區(qū)別。其一,無(wú)服務(wù)器其實(shí)有點(diǎn)用詞不當(dāng),其中當(dāng)然存在服務(wù)器元素,只是大家不必親自維護(hù)。您需要做的只是上傳代碼片段并由托管服務(wù)處理其余工作。
【51CTO.com快譯】很多朋友搞不清“無(wú)服務(wù)器”與“功能即服務(wù)”架構(gòu)之間的區(qū)別。其一,無(wú)服務(wù)器其實(shí)有點(diǎn)用詞不當(dāng),其中當(dāng)然存在服務(wù)器元素,只是大家不必親自維護(hù)。您需要做的只是上傳代碼片段并由托管服務(wù)處理其余工作。
不過(guò)哪些應(yīng)用程序適合這種部署方式?答案與您面對(duì)AWS或者Azure時(shí)基本相同; 這些系統(tǒng)的設(shè)計(jì)目標(biāo)都是通過(guò)具體操作觸發(fā)代碼塊。以下五種常見(jiàn)的無(wú)服務(wù)器框架可行方案相信值得您加以參考。
API
作為無(wú)服務(wù)器架構(gòu)最簡(jiǎn)單也最直接的應(yīng)用之一,我們可以通過(guò)服務(wù)或者單頁(yè)面應(yīng)用創(chuàng)建REST API以返回待消費(fèi)數(shù)據(jù)。
REST API并不難構(gòu)建。一般來(lái)講,大家只需要一套基本W(wǎng)eb框架、一套用于渲染數(shù)據(jù)返回格式的庫(kù)(例如JSON)以及用于同數(shù)據(jù)后端進(jìn)行交互的粘接代碼即可。利用無(wú)服務(wù)器架構(gòu),開(kāi)發(fā)者能夠?qū)W⒂诰帉?xiě)并部署支持該API所需要的代碼,其它任務(wù)則不再需要費(fèi)心。
REST API當(dāng)中多數(shù)需要手動(dòng)調(diào)節(jié)的功能,例如自動(dòng)規(guī)模伸縮,皆可在無(wú)服務(wù)器框架中自動(dòng)完成。另外,其按資源使用量付費(fèi)的模式意味著您能夠擁有一套輕量化且訪問(wèn)成本極低的API,且?guī)缀鯚o(wú)需任何部署工作。
創(chuàng)建webhook
這種被廣泛使用的HTTP上回調(diào)機(jī)制能夠輕松實(shí)現(xiàn)推送、管道與插件等功能,從而提升Web應(yīng)用的實(shí)用性。無(wú)服務(wù)器框架特別適用于webhook場(chǎng)景,且相關(guān)優(yōu)勢(shì)與創(chuàng)建API類似:低運(yùn)營(yíng)成本、低維護(hù)要求、可自動(dòng)規(guī)模伸縮。大家完全可以在Azure Functions上利用Node.js實(shí)現(xiàn)webhook以處理Twilio服務(wù)中的短信消息或電話呼叫。
更重要的是,大部分webhook類活動(dòng)并不需要大量代碼。因此,其非常適合由lambda式無(wú)服務(wù)器設(shè)計(jì)提供的面向功能方案實(shí)現(xiàn),從而顯著簡(jiǎn)化整個(gè)交付流程。
提供靜態(tài)內(nèi)容
無(wú)服務(wù)器架構(gòu)還提供一種簡(jiǎn)單方法以支撐靜態(tài)內(nèi)容,包括圖片、音頻或者HTML頁(yè)面等不會(huì)被應(yīng)用修改的內(nèi)容。靜態(tài)資產(chǎn)可存儲(chǔ)在多個(gè)后端當(dāng)中,包括Amazon S3存儲(chǔ)桶,并通過(guò)地理化緩存(例如Cloudflare)實(shí)現(xiàn)加速。(如果您使用S3,則可選擇Amazon Route 53以將URL映射至特定資源; 在基本場(chǎng)景下甚至完全無(wú)需涉及AWS Lambda。)
同樣的,無(wú)服務(wù)器模式的優(yōu)勢(shì)在于自動(dòng)接著各項(xiàng)組件以契合需求。我們也能夠在必要時(shí)以相對(duì)簡(jiǎn)單的方式添加動(dòng)態(tài)功能。不過(guò)在這種情況下,功能在啟動(dòng)時(shí)間可能對(duì)性能造成影響,因此需要對(duì)應(yīng)引入地理緩存機(jī)制。
單頁(yè)面應(yīng)用
這類用例可以視為上述方法的集合體。單一頁(yè)面的基礎(chǔ)資產(chǎn)可視為靜態(tài)內(nèi)容; 前端數(shù)據(jù)提供由API調(diào)用實(shí)現(xiàn)。前端的數(shù)據(jù)渲染則通過(guò)JavaScript框架完成。
優(yōu)勢(shì):應(yīng)用的每項(xiàng)元素皆可獨(dú)立實(shí)現(xiàn)并進(jìn)行獨(dú)立擴(kuò)展。弊端:應(yīng)用必須作為多項(xiàng)獨(dú)立功能的集合,而非單一統(tǒng)一項(xiàng)目。這意味著我們無(wú)法利用現(xiàn)代源代碼控制與項(xiàng)目管理技術(shù)對(duì)其進(jìn)行全面打理。另外,大家還需要引入React、Angular或者Vue.js等前端框架——不過(guò)這對(duì)于有經(jīng)驗(yàn)的Web開(kāi)發(fā)者來(lái)說(shuō)應(yīng)該不是什么問(wèn)題。
運(yùn)行在后臺(tái)的事件驅(qū)動(dòng)型應(yīng)用
無(wú)服務(wù)器應(yīng)用可響應(yīng)事件,但并不是說(shuō)這些事件就必須屬于HTTP請(qǐng)求。其可以為云服務(wù)中的事件或消息管道,也可以由運(yùn)行計(jì)劃負(fù)責(zé)觸發(fā)——大家可以借此方便地執(zhí)行被動(dòng)或者低優(yōu)先級(jí)功能。例如被上傳至S3存儲(chǔ)桶的圖像可解決對(duì)應(yīng)功能,旨在為該圖像提供對(duì)應(yīng)的元數(shù)據(jù)標(biāo)簽、大小調(diào)整并根據(jù)圖像識(shí)別或分析API的反饋進(jìn)行裁剪。
無(wú)服務(wù)器框架的突出特性在于,其中的各個(gè)組件采取松散耦合模式——或者可以將其形容為微服務(wù)形式。如果大家不希望采取這樣的組合方式或者面對(duì)的是整體式應(yīng)用的移植工作,那么無(wú)服務(wù)器架構(gòu)可能并不合適。但在另一方面,其顯然更適合支持新型、元素?cái)?shù)量較少且各組件需要獨(dú)立擴(kuò)展的應(yīng)用。
原文鏈接:
原文標(biāo)題:Build 'em now! 5 uses for serverless frameworks
原文作者:Serdar Yegulalp
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】
責(zé)任編輯:關(guān)崇
來(lái)源:
51CTO