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