當(dāng)前業(yè)界 Serverless 是一個熱詞,各種高大上概念的包裝,好似空中樓閣。但是絕大數(shù)的開發(fā)只能是隔岸觀花、望梅止渴。講清楚趨勢很重要,讓人落地也很重要。下面從商業(yè)側(cè)技術(shù)側(cè)的角度,以云開發(fā)為例,剖析技術(shù)的發(fā)展。
首先,我們要清楚技術(shù)的發(fā)展趨勢。首先我們看商業(yè)的發(fā)展,商業(yè)的發(fā)展一般圍繞下面4個要素展開。
商業(yè)的發(fā)展一定是依賴上下游的,那么在角色的定位中,最重要的是,你能給客戶帶來什么業(yè)務(wù)價值,能否幫助他盈利。如果這個問題能夠回答的很清楚,公司活下來是大概率事件。也就是能夠幫助客戶的實現(xiàn)業(yè)務(wù)價值。這個要求很高,也很難,尤其是技術(shù)的商業(yè)化。
云計算行業(yè)更多的是跟后面三者相關(guān)。技術(shù)很難直觀地幫客戶產(chǎn)生商業(yè)價值,這個非常難衡量。自我論證是一個非常難的過程,你很難說用了 C 家的云就帶來了多少用戶的增長,也很難說不用你這個云就會損失多少收入。往往技術(shù)的商業(yè)化第一步是“降低成本”。
降低成本這個看似簡單,其實非常難,需要做很深的技術(shù)創(chuàng)新。如果你發(fā)現(xiàn)了一個極大降低成本的方法,那么這個行業(yè)將發(fā)生巨大的改變,包括上下游關(guān)系都會被重新定義?,F(xiàn)在云服務(wù)的競爭是火熱的????,每個云廠商都在絞盡腦汁的做技術(shù)創(chuàng)新,期望通過技術(shù)創(chuàng)新降低成本。整個行業(yè),有多家云廠商是幸福的,珍惜這個還沒有完全分出勝負的年代;假如只剩寡頭,消費者沒有議價權(quán)的。所以在 IaaS(基礎(chǔ)設(shè)施即服務(wù)) 上,唯一的出路只有一個:創(chuàng)新。剖開來說就是:降本和穩(wěn)定。
提高效率很直白,就是如何讓客戶的業(yè)務(wù)發(fā)展的更快,如何讓人的效率可以提高。如下圖所示,目前絕大多數(shù)的云廠商都是做著二道販子的生意,只是這個二道販子對技術(shù)的要求比其他行業(yè)要高很多。沒有云計算的年代,就是基礎(chǔ)資源,各家自我加工。有了云計算,粗加工的工作云廠商都做了,在 IaaS 層都是標(biāo)品,但是這里的成本和收益是透明的。多少利潤空間,早就成為了行業(yè)共同的認知。所以云廠商的想獲得高額回報的出路是將資源可以做到“精細服務(wù)”,提供可以靠近業(yè)務(wù)的價值。這個過程很難,所以PaaS(平臺即服務(wù)) 和 SaaS(軟件即服務(wù))是必由之路,它們可以模糊掉一些價值評估,尤其是靠近業(yè)務(wù)的 SaaS 可以帶來溢價。
云計算基本圍繞“降本提效”展開。目前來看并不是一門可以 “快速” 掙大錢的生意,更多的是提升了行業(yè)的生產(chǎn)力。但是我們不能否認的是,未來自來水公司、燃氣公司也是可以掙錢的。
另外一個就是“體驗增強”。用戶是發(fā)展的,對美和體驗是有追求的。2000年的互聯(lián)網(wǎng)產(chǎn)品體驗估計現(xiàn)在沒有人可以瞧的上一眼。那么圍繞“體驗增強”的服務(wù),就是每一步都需要的,也是貼近客戶和用戶的。比如視頻云服務(wù),比如直播云服務(wù),CDN 服務(wù),都是體驗增強的一個表現(xiàn)。
云計算從粗加工到精細加工,再到增值服務(wù),其趨勢就是“整合云服務(wù),套餐出售”,說得更直白些就是“能不能拎包入住”,開發(fā)者不要知道細節(jié),開發(fā)者也不想觸碰細節(jié)。是不是可以從“云服務(wù)”到“應(yīng)用云”,或者說“云應(yīng)用”。
很顯然,Serverless 概念的提出,就是希望“封裝復(fù)雜,暴露簡單”。
互聯(lián)網(wǎng)從初始到高速發(fā)展,應(yīng)用和業(yè)務(wù)模型越來越復(fù)雜,對技術(shù)團隊的挑戰(zhàn)越來越大,所以崗位職能出現(xiàn)了精細分工。但是技術(shù)的發(fā)展總是會螺旋式上升,慢慢的運維開始自我革命。那能不能運維自動化,能不能 devops?再往后,研發(fā)自我革命,能不能進一步提高效率?是否可以 devopsless , 是否只需要應(yīng)用開發(fā)工程師....
所以“封裝復(fù)雜,暴露簡單”一定是技術(shù)的趨勢,也是商業(yè)化的趨勢。
Serverless 從技術(shù)層面看,是“封裝復(fù)雜,暴露簡單”;從商業(yè)角度看,則是帶動資源多次加工,精細化深加工,能不能帶動 PaaS 層服務(wù)的整合和融合。
Serverless 是一種理念,目前沒有一種標(biāo)準(zhǔn)的產(chǎn)品,有的是 FaaS (函數(shù)即服務(wù))來作為產(chǎn)品承載,有的是 FaaS + BaaS (后端即服務(wù))來作為產(chǎn)品承載。serverless.com 是不是標(biāo)準(zhǔn),需要值得思考。是不是理念的實踐和商業(yè)的落地,也需要思考。????
如下圖,是一個簡易的 FaaS 模型。
我們希望也是要求:
因此 FaaS 帶來的好處是:
結(jié)論:FaaS 整合了 IaaS 層的云服務(wù)器和網(wǎng)絡(luò),重組了計算單元。
函數(shù)只是運行邏輯的地方,光有函數(shù)是不行的。云數(shù)據(jù)庫可不可以提供?云存儲可不可以提供?監(jiān)控要不要提供?日志服務(wù)要不要提供?這時候,就會發(fā)現(xiàn) FaaS 只是一個計算容器,或者說“計算單元”。我們開發(fā)一個業(yè)務(wù),不能只做運算,不做數(shù)據(jù)存儲,不做文件存儲。
因此 BaaS(后端即服務(wù)) 服務(wù)商解決的問題就是將 PaaS(平臺即服務(wù)) 產(chǎn)品做整合,所有都在云上,不需要本地搭建和部署。性能和穩(wěn)定性、安全性由云廠商提供服務(wù)支持。
BaaS 將服務(wù)進行組裝,嘗試封裝復(fù)雜。
有了 FaaS 和 BaaS,Serverless 的理念就不再是空中樓閣了。服務(wù)的計算容器有了,或者說計算單元更加合理了,基礎(chǔ)的 IaaS 和 PaaS 層是不是也可以做融合?
以前需要關(guān)心的:
目前騰訊推出了云開發(fā)(https://cloudbase.net/),是 Serverless 的一種產(chǎn)品實現(xiàn)。這些在云開發(fā)中都不需要關(guān)心。
整合了這么多,我覺得完成了拎包入住的第一步,就是“云”側(cè) OK 了。
如上圖方式1,一般情況,使用云函數(shù)構(gòu)建 Serverless 服務(wù),云函數(shù)起到邏輯和膠水的作用。目前市面上大多數(shù) Serverless 方案都走到了這一步。那么“端”側(cè)要不要改進?比如我在安全的客戶端環(huán)境中,上傳一張圖片,要不要先寫一個云函數(shù),然后云函數(shù)再去調(diào)用數(shù)據(jù)庫服務(wù)?獲取一個列表數(shù)據(jù),是不是也得先寫個云函數(shù),然后請求函數(shù)拿到數(shù)據(jù)?
端側(cè)如何進一步提升效率,進一步整合掉。騰訊云云開發(fā)因此提供了端側(cè) SDK,例如提供 JS-SDK , 可以直接操作云數(shù)據(jù)庫,云存儲;這樣有些能力,不再需要編寫云函數(shù),可以直接在客戶端用 SDK 提供的 API 進行操作,如下圖方式2所示。那就是需要“云 + 端一體化”,也是云開發(fā)誕生的初衷,讓開發(fā)者只用關(guān)心應(yīng)用開發(fā)的最后一公里。
const tcb = require('tcb-js-sdk');
const app = tcb.init({
env: "環(huán)境ID, 環(huán)境是一個集合,包含數(shù)據(jù)庫、存儲、云函數(shù)的資源"
});
// 1. 獲取數(shù)據(jù)庫引用
var db = app.database();
//2.獲取數(shù)據(jù)庫集合
//3.條件查詢
db.collection("users")
.where({
name: 'vczero'
})
.get()
.then(res => {
console.log(res.data);
});
這樣一個客戶端工程師,就可以承擔(dān)起所有的“應(yīng)用開發(fā)”的任務(wù),協(xié)同的工種就只有自己。真正做到,SDK 在手,應(yīng)用說有就有。目前云開發(fā)提供了不只有 JS-SDK,還有 Flutter SDK、.NET SDK、Node.js SDK。
通過 Serverless 和云開發(fā)核心理念的分析,我們可以清楚的看到技術(shù)發(fā)展的大趨勢,是不可逆的:
更多建議: