熱度3年猛增20倍,Serverless&雲開發的技術架構全解析

騰訊雲開發TCB發表於2019-07-15

『 作為一個不斷髮展的新興技術, Serverless 熱度的制高點已然到來。』

或許,Google Trends 所顯示的 3 年猛增 20 倍的“ Serverless ” 搜尋量,可以佐證 Serverless 在整個行業中的火爆程度。

熱度3年猛增20倍,Serverless&雲開發的技術架構全解析

不僅如此,據 KBV 研究公司新發布的《全球 Serverless 架構市場》及 RightScale 雲服務狀況報告 2018 版顯示,全球 Serverless 架構的市場滲透率已超 75%,市場規模預計到 2024 年將達到 140 億美元,並將在預測期內以 23.4% 的年複合增長率增長。

作為一種雲原生的架構,Serverless 與 BaaS、FaaS 之間有何“愛恨情仇”?冤家路窄卻能完美解決前後端聯調等開發痛點,解決方案又是如何?相較於傳統開發模式,基於“無服務開發”理念的小程式·雲開發模式又“新”在何處,有何利好?下面我們從 Serverless 的架構演進來具體分析。

『 Serverless 架構詳解 』

在過去的十幾年裡 (2006 年誕生 IaaS),雲端計算的程式從物理機演進到 IaaS,再到 PaaS,已經將應用程式的執行環境和通用元件,越來越多地交給雲服務商。Serverless 進一步將主機管理、作業系統管理、資源分配、擴充套件、甚至應用邏輯的整個元件,都交付給雲服務商,在成本和運營效率方面獲得了顯著的提升。
作為一種雲原生的架構,Serverless 使得開發者在開發應用時不需部署、配置和管理傳統伺服器,轉而依賴於第三方服務,將程式碼託管到雲端平臺。

目前,業界並沒有給出明確的定義,而是把其分成兩種型別,分別為「 Backend as a Service 」 和 「 Functions as a Service 」。換一種開發者更熟知的表達方式看,也就是「 後端即服務(BaaS)」和「 功能即服務(FaaS)」。

熱度3年猛增20倍,Serverless&雲開發的技術架構全解析

Serverless=BaaS+FaaS?聽著很高深,其實很好理解。

「 BaaS 」是將應用開發中所有後端的需求,通過統一的雲平臺來解決,讓開發者無需再編寫和管理所有服務端元件。BaaS 使開發者無需編寫完整的邏輯元件,但需要將應用程式與雲服務商提供的特定介面和模型整合。

而「 FaaS 」是把函式作為一個線上服務、遠端計算服務,可以通過 API、郵件、IoT 等執行。FaaS 是一種構建和部署服務端軟體的新方式,面向部署單個的函式或者操作,是一種新的執行程式碼的託管環境。FaaS 本質上是事件驅動的,優化了函式執行時的資源使用,它的目標是在執行的時候才消費資源。

熱度3年猛增20倍,Serverless&雲開發的技術架構全解析

從表面上看,BaaS 和 FaaS 是兩碼事——前者是把應用中的各個部分完全外包出去,後者是一種新的執行程式碼的託管環境。

那麼,為什麼要把它們都劃歸為 Serverless 呢?

關鍵在於,它們都不需要開發者管理自己的伺服器主機或者伺服器程式。Serverless 並非是無伺服器,它仍然涉及伺服器,只是這個伺服器在雲上。實際上,這是一種使用服務的新方法,在很多情況下,它比自己去買伺服器更為划算,而且加快了專案上線的時間,降低了開發、維護、擴充套件的複雜性。

Serverless 技術的崛起不但讓開發者無需過多考慮伺服器問題,並且完美地解決前後端聯調等開發痛點,作為一種全新的架構,Serverless 可謂是雲端計算髮展演化的必然結果。

『 傳統開發痛點解析及解法 』

“Serverless 所提供的介面,簡化了雲端計算的程式設計,其代表了程式設計師生產力的又一次的變革,一如程式語言從彙編時代演變為高階語言時代。” 2019 年,伯克利在《將雲中的程式設計變得簡單:伯克利視角下的 Serverless 計算》中的犀利語句也論斷了 Serverless 雲時代主宰般的地位。

此前,雲端計算服務並沒有從根本上改變設計應用程式的方式。

例如,當使用 Docker 這樣的工具時,開發者在應用程式周圍放置了一個更薄的“盒子”,但它仍然是一個盒子,邏輯架構不會發生顯著的變化。再比如,在雲中託管 MySQL 例項時,開發者仍需考慮工作負載所需的虛擬機器資源,以及故障切換等問題。

現如今,這種情況在 Serverless 面前,迎刃而解。甚至在前後端分離與聯調所產生的一系列權責、溝通與除錯等開發痛點上,Serverless 也能從以下 5 個維度完美解決:

▪ 按需計費。不同於 IaaS/PaaS 預先分配計算資源的計費方式,Serverless 按請求次數及執行時間計費,一方面可以最大程度利用資源,另一方面真正的按需計費可以降低開發者的資源成本,開發者只需要為函式實際執行所消耗的資源付費,即用即付;

▪ 高效率。在 Serverless 的架構中,使用者操作的是服務化的元件,如儲存服務、授權服務等,縮短了開發週期,降低了開發難度,且避免了由基礎設施產生的延遲;

▪ 綠色計算。在 Serverless 架構下,服務商提供細力度的計算能力,最大限度地滿足開發的實時需求,資源利用率將大幅度提升;

▪ 高擴充套件。Serverless 架構的橫向擴充套件是完全自動、有彈性的,且由服務提供者所管理;

