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

