[翻譯]serverless是什么

原文:https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless

概述

serverless是一個(gè)云原生開發(fā)模型,它使得開發(fā)者無(wú)需管理服務(wù)器的情況下能夠構(gòu)建以及運(yùn)行應(yīng)用。
serverless中仍然有服務(wù)器,但是服務(wù)器已經(jīng)從應(yīng)用開發(fā)中抽象出來(lái)。通常由云提供商處理服務(wù)器的配置、維護(hù)、擴(kuò)展等常規(guī)工作。開發(fā)者僅僅簡(jiǎn)單的將代碼打包到容器中進(jìn)行部署即可。
部署完成后,serverless應(yīng)用會(huì)根據(jù)需要自動(dòng)進(jìn)行擴(kuò)容以及縮容。來(lái)自于公有云serverless利用事件驅(qū)動(dòng)模型來(lái)進(jìn)行按量收費(fèi)。當(dāng)serverless函數(shù)空閑時(shí),是沒有費(fèi)用的。

serverless架構(gòu)一覽

serverless應(yīng)用和其他云計(jì)算應(yīng)用的區(qū)別是,云提供商負(fù)責(zé)云基礎(chǔ)設(shè)施以及serverless應(yīng)用的擴(kuò)縮容。部署在容器中的serverless應(yīng)用根據(jù)需要進(jìn)行啟動(dòng)。
在標(biāo)準(zhǔn)的Iaas云計(jì)算模型下,用于需要預(yù)先購(gòu)買資源。對(duì)于應(yīng)用的擴(kuò)縮容是由用戶負(fù)責(zé)。即使應(yīng)用不被使用,云基礎(chǔ)設(shè)施也需要讓應(yīng)用運(yùn)行。
相反的,serverless架構(gòu)是按需啟動(dòng)的。當(dāng)一個(gè)事件觸發(fā)代碼運(yùn)行,那么公有云提供商會(huì)動(dòng)態(tài)的分配資源,從而運(yùn)行代碼。代碼結(jié)束運(yùn)行后,用戶就沒有費(fèi)用。除了費(fèi)用和效率的好處,serverless也將開發(fā)者從服務(wù)器配置以及應(yīng)用擴(kuò)展中解脫了出來(lái)。
在serverless中,管理操作系統(tǒng),文件系統(tǒng),系統(tǒng)安全補(bǔ)丁,負(fù)載均衡,容量管理,擴(kuò)容,日志以及監(jiān)控等常規(guī)工作都由云服務(wù)商進(jìn)行提供。
構(gòu)建一個(gè)完全的serverless應(yīng)用是完全可能的,或者構(gòu)建一個(gè)部分是serverless,部分是傳統(tǒng)的微服務(wù)模型的應(yīng)用。

云提供商的角色

在serverless模型下,云提供商運(yùn)行物理服務(wù)器,并且可以代碼用戶動(dòng)態(tài)分配資源。
serverless計(jì)算通常分為兩組,BaaS和FaaS
BaaS讓開發(fā)者能夠獲取大量的第三方服務(wù)和應(yīng)用。例如,云提供商可以提供認(rèn)證服務(wù),加密服務(wù),云數(shù)據(jù)庫(kù)。在BaaS中,serverless函數(shù)常常被稱為APIs
通常情況下,當(dāng)開發(fā)者提到serverless時(shí),他們談?wù)摰氖荈aaS。在FaaS下,開發(fā)者仍然需要編寫特定的服務(wù)端邏輯,但是代碼運(yùn)行在由云提供商提供的容器中。
大量的公有云提供商提供了很多FaaS產(chǎn)品。包括AWS的AWS Lambda、Azure的Azure Functions、谷歌云的多個(gè)產(chǎn)品、IBM云的IBM Cloud Functions。
一些組織選擇開源的serverless平臺(tái)來(lái)運(yùn)行他們的FaaS環(huán)境,包括Red Hat的 OpenShift Serverless,它是建立在k8s的Knative項(xiàng)目上。

FaaS是什么

FaaS是一種事件驅(qū)動(dòng)的計(jì)算執(zhí)行模型,開發(fā)者編寫邏輯,然后運(yùn)行在由平臺(tái)完全管理的容器中,按需執(zhí)行邏輯。
相比于BaaS,F(xiàn)aaS給開發(fā)者提供了更大的自由度,開發(fā)者能夠自己編寫應(yīng)用,而不是依賴已有編寫好的應(yīng)用。
代碼在由云廠商提供的容器中運(yùn)行。特別的,這些容器有以下特點(diǎn):

  • 無(wú)狀態(tài),從而使得數(shù)據(jù)完整性更加簡(jiǎn)單
  • 短暫性,允許應(yīng)用能夠運(yùn)行特別短的時(shí)間
  • 事件觸發(fā),應(yīng)用能夠根據(jù)需要自動(dòng)運(yùn)行
  • 完全由云廠商管理,你僅僅只需要支付你需要的,而不需要支付服務(wù)器等

具體使用案例

