無服務(wù)器計(jì)算是一種軟件架構(gòu)模型,也就是用戶采用云計(jì)算服務(wù)提供商的服務(wù)器并動態(tài)管理計(jì)算資源的分配。“無服務(wù)器”這個(gè)術(shù)語是一個(gè)誤稱,因此在某種意義上,服務(wù)器仍然參與到計(jì)算過程中。此外,這種類型服務(wù)的定價(jià)基于應(yīng)用程序消耗的實(shí)際資源量而不是預(yù)先購買的容量單位。
根據(jù)調(diào)研機(jī)構(gòu)Markets and Markets公司2018年發(fā)布的調(diào)查報(bào)告,無服務(wù)器架構(gòu)市場規(guī)模在2018年為42.5億美元,預(yù)計(jì)到2023年將達(dá)到149.3億美元,在這個(gè)預(yù)測期間的復(fù)合年增長率(CAGR)為29%。預(yù)計(jì)北美地區(qū)在預(yù)測期內(nèi)將占據(jù)最大的市場份額,其部分原因是云計(jì)算服務(wù)的早期采用。
預(yù)計(jì)推動市場增長的主要因素是組織消除對服務(wù)器的管理需求,從而降低基礎(chǔ)設(shè)施成本,簡化部署、管理和執(zhí)行。微服務(wù)架構(gòu)的廣泛應(yīng)用也有助于推動增長。
Markets and Markets公司表示,自動化和集成服務(wù)在無服務(wù)器架構(gòu)的部署中發(fā)揮著重要作用。自動化服務(wù)有助于有效管理部署在混合IT平臺上的微服務(wù),以提供更快的響應(yīng),以及計(jì)算資源的最佳使用。
Gartner公司也看好無服務(wù)器計(jì)算的應(yīng)用增長。該研究機(jī)構(gòu)將無服務(wù)器計(jì)算列為其影響2019年基礎(chǔ)設(shè)施和運(yùn)營的十大趨勢之一,并指出新出現(xiàn)的軟件架構(gòu)模型將消除對基礎(chǔ)設(shè)施供應(yīng)和管理的需求。
無服務(wù)器計(jì)算對IT管理員的吸引力
德勤公司的云計(jì)算實(shí)踐主管Ken Corless表示,無服務(wù)器不僅對應(yīng)用程序開發(fā)人員很有吸引力,而且對系統(tǒng)運(yùn)營人員也很有吸引力。
無論是由超大型云計(jì)算提供商提供,還是組織采用市場上的各種解決方案實(shí)現(xiàn)內(nèi)部部署,無服務(wù)器計(jì)算的目標(biāo)都是一樣的。“組織采用自動化和自助服務(wù),以加快軟件開發(fā)生命周期。”Corless說。
對于IT管理員來說,無服務(wù)器可以減少基于票證的工作負(fù)載的“請求-響應(yīng)”周期,并允許管理員專注于更高級別的任務(wù),例如基礎(chǔ)設(shè)施設(shè)計(jì)或創(chuàng)建更多自動化。
Corless提出了兩個(gè)主要用例。一個(gè)是在應(yīng)用程序開發(fā)中,用于創(chuàng)建基于服務(wù)的現(xiàn)代松散耦合應(yīng)用程序。功能即服務(wù)(FaaS)和后端即服務(wù)(BaaS)這兩種支持無服務(wù)器計(jì)算的云服務(wù),都可以通過保持小規(guī)模團(tuán)隊(duì)而顯著提高軟件交付團(tuán)隊(duì)的生產(chǎn)力。
另一個(gè)重要的用例是系統(tǒng)管理員。“他們所尋求的自動化可以通過無服務(wù)器技術(shù)快速、輕松、漸進(jìn)地實(shí)現(xiàn)。”Corless說。例如,在德勤公司的云計(jì)算管理業(yè)務(wù)中,該公司廣泛使用無服務(wù)器來自動化產(chǎn)品的運(yùn)營。
然而,正如云計(jì)算服務(wù)一樣,在某些情況下,無服務(wù)器可能比支付虛擬機(jī)的費(fèi)用更高,Corless表示,目前在虛擬機(jī)上運(yùn)行的應(yīng)用程序,在無服務(wù)器環(huán)境中,連續(xù)使用率達(dá)到80%可能會更高。
“盡管如此,無服務(wù)器的真正承諾是讓更少的人完成IT業(yè)務(wù)的一些平凡任務(wù),例如軟件修補(bǔ)和備份。”Corless說。這有兩個(gè)好處。首先,執(zhí)行這些平凡任務(wù)的人員可以專注于在IT或企業(yè)中的其他地方創(chuàng)造價(jià)值。
Corless說,“沒有人會為那些使DNS域名系統(tǒng)發(fā)生變化而感到高興,這些人可能重新開發(fā)新功能。而推動更多自動化是人們看到的最重要的事情。”
第二個(gè)好處是,可以使中小企業(yè)也具有更強(qiáng)的自我決定能力。Corless說,“隨著基礎(chǔ)設(shè)施管理的專業(yè)知識和指南的自動化,團(tuán)隊(duì)可以自我服務(wù),并安全地做到這一點(diǎn)。然而,這通常需要一些投資來實(shí)現(xiàn)標(biāo)準(zhǔn)和指南的自動化,因?yàn)槲覀儚臒o服務(wù)器產(chǎn)品中看到的通常不夠安全,不需要某種類型的限制就無法使用。”
調(diào)研機(jī)構(gòu)IDC公司的平臺即服務(wù)研究主管Larry Carvalho說,只要應(yīng)用程序能夠利用事件驅(qū)動的計(jì)算和解耦服務(wù),這是無服務(wù)器平臺的理想選擇。
Carvalho說,最常見的用例是物聯(lián)網(wǎng)(IoT)應(yīng)用程序和需要事件驅(qū)動處理的移動后端。其他用例是批處理或流處理,用于對事件的實(shí)時(shí)反應(yīng)。
無服務(wù)器計(jì)算最佳實(shí)踐
那么組織如何幫助確保無服務(wù)器的成功?以下是專家提出的一些建議和做法,將服務(wù)器產(chǎn)品的約束帶入設(shè)計(jì)過程。
市場營銷技術(shù)提供商Cordial公司物聯(lián)網(wǎng)平臺架構(gòu)師Daniel Smith說,轉(zhuǎn)換為無服務(wù)器的工程團(tuán)隊(duì)經(jīng)常忽略即使是最靈活的產(chǎn)品也存在嚴(yán)格的限制。
Smith說,“組織要牢記無服務(wù)器只是其他人的服務(wù)器或容器,有自己的設(shè)計(jì)限制,這將對無服務(wù)器的成功有很大的幫助。在無服務(wù)器的堆棧中劃分責(zé)任的線要高得多,因此在設(shè)計(jì)和實(shí)現(xiàn)過程中需要考慮總運(yùn)行時(shí)間、消耗的CPU時(shí)間或總體內(nèi)存使用等約束。”
Cordial公司于2015年開始探索無服務(wù)器技術(shù),其目標(biāo)是在不可預(yù)測的資源使用期間建立可預(yù)測的成本模型。“作為一家初創(chuàng)企業(yè),擁有一個(gè)可預(yù)測的、基于需求的成本結(jié)構(gòu)是很有吸引力的。”Smith說。
2018年5月,該公司開始使用Cloudflare公司的Workers技術(shù)作為其部分系統(tǒng)的替代品。作為代表客戶為消費(fèi)者服務(wù)的B2B公司,Cordial公司與消費(fèi)者的互動需要盡可能快。
Smith說,“這通常需要將工作負(fù)載盡可能地靠近消費(fèi)者。”
無服務(wù)器提供了這種服務(wù)。由于Cordial公司已經(jīng)能夠減小微服務(wù)的規(guī)模,因此它愿意嘗試使用其他方式無法部署的編程語言,從而使企業(yè)能夠更快、更自信地提供更高效的產(chǎn)品。
設(shè)計(jì)有限的工作負(fù)載
Smith指出,組織應(yīng)該將無服務(wù)器架構(gòu)視為單一方法或功能的執(zhí)行引擎。
Smith說,“進(jìn)一步細(xì)化這個(gè)目標(biāo),功能的輸入和輸出應(yīng)該是可以處理的最小的可能數(shù)據(jù)。不使用無服務(wù)器功能處理數(shù)據(jù)文件,而是將每行數(shù)據(jù)單獨(dú)地執(zhí)行。”
通過減少每個(gè)工作單元的大小,可以加快開始轉(zhuǎn)向網(wǎng)絡(luò)在服務(wù)之間移動數(shù)據(jù)的速度。Smith說,“對于移動中的數(shù)據(jù),人們可以開始將網(wǎng)絡(luò)視為一種易變的存儲設(shè)施,每秒為每個(gè)網(wǎng)絡(luò)接口提供10GB的存儲。硬盤是速度最慢的系統(tǒng)組件,因此需要避免采用。”
使功能盡可能是無狀態(tài)的
應(yīng)用程序性能軟件提供商Dynatrace公司軟件工程師Daniel Dyla表示,整體應(yīng)用程序中常見的全局變量不適用于無服務(wù)器應(yīng)用程序,因?yàn)檎{(diào)用之間的全局狀態(tài)可能不會持久。
Dyla說,“為了解決這個(gè)問題,無服務(wù)器功能應(yīng)盡可能是無狀態(tài)的。如果需要狀態(tài),最好有一個(gè)功能從外部數(shù)據(jù)庫收集狀態(tài),并調(diào)用另一個(gè)執(zhí)行實(shí)際數(shù)據(jù)處理的無狀態(tài)功能。通過這種方式,企業(yè)可以將狀態(tài)隔離到指定的位置,以便更容易管理。”
Dyla說,Dynatrace公司在過去幾年中一直使用無服務(wù)器技術(shù),受到低成本、擴(kuò)展能力、事件驅(qū)動調(diào)用的吸引。該公司正在使用無服務(wù)器計(jì)算的輪詢系統(tǒng),這些系統(tǒng)需要連續(xù)運(yùn)行才能進(jìn)行批處理。
Dyla說,“我們看到的主要好處是成本低,我們的無服務(wù)器功能往往是一小段代碼,突發(fā)負(fù)載可以從零開始迅速擴(kuò)展。”
自動化部署和測試
電子發(fā)現(xiàn)軟件提供商Relativity公司高級軟件工程師Hristo Papazov表示,雖然有些工具可以輕松實(shí)現(xiàn)無服務(wù)器計(jì)算的人工部署,但部署的自動化使企業(yè)可以實(shí)現(xiàn)一致的實(shí)施,而且不會出現(xiàn)人為錯(cuò)誤。
Papazov說,“自動化還允許組織內(nèi)的其他團(tuán)隊(duì)輕松采用這些技術(shù)。”
Relativity公司正在使用來自微軟Azure云服務(wù)的無服務(wù)器技術(shù),作為通過確保其核心組件正常運(yùn)行來改善其電子發(fā)現(xiàn)平臺的客戶體驗(yàn)努力的一部分。Papazov說,該公司利用無服務(wù)器的內(nèi)部監(jiān)控工具,使用戶能夠處理大量的遙測數(shù)據(jù),以快速檢測和解決問題。
隨著無服務(wù)器應(yīng)用程序日益復(fù)雜,單元測試成為開發(fā)周期的一個(gè)關(guān)鍵部分,自動化也有助于實(shí)現(xiàn)這一點(diǎn),Papazov說,“在微軟公司推出Azure功能時(shí),進(jìn)行單元測試是非常困難的。而從那時(shí)起已經(jīng)發(fā)展了很長一段時(shí)間,現(xiàn)在向項(xiàng)目添加單元測試非常容易。”
了解現(xiàn)代應(yīng)用程序架構(gòu)
Carvalho說,管理者應(yīng)該將應(yīng)用程序分解為短期運(yùn)行、獨(dú)立、分離的服務(wù)。他說,“構(gòu)建一個(gè)無狀態(tài)應(yīng)用程序,同時(shí)利用API管理等支持服務(wù)來實(shí)現(xiàn)用戶身份的通信和安全功能。”
Carvalho表示,“可以通過提取業(yè)務(wù)邏輯,并在無服務(wù)器框架中將它們作為微服務(wù)運(yùn)行來分解連續(xù)運(yùn)行以處理傳入事務(wù)的Web應(yīng)用程序服務(wù)器。這可以消除持續(xù)運(yùn)行服務(wù)器的成本,同時(shí)將故障轉(zhuǎn)移的難題交給云計(jì)算提供商。”
使網(wǎng)絡(luò)安全成為優(yōu)先事項(xiàng)
雖然無服務(wù)器公司可能不必?fù)?dān)心修補(bǔ)服務(wù)器或運(yùn)行防病毒軟件,但基于應(yīng)用程序編程接口(API)的無服務(wù)器產(chǎn)品大大增加了解決方案的端點(diǎn)。Corless說,“如果企業(yè)的客戶或合作伙伴使用API,將會面臨更多的風(fēng)險(xiǎn)。”
企業(yè)可能需要重新考慮他們對防火墻規(guī)則的處理方式,“因?yàn)樾薷目梢钥焖僦圃鞜o法控制的混亂。”Corless說。