當前位置:
首頁 > 科技 > Serverless 2.0 重磅發布,無伺服器時代來臨

Serverless 2.0 重磅發布,無伺服器時代來臨

| 導語據調查報告顯示,無伺服器架構市場規模在 2018 年達到 42.5億 美元,預計在 2023 年將達到149.3 億美元,複合年增長率將達 29%。成本和效率兩大原因促使無伺服器架構的市場規模正在快速增長,並將成為下一代雲計算服務的主流形態。在上海召開的 KubeCon 2019大會上,騰訊雲重磅發布了Serverless 2.0,並對 Serverless2.0 做了技術角度的深度剖析,以下是相關內容。

6月24日,在上海召開的 KubeCon 2019大會上,騰訊雲技術總監 Yunong Xiao 發表了《Back From the Future: A Time Traveler"s Take on Serverless》的演講主題。他表示:Serverless 帶來了成本和效率的改變,無伺服器的產品和生態正走向成熟,並逐步承載起企業核心業務。

Serverless 2.0 重磅發布

Serverless 服務幫助用戶從繁冗的開發配置工作中解放出來,沒有任何的基礎設施建設、管理與運維開銷,開發者僅需關注業務代碼邏輯的編寫,這種模服務式能夠極大降低研發門檻,並提升業務構建效率,獲得了大量企業和開發者的支持。

Serverless 無疑是下一代雲計算服務形態的趨勢,但當前複雜的企業業務系統並不能完全基於無服務來實現,我們分析主要有以下幾方面的原因:

1. 性能問題。目前無伺服器尚未完全成熟,在性能方面仍存在諸多問題,如同步業務的冷啟動延時、高並發的函數實例擴縮容,大規模業務下函數實例的集群管理等

2. 缺乏成熟的開發者生態。企業和研發採用無伺服器,需要用監控、Debug 調試、DevOps 等上下游的支持;

3. 需要理解和管理底層的基礎設施。當前 Serverless 架構下,客戶依然會感知到無伺服器集群和資源的存在。

而針對當前企業業務系統不能全面向無伺服器轉移的問題,騰訊雲正在進行持續探索研究,並在上海召開的 KubeCon 2019 大會上,重磅發布了下一代無伺服器的發展形態:Serverless 2.0。

關於 Serverless 2.0

對於 Serverless 的概念、發展、形態、應用及優劣對比等問題,騰訊雲高級產品經理黃文俊也在大會上發表了主題為《下一代無伺服器的發展形態:Serverless 2.0》的演講,以下是具體的內容

Serverless 及其發展

Serverless 無伺服器概念,是指滿足無需購買、管理、運維伺服器,用戶按需使用、按使用量付費,同時平台或產品可以根據使用量自動彈性擴縮容等這幾個特性的產品或服務。

目前,Serverless 又被分為了 BaaS 和 FaaS,Baas 包含了存儲、資料庫、隊列、緩存等各種形態的 Serverless 服務;而 FaaS 通常指的是函數即服務 Function as a Service 產品。

在目前雲中提供的計算產品形態中,包含了虛擬機、容器與雲函數。無論使用虛擬機還是容器,除了要關注自身業務代碼之外,還需要有複雜的運維管理工作,例如管理啟動進程、打安全補丁、選擇開發框架、控制訪問許可權等等。

而通過使用雲函數,用戶僅需按規範進行業務代碼的編寫,就可以對外提供服務。進程的啟動時機以及運行所在的伺服器運維可以完全交給平台。但當前的雲函數產品,在開發方式上和已有的基於VM 或容器的開發方式有所不同。

在基於 VM 或容器的開發模式中,通過使用框架處理 http 請求,啟動監聽,並由外部命令或腳本來啟動進程,是當前開發者都熟悉的業務編寫模式。

而使用雲函數,http 請求會被轉變為一個個的事件,業務代碼可以直接針對事件進行處理,並按要求返回數據即可。這種由事件觸發,接收 event 消息,並根據業務邏輯進行數據處理的雲函數模型,是當前 Serverless 的主要模式。這種模式的函數,我們稱為 event function。

事件驅動的核心要素,是能夠有豐富的事件源,通過打通各種產品和雲函數,使得各產品均可以成為雲函數的事件源。這種情況下,函數就成為了產品間的粘合劑,通過承載事件或數據從一個產品流轉到另外一個產品,一個函數流轉到另外一個函數,在這個過程中實現數據處理,最終建立業務邏輯。