serverless架構(gòu)是異步的、無(wú)狀態(tài)應(yīng)用理想架構(gòu),這些應(yīng)用能夠立即啟動(dòng)。同樣的,serverless同樣適合哪些不可預(yù)測(cè)消耗的應(yīng)用。
設(shè)想類似于一種處理圖片文件的批處理任務(wù),可能不經(jīng)常運(yùn)行,但是當(dāng)一批圖片文件來(lái)到時(shí),必須立即處理?;蛘哳愃茣r(shí)刻關(guān)注對(duì)于數(shù)據(jù)庫(kù)的變化有任務(wù)需要運(yùn)行的應(yīng)用。
無(wú)服務(wù)器應(yīng)用程序也非常適合涉及傳入數(shù)據(jù)流、聊天機(jī)器人、計(jì)劃任務(wù)或業(yè)務(wù)邏輯的用例。
其他一些serverless常見的用例,比如后端API和web應(yīng)用,serverless 王章等。

Knative和serverless kubernetes是什么

k8s作為運(yùn)行容器應(yīng)用的編排設(shè)施,那么作為運(yùn)行serverless環(huán)境的平臺(tái)也不足為奇了。但是k8s沒有做好原生的運(yùn)行serverless 應(yīng)用的準(zhǔn)備。
Knative是一個(gè)開源社區(qū)項(xiàng)目,它在k8s中增加了部署、允許、管理serverless應(yīng)用的組件。
Knative serverless環(huán)境能夠讓你將代碼部署到k8s平臺(tái)中。利用Knative,可以將代碼打包為鏡像,然后提交到系統(tǒng)上,從而創(chuàng)建服務(wù)。Knative能夠按需啟動(dòng)和關(guān)閉你的代碼。
Knative由三個(gè)主要部分組成:

  • Build - 將源代碼構(gòu)建到容器中的靈活方法
  • Serving - 根據(jù)請(qǐng)求需要,能夠快速的部署以及自動(dòng)擴(kuò)展容器。
  • Eventing - 一種觸發(fā)應(yīng)用的基礎(chǔ)設(shè)施,能夠消費(fèi)以及產(chǎn)生事件。應(yīng)用能夠被各種源觸發(fā),例如來(lái)自應(yīng)用的事件、來(lái)自云服務(wù)的事件等。
    不像早期的serverless框架,Knative是專門用來(lái)部署現(xiàn)代應(yīng)用的,包括從單體應(yīng)用到微服務(wù)應(yīng)用。
    Knative能夠替代FaaS,而FaaS一般是由專門的云廠商來(lái)提供的。Knative能夠運(yùn)行在任何運(yùn)行k8s的云平臺(tái)上。

優(yōu)勢(shì)與劣勢(shì)

優(yōu)勢(shì)

  • serverless計(jì)算能夠提高開發(fā)者的工作效率并且能夠降低運(yùn)維成本。將管理機(jī)器、配置等常規(guī)工作交給底層平臺(tái)后,開發(fā)者能夠更加專注于應(yīng)用。
  • serverless提高了DevOps的使用,因?yàn)樗档土碎_發(fā)者描述基礎(chǔ)設(shè)施的需要
  • 通過(guò)整合來(lái)自第三方BaaS產(chǎn)品,能夠簡(jiǎn)化應(yīng)用的開發(fā)
  • 采用serverless模型能夠降低運(yùn)營(yíng)成本,因?yàn)槟阒恍枰獮橛?jì)算時(shí)間而付費(fèi),不需要一直管理服務(wù)。

劣勢(shì)

  • 不將應(yīng)用放到自己的服務(wù)器運(yùn)行或者不能控制服務(wù)端邏輯會(huì)有缺點(diǎn)
  • 云提供商可能對(duì)于組件的集成有嚴(yán)格的限制,這會(huì)影響到應(yīng)用的靈活性。在BaaS環(huán)境中,開發(fā)者可能會(huì)對(duì)不在控制范圍的服務(wù)負(fù)有責(zé)任
  • 放棄這些控制,會(huì)導(dǎo)致綁定到特定供應(yīng)商上。更換云供應(yīng)商可能會(huì)導(dǎo)致升級(jí)系統(tǒng)從而滿足新供應(yīng)商的要求,而這會(huì)增加成本。

serverless的發(fā)展

serverless架構(gòu)和FaaS隨著容器以及云產(chǎn)品的流行而發(fā)展。
serverless 1.0 階段有一些限制,使得它不適合通用計(jì)算。serverless 1.0 有如下特點(diǎn):

  • HTTP and few other sources
  • Functions only
  • Limited execution time (5-10 minutes)
  • No orchestration
  • Limited local development experience

k8s的出現(xiàn)引領(lǐng)了serverless 1.5時(shí)代,serverless 1.5有如下特點(diǎn):

  • Knative
  • Kubernetes-based auto-scaling
  • Microservices and functions
  • Easy to debug and test locally
  • Polyglot and portable

當(dāng)前,serverless2.0正在到來(lái),云提供商已經(jīng)開始添加缺少的部分,以使無(wú)服務(wù)器適合通用業(yè)務(wù)工作負(fù)載。serverless 2.0有如下特點(diǎn):

  • Basic state handling
  • Use of enterprise integration patterns
  • Advanced messaging capabilities
  • Blended with the enterprise PaaS
  • Enterprise-ready event sources
  • State and integration
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容