無服務(wù)器計算不適合某些企業(yè)的三個警告信號
無服務(wù)器技術(shù)可以通過公共云提供商的服務(wù)更容易被企業(yè)訪問,但只是因為它是可用的,并不意味著企業(yè)就應(yīng)該使用它。
像許多熱門的IT趨勢一樣,無服務(wù)器計算及其優(yōu)勢經(jīng)常被過度簡化。因此,有些組織甚至在沒有強大的理由的情況下追趕無服務(wù)器的潮流。
無服務(wù)器部署需要考慮很多因素,但是有三個特定的警告信號表明并不適合某些企業(yè)。

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