當前的事件觸發的 FaaS 形態,在針對業務的削峰填谷、為無狀態應用提供彈性的並行處理能力,以及類似 crontab 定時任務這些場景中,提供了極大的優勢。

但是同時,當前的雲函數,具有訪問延時高、運行時長受限、無法直接訪問、狀態持久化等問題,同時由於開發方式的變化,導致已有的業務,也無法直接向 Serverless 架構遷移,無法做到類似從虛擬機到容器的遷移。

騰訊雲 Serverless 2.0

對於已有的 Serverless 產品,以及在產品推廣過程中的業務上線的痛點、客戶聲音,我們重新梳理了 Serverless 產品的發展路線,並將其定義為 Serverless 2.0。

event function

在 Serverless 2.0中,團隊從客戶的實際使用場景出發,進行了產品的梳理。針對事件驅動的函數,定義為 event function。

事件函數仍然遵循現有的函數觸發模式,並將持續增加與騰訊雲其他各產品的對接,持續豐富應用場景,例如與日誌服務對接,提供日誌記錄處理;與資料庫對接,由數據修改動作觸發函數運行;與雲監控告警對接,針對告警事件可以進行自動化代碼處理等。

而針對 http 場景,通過提供 http function 和 http service 兩種形態,更好的支持網路訪問處理的場景。

接下來,將對 http function 和 http service 兩種模式進行進一步的解讀說明。

http function

通過使用 http function,函數可以直接提供外部可訪問到的 url 地址,無論是 app 應用,web 應用,還是微信小程序,都可以通過發起 http 調用,訪問 url 來調用函數。

而雲函數開發中通常的 event 事件結構,優化為 http request、http response 結構,更符合 Web 服務開發的習慣。通過 request 結構,可以獲取到 http 請求的相關信息,而通過 response 結構,可以自行構造出所需的 http 響應。

通過這種模式,用戶可以專註於業務邏輯的開發,而將原有基於 VM 或容器中需要考慮的擴縮容、進程啟動、並發處理等事情都交給平台來解決。

而針對實際業務,通常不僅僅是單個函數就可以實現。在 Serverless 架構中,單個 function 通常僅提供獨特單一的功能實現,整個應用通常是由多個函數、以及圍繞著函數的數據存儲、文件存儲、消息隊列、API 管理等多種資源構成。

團隊從面向 Application 角度出發,基於全套 Serverless 架構,進行了 Serverless 編排框架的設計。通過編排框架,我們可以將應用相關的資源統一到一起,不僅包括了函數,同樣會包含資料庫、文件存儲、消息隊列、API 管理等多種資源。無論從應用開發、還是調試部署,開發部署框架均將為我們帶來難度的降低、效率的提升。

http service

產品形態中提供的 http service,在同樣對外提供 url 訪問地址,支持應用直接訪問的基礎上,我們提供了針對已有代碼或框架的支持。

基於常用框架已經開發完成的業務代碼,可以無縫遷移至 http service 中,直接開始以 Serverless 模式對外提供服務。而服務中原有提供的高性能通訊協議如 websocket,gRPC,同樣可以通過 http service 對外提供。

通過使用 http service 形態,用戶無需理解容器、鏡像,而是仍然同當前 Serverless 的使用模式一樣,同使用雲函數一樣,通過提交已經開發完成的代碼包,就可以開始對外提供服務。

Serverless 2.0 上下游能力

Serverless 2.0 ,關注的不僅僅是計算、開發模式、使用方式,而是要從更全面的角度來支持 Serverless 架構或應用的發展。通過協助開發者更好的使用產品、提供全流程的開發管理支持、運維監控、調試支持等,進行全方面的發力,真正去推動 Serverless 架構或應用的落地。

工具建設

為了協助開發者更好的進行開發、調試、上線、發布,騰訊雲 Serverless 團隊從多個方面入手,提供可以滿足多種開發場景的相關工具或能力。

通過提供命令行工具,我們可以在本地開發環境中實現項目創建、本地調試打包、一鍵部署上線

而通過 vscode 插件以及正在持續擴展的更多開發 IDE 插件,函數的本地管理、開發調試、上線發布,可以通過開發 IDE 直接可視化操作。將函數的線上線下管理,與代碼的編寫調試,都整合在一個界面中完成。

為了方便用戶進行代碼的調整或查看,我們也通過提供 web ide,可以在控制台上實時的開發調試,達到與本地開發調試的相同體驗。

針對已經進行了 git 託管的代碼,團隊增加了 git 對接能力;通過與用戶 git 打通,以及依賴包的在線安裝,提供了更簡單的代碼提交部署能力,進一步簡化操作過程。

