Serverless 不僅在技術(shù)上也在概念上改變了我們構(gòu)建應(yīng)用的方式,這種變更已經(jīng)被邊緣計算領(lǐng)域所采用倾哺。
1. 在邊緣
邊緣計算是一種計算和存儲更接近用戶的場景璃搜。目前,大概有 10% 的企業(yè)數(shù)據(jù)是在傳統(tǒng)數(shù)據(jù)中心外部產(chǎn)生和處理的庐橙,這個規(guī)模預(yù)計在 2025 年將達(dá)到 75%。
內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)代表了邊緣計算的第一波浪潮借嗽。使用 CDN态鳖,用戶所需的數(shù)據(jù)緩存在距離用戶更近的位置,從而減少了回源時的傳輸時間恶导,提高了性能浆竭。隨著 CDN 和虛擬化技術(shù)變得越來越成熟,計算和存儲已經(jīng)逐漸移出了云數(shù)據(jù)中心的范圍惨寿。這使得計算資源可以在邊緣位置作為單獨(dú)的服務(wù)出現(xiàn)邦泄。
邊緣計算的典型應(yīng)用是實(shí)時和即時數(shù)據(jù)處理。與強(qiáng)調(diào) “大數(shù)據(jù)”的云計算不同裂垦,當(dāng)轉(zhuǎn)移到邊緣時顺囊,更多時候關(guān)注的是“即時數(shù)據(jù)”。
邊緣計算的核心在于性能優(yōu)化:即減少等待時間蕉拢,流量特碳,帶寬,地理距離晕换,能源和功率午乓。
邊緣計算帶來的延遲減少可以使物聯(lián)網(wǎng)、人工智能和機(jī)器學(xué)習(xí)中的某些應(yīng)用更加容易實(shí)現(xiàn)闸准。例如:自動化設(shè)備的實(shí)時指令益愈、遠(yuǎn)程手術(shù)和面部識別等都是在一定程度上利用邊緣計算的新興技術(shù)。
5G 的發(fā)展夷家,更快的連接性和 5G 設(shè)備的普及進(jìn)一步推動了邊緣計算的興起蒸其。邊緣計算通過使計算更接近用戶來減少延遲,而 5G 則可用于減少通信過程的延遲瘾英。 5G 和 邊緣計算一起可以將延遲降低到以前無法達(dá)到的水平枣接,從而可以催生新一代的應(yīng)用場景。
為什么是 Serverless
缺谴?
Serverless
能讓我們構(gòu)建應(yīng)用時無需考慮底層服務(wù)器但惶。Serverless
并不是真的不需要服務(wù)器耳鸯,從根本上來講,這是一項旨在通過降低總成本(Total Cost of Ownership 膀曾,TCO
)來提高敏捷性的架構(gòu)革命县爬。
簡言之,Serverless
是一種抽象添谊,通過對底層計算機(jī)的細(xì)節(jié)進(jìn)行抽象财喳,封裝成一個模型,在模型中斩狱,只需要將程序的核心代碼提供給服務(wù)提供商(如 AWS)耳高,就可以根據(jù)不同的事件來進(jìn)行運(yùn)行并響應(yīng)。
Lambda
是最廣為人知的 Serverless
所踊,即 AWS 提供的 FaaS
平臺泌枪。 Lambda
改變了我們構(gòu)建應(yīng)用程序的方式,Lambda
的函數(shù)觸發(fā)器也促進(jìn)了事件驅(qū)動架構(gòu)的發(fā)展秕岛。
技術(shù)總是周期性的
以 Web 應(yīng)用程序為例碌燕。最初,很多邏輯都存在于服務(wù)器端继薛。當(dāng)加載網(wǎng)頁時修壕,框架和模板引擎將使用數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)填充頁面的動態(tài)部分。然后將生成的渲染 HTML 頁面發(fā)送并顯示在客戶端遏考。隨著前端越來越復(fù)雜的技術(shù)演進(jìn)中慈鸠,見證了諸如 React 和 Vue 之類的 SPA 框架的出現(xiàn),并且越來越多的業(yè)務(wù)邏輯移至客戶端(CSR)诈皿。隨著時間的推移林束,負(fù)面影響逐漸體現(xiàn)出來:低端用戶的體驗變得很慢,并且嚴(yán)重影響到網(wǎng)站 SEO稽亏。后來壶冒,像 React 這樣的框架“重塑了” SSR(服務(wù)器端渲染),我們又看到了向服務(wù)器端渲染(SSR)的轉(zhuǎn)變截歉。
我們構(gòu)建整個應(yīng)用程序的方式經(jīng)歷了類似的周期胖腾。最初的計算發(fā)生在大型機(jī)上,然后隨著功能更強(qiáng)大的 PC 的出現(xiàn)而轉(zhuǎn)移到了客戶端瘪松,現(xiàn)在我們又看到了向中心云計算中心的轉(zhuǎn)移咸作。
我們將經(jīng)歷另一個循環(huán),我們將移到邊緣
真實(shí)世界的邊緣計算
智能攝像機(jī)宵睦,IoT 設(shè)備记罚,醫(yī)療設(shè)備和 CDN(如上所述)都是邊緣計算的用例。我們正在將數(shù)據(jù)處理移到更靠近生成數(shù)據(jù)的地方壳嚎。在電視直播中桐智,可以通過模型來識別跌倒的人員(即時跌倒檢測)-識別動作幾乎可以零延遲末早。在工業(yè)生產(chǎn)中,零延時的優(yōu)勢可以使得機(jī)器立刻停機(jī)说庭。
邊緣計算并非沒有風(fēng)險然磷。物聯(lián)網(wǎng)在所有行業(yè)中的迅速采用,“智能”設(shè)備的安全性問題也普遍存在刊驴。邊緣計算服務(wù)的可伸縮性可以緩解一些安全威脅姿搜,例如 DDoS,但核心計算模型必須在信任度較低(或者零信任)環(huán)境中運(yùn)行捆憎。
Serverless
邊緣 or 去中心化舅柜?
如上所述,Serverless
就是關(guān)于抽象的攻礼。開發(fā)人員可以編寫應(yīng)用程序代碼业踢,而不必關(guān)注基礎(chǔ)設(shè)施的詳細(xì)信息。 FaaS
解決方案的這種抽象礁扮,按需付費(fèi)的定價模型和按需使用的執(zhí)行模型具有與邊緣計算互補(bǔ)的概念。
在邊緣計算場景:
- 我們不必控制硬件瞬沦,這是抽象的關(guān)鍵
- 這是一個不受信任的環(huán)境-因此我們需要嚴(yán)格的沙箱環(huán)境
- 我們通常會大規(guī)模處理不可預(yù)測的實(shí)時數(shù)據(jù)太伊,因此我們需要一個高度可擴(kuò)展的彈性模型來進(jìn)行計算
邊緣計算場景下使用的計算機(jī)通常配置比較低,因此逛钻,涉及到CPU僚焦,內(nèi)存,磁盤時曙痘,應(yīng)用執(zhí)行效率必須要高芳悲,并且使用較低的內(nèi)存,磁盤边坤。
這些都是 Serverless
所面臨的挑戰(zhàn)名扛,也是 Serverless
的優(yōu)勢,所以說 Serverless
是邊緣計算的補(bǔ)充也不為過茧痒。
自推出以來肮韧,Serverless
現(xiàn)在已經(jīng)逐漸成熟。無論是在供應(yīng)商方面還是在開源領(lǐng)域旺订,用戶體驗及工具都得到了極大的改進(jìn)弄企。與此同時,開發(fā)者已經(jīng)適應(yīng)了在 Serverless
環(huán)境中工作的最佳實(shí)踐和思維模式区拳。所有這些進(jìn)步將推動邊緣計算的興起拘领。
開發(fā)人員已經(jīng)習(xí)慣于在無狀態(tài)抽象運(yùn)行時環(huán)境中進(jìn)行編碼,以及與 Serverless
數(shù)據(jù)庫和其他云原生設(shè)計模式的結(jié)合樱调。從 Serverless
計算模型到邊緣計算模型的模式轉(zhuǎn)變是微乎其微的约素,而從傳統(tǒng)的 Server 甚至 Kubernetes
環(huán)境轉(zhuǎn)變到邊緣計算是一個更大的飛躍洽瞬,無論是思維方式還是工具方面。
Lambda @ Edge
业汰,邊緣計算的 Serverless
[站外圖片上傳中...(image-f87000-1618971536465)]
Lambda @ Edge
實(shí)際上并不屬于AWS的 Serverlss
團(tuán)隊伙窃。實(shí)際上,它是 CloudFront
(CDN)產(chǎn)品样漆。 Lambda @ Edge
通過在 CDN 層中運(yùn)行为障,計算邏輯更接近用戶。它與傳統(tǒng) Lambda
非常相似放祟,我們無需管理基礎(chǔ)架構(gòu)鳍怨,只需按需付費(fèi)。
筆者經(jīng)常使用 Lambda @ Edge
來做一些安全檢查跪妥、路由和上下文特定的數(shù)據(jù)修改鞋喇、基于 React 的 SSR、經(jīng)典的圖像轉(zhuǎn)換用例眉撵、甚至用于一些基本的 A/B測試侦香。
借助 Lambda @ Edge
,代碼必須首先部署在US-East-1
纽疟,然后再分發(fā)到全球 100 多個數(shù)據(jù)中心罐韩。
將代碼分發(fā)到 100 個位置并在 CDN 層中運(yùn)行并不是很復(fù)雜,與部署 Lambda 函數(shù)幾乎相同污朽,這要?dú)w功于 Serverless 社區(qū)的多年發(fā)展散吵。
[站外圖片上傳中...(image-5e12af-1618971536465)]
Serverless.yml
定義了一個單獨(dú)的Lambda@Edge
函數(shù)
使用 Serverless
框架,我們可以定義我們的功能:聲明由 CloudFront
事件觸發(fā)的蟆肆,然后運(yùn)行一個 Serverless
部署命令矾睦。
代碼本身可以用 Python
或 JavaScript
編寫,無需處理任何手動引導(dǎo)或虛擬化問題炎功。例如枚冗,我們可以用幾行代碼逐步將流量從一個 S3(AWS 存儲服務(wù))bucket 遷移到另一個S3 bucket。
[站外圖片上傳中...(image-8ed32f-1618971536465)]
Lambda 開發(fā)者都熟悉的
handler
函數(shù)
Lambda @Edge 使用起來與 Lambda 一致亡问, 唯一的區(qū)別是官紫,它需要首先部署到 US-East-1
,并且在執(zhí)行時間州藕,CPU 和內(nèi)存上相比 Lambda 有更多的限制束世。此外,只能使用JS
或Python
(沒有其他受支持的語言或“自定義運(yùn)行時”選項)床玻,并且由于分發(fā)時間的緣故毁涉,部署/回滾會花費(fèi)更長的時間。
這是一個很好的例子锈死,說明了 Serverless
的執(zhí)行模型如何與邊緣計算的執(zhí)行環(huán)境互補(bǔ)贫堰。
Firecracker
正在解決 Serverless
在邊緣計算場景面臨的許多挑戰(zhàn)
AWS 開發(fā)了 Firecracker
作為 Lambda
&Fargate
(AWS 的計算引擎)的底層虛擬化組件穆壕。Firecracker
是一種虛擬化技術(shù),可讓工作負(fù)載在 microVM
中執(zhí)行其屏。 microVM 是輕量級 VM(虛擬機(jī))喇勋,可在保持性能和靈活性的同時提供安全性和隔離性。
通過極小的設(shè)計可以實(shí)現(xiàn)安全性和低啟動時間偎行。這樣可確保內(nèi)存占用量保持較低川背,運(yùn)行速度快且受攻擊面最小。
簡而言之蛤袒,Firecracker
帶來了更高的租戶密度(每臺計算機(jī)的 microVM 數(shù)量)熄云,更高的安全性,減少了內(nèi)存需求并縮短了啟動時間妙真。這可以通過利用 Linux KVM(內(nèi)核級別的虛擬化-內(nèi)核充當(dāng)虛擬機(jī)管理程序)來實(shí)現(xiàn)缴允,它使用 Rust 作為高性能的實(shí)現(xiàn)語言,實(shí)現(xiàn)了特定的最小功能集的 API珍德。
Firecracker
旨在改善資源受限環(huán)境中的啟動延遲练般,以實(shí)現(xiàn) Serverless
FaaS(Lambda)的功能。在低資源環(huán)境中對低延遲菱阵、強(qiáng)安全隔離和多租戶的需求與邊緣計算的需求有很大的重疊踢俄。在小型資源機(jī)器上的低信任度多租戶環(huán)境中,程序需要快速啟動晴及。
那么 Lambda @ Edge
基于 Firecracker
運(yùn)行代碼也就順理成章了〉招浚可以說是 Serverless
技術(shù)促進(jìn)邊緣計算發(fā)展的一個典型特性虑稼。
新興邊緣計算服務(wù)
除了 Lambda @ Edge
,還有許多其他 FaaS 邊緣計算平臺势木。 Fastly
和 Cloudflare Workers
是另外兩個典型的邊緣計算平臺蛛倦。
借助 Cloudflare Workers
,可以在 V8 隔離的全球網(wǎng)絡(luò)上獲得 Serverless 執(zhí)行環(huán)境啦桌。該代碼在 Cloudflare 的網(wǎng)絡(luò)上運(yùn)行(目前幾乎所有互聯(lián)網(wǎng)用戶都在幾毫秒內(nèi))溯壶,冷啟動時間不到1毫秒。支持一系列運(yùn)行時(JS甫男,Rust且改,C和C ++),并支持訪問 Cloudflare
的邊緣 K-V 存儲板驳。
對于基于邊緣的應(yīng)用來說又跛,存儲是一個有趣的挑戰(zhàn)。 Cloudflare
最近與 Fauna(一種由 API 驅(qū)動的 Serverless
事務(wù)數(shù)據(jù)庫)之類的 Serverless
數(shù)據(jù)庫提供商合作若治,以改善邊緣存儲慨蓝「谢欤基于此,邊緣計算可以與“邊緣優(yōu)先”數(shù)據(jù)庫結(jié)合使用礼烈。邊緣應(yīng)用程序通常需要計算和狀態(tài)弧满,基于 API 的 Serverless
數(shù)據(jù)庫正好可以填補(bǔ)邊緣存儲的空白。
Fastly
是另一家提供邊緣計算的廠家此熬,它提供了 Compute@Edge
平臺庭呜。作為 CDN 提供商,F(xiàn)astly 在設(shè)計時考慮到邊緣計算功能摹迷,它提供了在用戶附近運(yùn)行代碼的功能以及 CDN 的常規(guī)功能疟赊。與 Cloudflare Workers
相似,Fastly
的 Compute @ Edge
允許在 CDN 層上運(yùn)行計算邏輯-為現(xiàn)有和新應(yīng)用程序帶來圖像優(yōu)化峡碉、負(fù)載平衡近哟、安全性增強(qiáng)和地理路由等功能。
Serverless
將成為邊緣計算的推動者
我們已經(jīng)看到鲫寄,邊緣計算服務(wù)已經(jīng)在利用 Serverless
領(lǐng)域的技術(shù)優(yōu)勢吉执。
在 Serverless
開發(fā)模式下,開發(fā)人員以無狀態(tài)地来、按使用付費(fèi)戳玫、事件驅(qū)動和分布式的思維方式進(jìn)行實(shí)踐。這種模式的轉(zhuǎn)變對于啟用邊緣計算也將是關(guān)鍵未斑。除此之外咕宿,我們?yōu)?Serverless 開發(fā)的許多技術(shù)和最佳實(shí)踐將構(gòu)成邊緣計算的基礎(chǔ)。
Serverless
改變了我們構(gòu)建應(yīng)用程序的方式蜡秽,Serverless
將繼續(xù)推動邊緣計算的革命府阀。
請關(guān)注公眾號 CNCF-Knative 了解更多 Serverless & Knative 資訊