開源Serverless正當(dāng)時(shí)
Linux、Kubernetes、Ansible及新近興起的Linux容器在企業(yè)中早已屢見不鮮。特別是容器技術(shù),大大提升了應(yīng)用程序部署的便捷性與執(zhí)行效率。如今,越來越多的應(yīng)用程序在構(gòu)建之初就考慮到按需自助服務(wù)、資源池與快速?gòu)椥缘群诵脑铺匦浴?/p>
與此同時(shí),也有不少企業(yè)仍在依賴傳統(tǒng)的靜態(tài)基礎(chǔ)設(shè)施配置模型支持這類動(dòng)態(tài)程度不斷提升的新型應(yīng)用。但在如今這個(gè)基于云、數(shù)據(jù)密集與事件驅(qū)動(dòng)的世界當(dāng)中,舊藥方顯然治不了新癥狀。
雖然傳統(tǒng)服務(wù)器基礎(chǔ)設(shè)施在某些工作負(fù)載中確實(shí)適用,但往往在基本思路上就與更高效率、更高敏捷性的目標(biāo)有所沖突。傳統(tǒng)服務(wù)器往往要求始終開啟,并24/7全天候全容量運(yùn)行;與之形成鮮明反差的是,這些昂貴的設(shè)備只需要偶爾處理一波短暫的容量峰值。另外,傳統(tǒng)服務(wù)器還要求開發(fā)者提前了解其基礎(chǔ)設(shè)施需求,這顯然是給開發(fā)者戴上了手銬和腳鐐。開發(fā)者希望做好自己份內(nèi)的工作,而非分神于硬件組件和其他配置。
Serverless,即無(wú)服務(wù)器計(jì)算,有助于緩解這些挑戰(zhàn)。雖然無(wú)服務(wù)器并不是什么新興概念,但其仍然沒有得到充分的運(yùn)用甚至理解。這里我們要強(qiáng)調(diào)一句:任何已經(jīng)在使用容器化應(yīng)用程序開發(fā)體系的企業(yè),都有必要認(rèn)真研究無(wú)服務(wù)器計(jì)算框架。下面,我們將具體聊聊無(wú)服務(wù)器計(jì)算是什么,企業(yè)能夠如何借此優(yōu)化自身資源利用率(包括技術(shù)和人員兩個(gè)方面),以及開源無(wú)服務(wù)器技術(shù)為什么能夠?yàn)楝F(xiàn)代應(yīng)用開發(fā)提供理想的補(bǔ)充。
定義無(wú)服務(wù)器計(jì)算
無(wú)服務(wù)器計(jì)算是一種云原生概念,使得企業(yè)能夠?qū)⒎?wù)器、數(shù)據(jù)庫(kù)甚至是應(yīng)用程序邏輯的管理工作外包給云平臺(tái)。在無(wú)服務(wù)器計(jì)算環(huán)境當(dāng)中,開發(fā)者能夠自由構(gòu)建并運(yùn)行應(yīng)用程序,而不再被迫分心于缺乏差異化意義的底層基礎(chǔ)設(shè)施。
有趣的是,無(wú)服務(wù)器計(jì)算并不是真的“沒有服務(wù)器”,正如“無(wú)線”通信其實(shí)也有線一樣。雖然最終用戶確實(shí)不必用固定線纜把筆記本電腦同路由器連接起來,但整個(gè)體系依然要靠長(zhǎng)達(dá)數(shù)千英里的光纖傳輸網(wǎng)絡(luò)請(qǐng)求。無(wú)服務(wù)器也是這個(gè)道理:服務(wù)器還是有的,只是被平臺(tái)或者云服務(wù)商從開發(fā)者那邊抽象了出來。開發(fā)人員只需要把自己的應(yīng)用程序打包到容器中,即可快速完成部署。
在處理整體式或其他遺留系統(tǒng)時(shí),這種借助容器打包應(yīng)用程序的能力尤其重要,有效消除了應(yīng)用代碼的重寫需求。與之對(duì)應(yīng),傳統(tǒng)的專有解決方案更適合從零開始構(gòu)建應(yīng)用程序。在將遺留應(yīng)用程序交由容器打包之后,這些程序即可接受Kubernetes的編排,并根據(jù)需要以事件驅(qū)動(dòng)的方式啟動(dòng)、或關(guān)閉,全程無(wú)需任何重寫。
事實(shí)上,事件驅(qū)動(dòng)模式也正是無(wú)服務(wù)器計(jì)算的核心優(yōu)勢(shì)之一。與始終開啟、24/7全天候全容量運(yùn)行的傳統(tǒng)架構(gòu)不同,無(wú)服務(wù)器資源僅在必要時(shí)啟用。無(wú)服務(wù)器對(duì)數(shù)據(jù)科學(xué)項(xiàng)目大有裨益,包括各類人工智能與機(jī)器學(xué)習(xí)負(fù)載。在這類使用場(chǎng)景下,原始數(shù)據(jù)可能需要在攝取過程中進(jìn)行轉(zhuǎn)換或塑形。使用無(wú)服務(wù)器計(jì)算,這些工作負(fù)載同樣不需要持續(xù)運(yùn)行——只在數(shù)據(jù)攝取時(shí)按需執(zhí)行即可。
Serverless 提高開發(fā)效率
擁有DevOps團(tuán)隊(duì)或基于容器開發(fā)方法的企業(yè)可能已經(jīng)為開源生態(tài)系統(tǒng)的建設(shè)投入了資金。對(duì)他們來說,使用開源無(wú)服務(wù)器模型補(bǔ)充當(dāng)前開發(fā)方法極具現(xiàn)實(shí)意義,因?yàn)檫@樣的模型能夠以更高效的方式支持原有工作。
另一方面,專有的無(wú)服務(wù)器解決方案往往迫使開發(fā)者放棄自己熟悉的代碼構(gòu)建與測(cè)試方式,這無(wú)疑是讓用戶“剛出虎穴、又入狼窩”,同樣達(dá)不到最大程度提升生產(chǎn)效率的目標(biāo)。借助開源無(wú)服務(wù)器框架,開發(fā)人員能夠繼續(xù)將現(xiàn)有工作流打包至容器當(dāng)中,以不受干擾、毫無(wú)阻礙的方式推進(jìn)工作進(jìn)程。
開源技術(shù)還能減輕對(duì)于專業(yè)技能或額外培訓(xùn)的需求。不同于很多需要額外工具(例如無(wú)服務(wù)器數(shù)據(jù)庫(kù))才能正常運(yùn)作的專有無(wú)服務(wù)器計(jì)算平臺(tái),開源解決方案不會(huì)給使用團(tuán)隊(duì)帶來任何額外的工作流程或技術(shù)挑戰(zhàn)。
雖然開源無(wú)服務(wù)器計(jì)算框架未必適合所有用例,但其在某些場(chǎng)景下確實(shí)擁有巨大的價(jià)值,例如在不同時(shí)期從多個(gè)來源提取數(shù)據(jù)。只要應(yīng)用得當(dāng),無(wú)服務(wù)器計(jì)算將迸發(fā)出難以想象的能量,幫助企業(yè)真正在生產(chǎn)效率與敏捷性之間找到完美平衡點(diǎn)。