無(wú)服務(wù)器計(jì)算是一種云計(jì)算執(zhí)行模式,允許軟件開(kāi)發(fā)人員構(gòu)建和運(yùn)行應(yīng)用程序和服務(wù)器,而無(wú)需供應(yīng)或管理后端基礎(chǔ)架構(gòu)。借助無(wú)服務(wù)器技術(shù),云供應(yīng)商負(fù)責(zé)所有日?;A(chǔ)設(shè)施管理和維護(hù),包括更新操作系統(tǒng)(OS)、應(yīng)用補(bǔ)丁、管理安全、監(jiān)控系統(tǒng)和規(guī)劃容量。
借助無(wú)服務(wù)器計(jì)算,開(kāi)發(fā)人員可以通過(guò)費(fèi)用發(fā)生撥款制基礎(chǔ),這意味著他們只為所使用的服務(wù)付費(fèi)。無(wú)服務(wù)器計(jì)算的主要目標(biāo)是讓開(kāi)發(fā)人員編寫(xiě)旨在云平臺(tái)上運(yùn)行并執(zhí)行特定角色的代碼變得更加簡(jiǎn)單。
無(wú)服務(wù)器計(jì)算如何工作
有了無(wú)服務(wù)器計(jì)算,開(kāi)發(fā)人員不必管理云中的機(jī)器實(shí)例。相反,他們?cè)谠品?wù)器上運(yùn)行代碼,而不必配置或維護(hù)它們。定價(jià)基于應(yīng)用程序消耗的實(shí)際資源數(shù)量,而不是預(yù)先購(gòu)買(mǎi)的容量單位。
通常,如果開(kāi)發(fā)人員將他們的應(yīng)用程序托管在基于云的虛擬服務(wù)器上,他們必須設(shè)置和管理這些服務(wù)器,在其上安裝操作系統(tǒng),監(jiān)控它們并不斷更新軟件。
為什么無(wú)服務(wù)器計(jì)算很重要?
無(wú)服務(wù)器計(jì)算在以下方面發(fā)揮著重要作用數(shù)字化轉(zhuǎn)型。首先,它讓開(kāi)發(fā)人員專(zhuān)注于編寫(xiě)和部署代碼,而不必?fù)?dān)心支持代碼執(zhí)行的底層基礎(chǔ)設(shè)施。無(wú)論行業(yè)或公司規(guī)模如何,無(wú)服務(wù)器計(jì)算策略消除了管理開(kāi)銷(xiāo),從而提高了開(kāi)發(fā)人員的工作效率。
這對(duì)于沒(méi)有預(yù)算來(lái)實(shí)施和支持物理基礎(chǔ)架構(gòu)的初創(chuàng)公司或中小型企業(yè)尤其有用。使用無(wú)服務(wù)器,他們只需為使用的計(jì)算資源付費(fèi)。他們還可以從提供商那里挑選適合他們需求的服務(wù)。應(yīng)用程序開(kāi)發(fā)團(tuán)隊(duì)可以專(zhuān)注于面向用戶的應(yīng)用程序,而不是管理基礎(chǔ)架構(gòu)。無(wú)服務(wù)器還減輕了其他顧慮,因?yàn)樘峁┥掏ǔL峁┢渌δ?,例?
- 安全功能。
- 合規(guī)職能。
- 零服務(wù)器管理。
- 自動(dòng)縮放以滿足不斷變化的流量需求。
- 托管集成安全性。
無(wú)服務(wù)器計(jì)算的優(yōu)勢(shì)和劣勢(shì)
無(wú)服務(wù)器計(jì)算的優(yōu)勢(shì)包括:
- 成本效益。開(kāi)發(fā)人員只為代碼在無(wú)服務(wù)器計(jì)算平臺(tái)上運(yùn)行的時(shí)間付費(fèi)。他們不會(huì)為閑置的虛擬機(jī)(VM)付費(fèi)。
- 易于部署。開(kāi)發(fā)者可以在幾小時(shí)或幾天內(nèi)部署應(yīng)用,而不是幾周或幾個(gè)月。
- 自動(dòng)縮放。當(dāng)代碼不運(yùn)行時(shí),云提供商處理資源或?qū)嵗纳炜s。
- 提高生產(chǎn)力。開(kāi)發(fā)人員將大部分時(shí)間用于編寫(xiě)和開(kāi)發(fā)應(yīng)用程序,而不是處理服務(wù)器和運(yùn)行時(shí)。
然而,無(wú)服務(wù)器計(jì)算也有缺點(diǎn):
- 供應(yīng)商鎖定。轉(zhuǎn)換云提供商可能很困難,因?yàn)闊o(wú)服務(wù)器服務(wù)的交付方式因供應(yīng)商而異。
- 長(zhǎng)期運(yùn)行的應(yīng)用程序。有時(shí),使用長(zhǎng)時(shí)間運(yùn)行的任務(wù)比在虛擬機(jī)或?qū)S梅?wù)器上運(yùn)行工作負(fù)載的成本更高。
- 潛伏。使用無(wú)服務(wù)器,可伸縮的無(wú)服務(wù)器平臺(tái)第一次處理一個(gè)功能時(shí)會(huì)有時(shí)間延遲。這潛伏被稱(chēng)為冷啟動(dòng).
- 調(diào)試?yán)щy。因?yàn)闊o(wú)服務(wù)器實(shí)例在每次啟動(dòng)時(shí)都會(huì)創(chuàng)建自己的新版本,所以很難收集所需的數(shù)據(jù)調(diào)試并修復(fù)無(wú)服務(wù)器功能。
無(wú)服務(wù)器計(jì)算使用案例
無(wú)服務(wù)器計(jì)算有許多使用案例,包括以下任務(wù):
- 事件觸發(fā)計(jì)算。無(wú)服務(wù)器計(jì)算用于涉及訪問(wèn)各種文件類(lèi)型的設(shè)備的場(chǎng)景,例如上傳視頻、文本文件和圖像的移動(dòng)電話和PC。
- 物聯(lián)網(wǎng)(IoT)數(shù)據(jù)處理。無(wú)服務(wù)器計(jì)算提供了一種方式來(lái)組合和分析來(lái)自各種設(shè)備的數(shù)據(jù),然后觸發(fā)所需的事件,從而提供一種功能強(qiáng)大、成本較低的方式來(lái)管理物聯(lián)網(wǎng)。
- 移動(dòng)應(yīng)用或網(wǎng)站的后端任務(wù)。無(wú)服務(wù)器功能可以接受來(lái)自站點(diǎn)或應(yīng)用程序前端的請(qǐng)求(例如來(lái)自用戶數(shù)據(jù)庫(kù)的信息),檢索信息并將其傳回前端。
- 高容量后臺(tái)進(jìn)程。無(wú)服務(wù)器用于將數(shù)據(jù)傳輸?shù)介L(zhǎng)期存儲(chǔ);轉(zhuǎn)換、處理和分析數(shù)據(jù);并將指標(biāo)轉(zhuǎn)移到分析服務(wù)。
- 微服務(wù)支持。支持微服務(wù)架構(gòu)是無(wú)服務(wù)器計(jì)算最常見(jiàn)的用途之一。盡管開(kāi)發(fā)人員可以使用容器或平臺(tái)即服務(wù)(PaaS)來(lái)構(gòu)建和運(yùn)營(yíng)微服務(wù),他們也可以使用無(wú)服務(wù)器計(jì)算。其固有的自動(dòng)擴(kuò)展、快速供應(yīng)、少量代碼的使用以及只對(duì)所用資源收費(fèi)的定價(jià)模式對(duì)微服務(wù)支持非常有用。
- 構(gòu)建RESTful APIs。無(wú)服務(wù)器計(jì)算使構(gòu)建更容易R(shí)ESTful APIs開(kāi)發(fā)者可以按需擴(kuò)展。
- 視頻和圖像處理。無(wú)服務(wù)器計(jì)算使開(kāi)發(fā)人員能夠針對(duì)不同設(shè)備修改視頻代碼轉(zhuǎn)換,并動(dòng)態(tài)調(diào)整圖像大小。
- 編寫(xiě)多語(yǔ)言應(yīng)用程序。當(dāng)開(kāi)發(fā)人員創(chuàng)建應(yīng)用程序時(shí),首先要考慮的因素之一是使用什么語(yǔ)言。因?yàn)闊o(wú)服務(wù)器是一種多語(yǔ)言編程環(huán)境中,開(kāi)發(fā)人員可以用他們選擇的任何語(yǔ)言或框架編寫(xiě)代碼,包括計(jì)算機(jī)編程語(yǔ)言,?節(jié)點(diǎn). js,?Java 語(yǔ)言(一種計(jì)算機(jī)語(yǔ)言,尤用于創(chuàng)建網(wǎng)站)和JavaScript。
- 持續(xù)集成/持續(xù)交付。?CI/CD管道讓開(kāi)發(fā)人員發(fā)布少量代碼,這意味著他們可以每天發(fā)布錯(cuò)誤修復(fù)和其他更新。無(wú)服務(wù)器架構(gòu)可以自動(dòng)化開(kāi)發(fā)人員CI/CD管道中的許多工作流,例如觸發(fā)自動(dòng)化測(cè)試的拉式請(qǐng)求。
無(wú)服務(wù)器與其他云后端模型的對(duì)比
無(wú)服務(wù)器計(jì)算和其他云后端模型之間存在許多差異,包括基礎(chǔ)設(shè)施即服務(wù)(IaaS)、后端即服務(wù)(BaaS)和PaaS。
無(wú)服務(wù)器與IaaS
在IaaS云計(jì)算模式下,開(kāi)發(fā)人員預(yù)先購(gòu)買(mǎi)容量單位,而不是像無(wú)服務(wù)器計(jì)算那樣按需購(gòu)買(mǎi)。這意味著組織向公共云供應(yīng)商支付服務(wù)器組件的費(fèi)用,這些組件始終運(yùn)行著應(yīng)用程序的主要組件。
因此,組織的服務(wù)器管理員和技術(shù)團(tuán)隊(duì)負(fù)責(zé)估計(jì)公司的平均每月使用容量,以選擇滿足其需求的定價(jià)方案。
然而,無(wú)服務(wù)器架構(gòu)應(yīng)用僅在必要時(shí)部署,因?yàn)槭录|發(fā)應(yīng)用代碼運(yùn)行。公共云供應(yīng)商分配運(yùn)行該操作所需的資源,當(dāng)代碼運(yùn)行結(jié)束時(shí),公司停止支付費(fèi)用。
無(wú)服務(wù)器與BaaS
BaaS和無(wú)服務(wù)器計(jì)算的主要區(qū)別之一是可擴(kuò)展性。使用無(wú)服務(wù)器,應(yīng)用程序的規(guī)模會(huì)根據(jù)應(yīng)用程序的使用情況自動(dòng)增加。云提供商的基礎(chǔ)設(shè)施會(huì)自動(dòng)分配啟動(dòng)這一增長(zhǎng)所需的服務(wù)器或容器。
BaaS可能不會(huì)自動(dòng)擴(kuò)展應(yīng)用程序,因?yàn)槟承〣aaS平臺(tái)有每秒請(qǐng)求數(shù)限制,從而無(wú)法自動(dòng)擴(kuò)展。然而,許多BaaS供應(yīng)商提供的平臺(tái)非常像無(wú)服務(wù)器計(jì)算,可以自動(dòng)擴(kuò)展應(yīng)用程序。
此外,由于無(wú)服務(wù)器體系結(jié)構(gòu)是事件驅(qū)動(dòng)的,它們響應(yīng)事件而運(yùn)行。BaaS應(yīng)用通常不是事件驅(qū)動(dòng)的,這意味著它們需要更多的服務(wù)器資源。
無(wú)服務(wù)器與平臺(tái)即服務(wù)
無(wú)服務(wù)器應(yīng)用的伸縮很容易,因?yàn)樗鼈內(nèi)Q于需求,不需要開(kāi)發(fā)人員干預(yù)。
在…期間PaaS產(chǎn)品另外,要實(shí)現(xiàn)可伸縮性,開(kāi)發(fā)人員必須設(shè)置伸縮參數(shù)??偟膩?lái)說(shuō),相比無(wú)服務(wù)器計(jì)算,PaaS為開(kāi)發(fā)人員提供了對(duì)其部署環(huán)境更好的控制。
有了無(wú)服務(wù)器,開(kāi)發(fā)者只需為他們使用的東西付費(fèi)。有了PaaS,開(kāi)發(fā)者通常要為服務(wù)支付月費(fèi)——不管他們用了多少——這更容易預(yù)測(cè),最終可能會(huì)更便宜。
在無(wú)服務(wù)器架構(gòu)中需要什么
組織應(yīng)該尋找無(wú)服務(wù)器平臺(tái),幫助他們端到端地開(kāi)發(fā)應(yīng)用程序,利用跨數(shù)據(jù)中心、數(shù)據(jù)庫(kù)、存儲(chǔ)、消息傳遞、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和智能助理的服務(wù)。
一些無(wú)服務(wù)器云服務(wù)提供了可伸縮性和成本節(jié)約,但它們會(huì)帶來(lái)額外的復(fù)雜性。例如,在選擇無(wú)服務(wù)器架構(gòu)時(shí),必須考慮受約束的運(yùn)行時(shí)和供應(yīng)商鎖定。
開(kāi)發(fā)人員經(jīng)常面臨無(wú)服務(wù)器計(jì)算的簡(jiǎn)易性和速度與容器。大多數(shù)組織受益于全棧方法,而不是將無(wú)服務(wù)器局限于計(jì)算功能。
無(wú)服務(wù)器計(jì)算供應(yīng)商和語(yǔ)言
主要的無(wú)服務(wù)器計(jì)算供應(yīng)商及其支持的編程語(yǔ)言包括:
- 阿里云函數(shù)計(jì)算。這項(xiàng)服務(wù)于2017年發(fā)布,使阿里云成為首批提供無(wú)服務(wù)器計(jì)算服務(wù)的中國(guó)云廠商之一。它支持Node.js、Python、Java、超文本預(yù)處理器(PHP)和C#.
- 亞馬遜網(wǎng)絡(luò)服務(wù)(AWS) Lambda。這種服務(wù)功能(法斯)提供來(lái)自自動(dòng)警報(bào)系統(tǒng)于2014年推出。AWS Lambda函數(shù)可以用Java、Go、PowerShell、Node.js、JavaScript、C#、Python和紅寶石.
- 谷歌云功能。這項(xiàng)服務(wù)由谷歌于2017年發(fā)布,支持Node.js、JavaScript、Python、去,PHP,。NET和Ruby,但是允許無(wú)限的函數(shù)執(zhí)行時(shí)間。谷歌云函數(shù)還可以與其他Google服務(wù)交互,使開(kāi)發(fā)人員能夠快速創(chuàng)建和管理復(fù)雜的企業(yè)級(jí)應(yīng)用程序,而幾乎不用考慮底層服務(wù)器。
- IBM云功能?;贏pache OpenWhisk,IBM云函數(shù)支持JavaScript (Node.js),Swift,Python,Ruby,PHP,。NET等。它運(yùn)行用JavaScript和任何可以編譯成WebAssembly的語(yǔ)言編寫(xiě)的函數(shù)。
- 微軟Azure函數(shù)。微軟推出了Azure函數(shù)在2016年與AWS Lambda競(jìng)爭(zhēng)。它支持C#,Java,JavaScript (Node.js),PowerShell、Python和TypeScript。
- Oracle云基礎(chǔ)設(shè)施功能。OCI功能(原甲骨文功能)于2019年發(fā)布,集成了甲骨文云基礎(chǔ)設(shè)施平臺(tái)服務(wù)和SaaS應(yīng)用。Oracle Functions基于開(kāi)源Fn項(xiàng)目。它支持Java、Python、Node.js、Go、Ruby和C#。對(duì)于高級(jí)用例,開(kāi)發(fā)者可以自帶Dockerfiles和GraalVM。
保護(hù)無(wú)服務(wù)器應(yīng)用程序的最佳實(shí)踐
有一些最佳實(shí)踐來(lái)減少網(wǎng)絡(luò)攻擊和其他安全風(fēng)險(xiǎn)。它們包括以下內(nèi)容:
- 使用API。要求來(lái)自客戶端的數(shù)據(jù)通過(guò)API意味著一個(gè)額外的安全層,保護(hù)后端無(wú)服務(wù)器應(yīng)用程序。這有助于確保惡意用戶無(wú)法通過(guò)數(shù)據(jù)傳輸成功實(shí)施網(wǎng)絡(luò)攻擊。
- 優(yōu)化安全性。安全措施,如加密和多因素認(rèn)證應(yīng)該應(yīng)用于各種無(wú)服務(wù)器應(yīng)用程序資源。由于無(wú)服務(wù)器應(yīng)用可以包含許多不同的微服務(wù),因此每個(gè)微服務(wù)都必須受到保護(hù),以減少不良分子可能利用的攻擊面數(shù)量。
- 設(shè)置權(quán)限和特權(quán)。應(yīng)用程序用戶應(yīng)僅被授予執(zhí)行特定任務(wù)所需的權(quán)限和特權(quán)。這就是所謂的最小特權(quán)原則.
- 監(jiān)控和記錄使用。應(yīng)持續(xù)記錄和監(jiān)控使用無(wú)服務(wù)器功能或微服務(wù)的用戶活動(dòng),以識(shí)別錯(cuò)誤并在造成危害之前阻止可疑活動(dòng)。
- 使用虛擬私有云限制訪問(wèn)。VPCs可以配置自己的安全功能,如虛擬防火墻,以保護(hù)資源。
無(wú)服務(wù)器計(jì)算的未來(lái)
根據(jù)Mordor Intelligence的數(shù)據(jù),從2025年到2030年,全球無(wú)服務(wù)器計(jì)算市場(chǎng)預(yù)計(jì)將增長(zhǎng)23%以上報(bào)告。這意味著企業(yè)了解開(kāi)發(fā)和部署定制應(yīng)用的便利,而沒(méi)有管理硬件的負(fù)擔(dān)和成本。預(yù)計(jì)以下無(wú)服務(wù)器計(jì)算趨勢(shì)將會(huì)繼續(xù):
- 市場(chǎng)競(jìng)爭(zhēng)。云提供商將提供更多的無(wú)服務(wù)器服務(wù)來(lái)與市場(chǎng)上的其他公司競(jìng)爭(zhēng)。
- 邊緣無(wú)服務(wù)器。?邊緣計(jì)算機(jī)器學(xué)習(xí)平臺(tái)將繼續(xù)集成無(wú)服務(wù)器應(yīng)用。邊緣計(jì)算設(shè)備必須放置在離數(shù)據(jù)收集源更近的地方。無(wú)服務(wù)器使這變得更容易,因?yàn)椴恍枰锢矸?wù)器。
- 無(wú)服務(wù)器容器。隨著企業(yè)看到定制和編排容器以構(gòu)建完整的軟件應(yīng)用程序的好處,而提供商則負(fù)責(zé)底層基礎(chǔ)設(shè)施,無(wú)服務(wù)器容器的使用將會(huì)擴(kuò)大。