DevOps

在 Serverless 的 DevOps 方面,通過與 coding.net 的合作,我們提供了 Serverless 的 DevOps 方案。通過打通 coding.net 的 DevOps 平台,從項目創建開始,我們就可以進入完全適配 Serverless 的全管理流程中。

無論是項目管理、需求管理、代碼管理,還是 CI 持續集成、test 測試管理、製品庫管理、CD持續部署,Serverless 架構應用都可以適配整個 DevOps 流程,協助用戶構建完全雲原生的 Serverless DevOps 過程。

而如果已有 DevOps 或 CICD 系統的用戶,Serverless 2.0 也可以通過提供通用方案及工具,協助用戶完成整合及融入,在已有流程中實現針對 Serverless 應用的適配。

由於 Serverless 本身的平台調度、按需啟動的特性,無法提供和虛擬機或容器類似的登錄到環境、手工操作的能力。因此,在協助用戶排障、保障運行的透明性方面,Serverless 平台需要做的更多。

運維監控

除了通過對接雲的日誌服務和監控服務,支持基於日誌和監控的多種查詢、過濾、告警之外,我們還在規劃更多為用戶提升調試能力的工具建設,例如通過調用鏈追蹤,可以跟蹤請求的經過的各個產品、服務或函數;通過故障現場捕捉,可以抓取函數運行失敗時的現場及事件,便於進一步分析代碼故障;而應用性能分析,可以了解到函數內部的代碼或模塊性能,便於進一步提升應用性能。

多種工具的建設,目標都是期望為客戶提供更多的分析排障支持,提升運行的透明性,降低對於 Serverless 架構的運維擔憂。

技術能力

回到產品實現的底層技術上,針對騰訊雲 Serverless 2.0 中提供的三種形態,目前採用了相同的技術架構,包括了微虛擬機、容器、調度平台等多種基礎能力;通過採用相同底層能力,提供了高度的產品可擴展能力。

在 Serverless 平台通常碰到的延遲性能方面,通過應用機器學習,預熱,擴展策略等多種技術,極大的降低了冷啟動。通過當前平台分析,目前97%的事件型函數啟動延遲均低於 200ms,對業務基本做到了極低感知,滿足了各種場景的應用。

多可用區、多集群、自動運維、平台監控技術的應用,進一步的在提升整體產品的可靠性及安全性。

應用案例

原有小程序開發過程中,針對後端服務,用戶需要自行完成伺服器搭建,存儲選擇,資料庫配置、負載均衡配置等各種操作。

而通過使用小程序雲開發,用戶可以直接獲得開箱即用的雲能力。存儲、資料庫、以及作為後台服務的函數,直接由小程序端發起調用,而無需自行管理通訊鏈路、業務擴縮、訪問安全等問題。

通過與小程序開發 IDE 整合,用戶可以在 IDE 中同時完成小程序端,以及後端雲函數的開發、調試、部署,以及文件存儲、資料庫的的管理工作,大大減輕了開發及管理工作量。小程序雲開發為Serverless 概念及應用在國內市場中的推廣,起到了及其重要的作用。

結語

Serverless 2.0 在已有的事件觸發函數的基礎之上,根據實際的用戶使用場景,進一步提供了面向 HTTP 場景的 HTTP Function 和 HTTP Service,提供了高層次的通用開發框架,不僅更好的支持開發者面向 Web Service 的開發訴求,也可以支持已有業務代碼向 Serverless 架構的無縫遷移。

在技術上,我們在控制流和數據流的模塊、虛擬化層、網路層、調度層都做了徹底的重構優化,在安全,可用性,性能上也進行了全面升級。通用統一的底層架構通過採用輕量級虛擬化技術、VPC proxy 轉發方案等多種優化手段,以及針對實時自動擴縮容核心的能力優化,徹底規避了傳統無伺服器架構中,飽受詬病的冷啟動問題。

除此之外,Serverless 2.0 還關注開發者從本地開發、代碼調試、到業務的持續集成、上線運維等整個軟體開發生命周期。圍繞著 Serverless 產品,騰訊雲構建了全面的開發支持、DevOps、運維監控等能力,協助開發者可以更好的向 Serverless 架構遷移,為 Serverless承 載起企業核心業務奠定基石。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

張善友:基於Kubernetes 構建.NET Core 技術中台
TCTF 2019圓滿收官!r3kapig戰隊問鼎國際賽冠軍

TAG:雲加社區 |