▪ 無需運維。運維的發展經歷了人肉運維、自動化運維、DevOps 和 AIOps 等階段,而 Serverless 帶來一種新的運維模式。在這種模式下,開發者只需要關心業務本身,無需運維。

正因開發痛點重重,在想要突破傳統開發模式,探索新型開發方案的過程中,開發者藉助 Serverless 技術架構,基於“無服務開發”理念創造出了一種新型開發模式——小程式·雲開發。

小程式·雲開發,是微信與騰訊雲聯合開發的原生 Serverless 雲服務,它整合了微信公眾平臺及騰訊雲兩個核心業務的技術能力,免鑑權、免後端配置和運維、一切圍繞 API 和 SDK 為核心。
以雲呼叫功能為例,只要在小程式端觸發雲函式,便將經過微信自動鑑權直接呼叫,如資料分析、客服訊息,外掛管理等開放 API 介面。這些開放介面通過系統配置、將大幅提升效率、優化體驗、降低運營成本。

熱度3年猛增20倍,Serverless&雲開發的技術架構全解析
「 那麼,在使用者量峰值過大或黑客攻擊的情況下,小程式·雲開發是如何保證後臺服務效能與安全的呢?」

首先,小程式·雲開發沒有傳統的後臺伺服器,也就沒有被 DDoS 的目標,這是從產品形態上保障使用者業務安全;其次,小程式·雲開發之間的環境是互相隔離的,即便發生攻擊,從架構上將不會相互影響;再次,小程式·雲開發服務構建在騰訊雲基礎設施之上,天然擁有快速擴容和安全防護的能力。

在使用者量突增時,小程式·雲開發的開發人員會立即通過響應的監控及告警發現流量的變化,然後確認是否需要擴容。騰訊雲基礎運維能力也保證了開發者擁有能夠快速擴充服務的能力,以避免對使用者的服務造成影響。

而在突發黑客大流量攻擊(如 DDoS)時,小程式·雲開發的開發及運維人員也會先確認遭受攻擊的真實性,當得到確認後會第一時間與騰訊雲系統運維、騰訊安全中心確認,確保已經對小程式·雲開發的伺服器加強防護,以保護系統服務安全。此外,小程式·雲開發控制檯也有響應的流量實時資料告知開發者,開發者可以據此瞭解服務的流量資料,如有異常可以聯絡小程式·雲開發官方。

『 小程式·雲開發架構詳解 』

雲開發是一種 BaaS,在引入了 Serverless 技術架構的同時,讓開發者在構建應用的過程中無需關注計算資源的獲取和運維。

在應用端,開發者可以直接使用官方提供的介面。在雲函式端,開發者可以直接使用官方提供的 Node SDK,來操作雲資源。

熱度3年猛增20倍,Serverless&雲開發的技術架構全解析

目前小程式·雲開發一共提供了三大基礎能力,分別是雲函式、資料庫、文件儲存。簡而言之,就是提供了存檔案、存資料和執行業務邏輯的能力。

其中,雲函式能力來源於騰訊雲的“無伺服器雲函式 SCF” 。通過與 SCF 的深度結合應用,可以形成一套比較完整的 Serverless 解決方案。

▪ 使用 SCF,可以讓開發者更簡單的管理服務端程式碼,無需管理或配置伺服器,只需將程式碼上傳至 SCF,就可以自動執行;

▪ 可以更高效的利用資源,按照執行時間和呼叫次數收費,程式碼不執行時不產生費用;

▪ 可以快速建立持續擴充套件的能力,每個雲函式互不影響,並行處理不同的邏輯。

此外,小程式·雲開發的資料庫能力則是基於騰訊雲的 NoSQL 資料庫服務,併相容 MongoDB 協議。每個資料庫資源都會分配一個例項 ID,每一個例項都是至少一主一從的副本集或者包含多個副本集的分片叢集,資料庫反向代理轉發請求去最優副本集。

同樣,小程式·雲開發藉助騰訊雲提供的面向非結構化資料——物件儲存(Cloud Object Storage,COS)支援文件儲存服務的檔案上傳、下載和刪除等功能,可以幫助開發者處理檔案相關的業務邏輯。所有上傳的檔案都會有一個全網唯一的檔案 ID,使用檔案 ID 可以在 image、audio 等小程式元件中直接訪問檔案。通過小程式·雲開發上傳的檔案在小程式內預設允許訪問,不需要配置 CDN 域名白名單。

2019 年 1 月,騰訊雲宣佈推出總價值超過 10 億元的“小程式·雲開發”資源扶持計劃,對超過一百萬個小程式開發者提供免費資源扶持,全面助力開發者打造優秀小程式。
小程式·雲開發將持續豐富 SDK 能力,釋放騰訊的技術價值,逐漸支援多種開發語言,讓開發更便捷。不僅如此,騰訊雲還會加快豐富雲開發的各類行業解決方案,滿足企業業務不同應用場景需求 。
未來,新的技術層出不窮,但是要知道技術始終是為人服務的。不解決人的問題,技術無法成長壯大。

將開發者的精力解放出來,讓他們投入到業務邏輯等更具價值的工作中,從根本上賦能技術發展,才是推動行業”車輪“不斷向前駛進的源動力。

如果你有關於使用雲開發CloudBase相關的技術故事/技術實戰經驗想要跟大家分享,歡迎留言聯絡我們哦~比心!

熱度3年猛增20倍,Serverless&雲開發的技術架構全解析
雲開發
Tencent CloudBase
關注我可以說是相當酷了~

相關文章