像許多熱門的IT趨勢(shì)一樣,無服務(wù)器計(jì)算及其優(yōu)勢(shì)經(jīng)常被過度簡(jiǎn)化。因此,有些組織甚至在沒有強(qiáng)大的理由的情況下追趕無服務(wù)器的潮流。
無服務(wù)器部署需要考慮很多因素,但是有三個(gè)特定的警告信號(hào)表明并不適合某些企業(yè)。
1.應(yīng)用程序無法更改
如果企業(yè)打算部署第三方軟件或傳統(tǒng)應(yīng)用程序,卻無法或不會(huì)改變,企業(yè)將面臨無服務(wù)器的主要問題。來自頂級(jí)云提供商的無服務(wù)器產(chǎn)品(如AWS的Lambda,Azure Functions和Google Cloud Functions)還是相當(dāng)新穎的,但很多舊版本的軟件并沒有考慮到這些。
可以說,無服務(wù)器計(jì)算是從社交網(wǎng)絡(luò)應(yīng)用程序中派生出來的,其中最引人注目的是Twitter,它遵循事件處理模型。但是如今的大多數(shù)商業(yè)應(yīng)用程序并不是為事件處理而構(gòu)建的,這并不意味著它們不能這樣工作,而是需要改變這些應(yīng)用程序如何分解成組件,以及這些組件的邏輯。
一些用戶發(fā)現(xiàn),近三分之二的無服務(wù)器目標(biāo)應(yīng)用程序是無法更改的,無論是因?yàn)榈谌焦?yīng)商擁有它們還是需要大量時(shí)間和費(fèi)用。如果企業(yè)使用第三方軟件,需要從軟件供應(yīng)商那里尋求應(yīng)用程序可以在無服務(wù)器體系結(jié)構(gòu)上運(yùn)行的合同承諾。
2.企業(yè)的應(yīng)用程序總是運(yùn)行
當(dāng)需要應(yīng)用程序功能時(shí),企業(yè)僅需要支付無服務(wù)器計(jì)算成本,雖然這可以節(jié)約成本,但也會(huì)導(dǎo)致經(jīng)常運(yùn)行的應(yīng)用程序的成本過高。一個(gè)理想的無服務(wù)器應(yīng)用程序已經(jīng)準(zhǔn)備好在幾毫秒內(nèi)運(yùn)行,但不能經(jīng)常被調(diào)用。一個(gè)持續(xù)運(yùn)行的應(yīng)用程序?qū)⒃诖蠖鄶?shù)時(shí)間內(nèi)承擔(dān)費(fèi)用,這些費(fèi)用將遠(yuǎn)高于在云端運(yùn)行虛擬機(jī)或容器的成本。
通常企業(yè)很難知道應(yīng)用程序是需要運(yùn)行還是只是準(zhǔn)備運(yùn)行。需要運(yùn)行的一個(gè)很好的例子是在繁忙的零售商店中支持信用終端的應(yīng)用程序。這個(gè)應(yīng)用程序被稱為每一次購買,這使得它適合更加傳統(tǒng)的基礎(chǔ)設(shè)施即服務(wù)平臺(tái)。準(zhǔn)備運(yùn)行的一個(gè)例子是監(jiān)視由溫度波動(dòng)觸發(fā)的倉庫中的環(huán)境傳感器的應(yīng)用。這種類型的應(yīng)用程序需要隨時(shí)運(yùn)行,但不會(huì)經(jīng)常運(yùn)行,這使得它成為無服務(wù)器計(jì)算的理想選擇。
3.應(yīng)用程序是有狀態(tài)的
由于無服務(wù)器應(yīng)用程序按需加載和運(yùn)行,因此在使用的應(yīng)用程序之間不能保存結(jié)果。這種保存操作被稱為有狀態(tài)或場(chǎng)景。如果企業(yè)的應(yīng)用程序本質(zhì)上是有狀態(tài)的 - 就像提供某些更新或支持多步對(duì)話的任何業(yè)務(wù)應(yīng)用程序一樣,將會(huì)遠(yuǎn)離無服務(wù)器。
亞馬遜公司和微軟公司將無服務(wù)器計(jì)算描述為functional或lambda處理。這是指一種特定的編程技術(shù),它可以避免在應(yīng)用程序或應(yīng)用程序組件中從一個(gè)激活到另一個(gè)激活保存任何東西。functional或lambda邏輯始終是無狀態(tài)的,這使得應(yīng)用程序組件的任何副本都可以處理事件。
谷歌公司將無服務(wù)器稱為微服務(wù)計(jì)算。微服務(wù)也應(yīng)該是無狀態(tài)的,部分原因是應(yīng)用程序可能共享相同的邏輯,這使得保存場(chǎng)景可能會(huì)在不知情的情況下傳遞給另一個(gè)應(yīng)用程序或用戶是危險(xiǎn)的。
企業(yè)可能需要重寫部分或全部應(yīng)用程序來解決這個(gè)無狀態(tài)問題。即使不需要重寫,只需要更改應(yīng)用程序設(shè)計(jì)的一部分,就可以讓開發(fā)人員知道如何處理狀態(tài)、場(chǎng)景、lambda編程,以及微服務(wù)。
版權(quán)聲明:本文為企業(yè)網(wǎng)D1Net編譯,轉(zhuǎn)載需注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責(zé)任的權(quán)利。