云開(kāi)發(fā) 從 Serverless 到商業(yè)

2020-07-22 15:34 更新

當(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àn)增強(qiáng)

商業(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)用”。

封裝復(fù)雜,暴露簡(jiǎn)單

很顯然,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ì)。

FaaS

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 模型。
我們希望也是要求:

  • 一個(gè)函數(shù)就是一個(gè)服務(wù),可以獨(dú)立部署、調(diào)試、監(jiān)控;當(dāng)然可以配合 API 網(wǎng)管使用;
  • 函數(shù)之間可以調(diào)用,可以抽象一些中間件的服務(wù),以函數(shù)形態(tài)存在;
  • 每個(gè)函數(shù),有流量時(shí),可以快速冷啟動(dòng),響應(yīng)要快;同時(shí)可以根據(jù)流量進(jìn)行伸縮,沒(méi)有流量可以維持冷凍狀態(tài),不需要保持資源的消耗。

因此 FaaS 帶來(lái)的好處是:

  • 高可擴(kuò)展,伸縮自動(dòng): 有洪峰就快速擴(kuò)展,無(wú)需關(guān)心峰值壓力;
  • 成本降低:資源不需要預(yù)采購(gòu),理想狀態(tài)就是有流量就消耗,沒(méi)有流量就降至 0;
  • 解構(gòu)架構(gòu):將服務(wù)拆分,架構(gòu)扁平;

結(jié)論:FaaS 整合了 IaaS 層的云服務(wù)器和網(wǎng)絡(luò),重組了計(jì)算單元。

BaaS

函數(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ù)雜。

云開(kāi)發(fā):嘗試垂直整合,做到拎包入住

有了 FaaS 和 BaaS,Serverless 的理念就不再是空中樓閣了。服務(wù)的計(jì)算容器有了,或者說(shuō)計(jì)算單元更加合理了,基礎(chǔ)的 IaaS 和 PaaS 層是不是也可以做融合?

以前需要關(guān)心的:

  • API 網(wǎng)關(guān),流量如何控制
  • 數(shù)據(jù)庫(kù)如何部署,數(shù)據(jù)庫(kù)如何優(yōu)化,分布式怎么做
  • Web 容器
  • 代碼如何構(gòu)建
  • 系統(tǒng)安全
  • 日志與監(jiān)控服務(wù)
  • 如何計(jì)算服務(wù)用量,服務(wù)器如何擴(kuò)展
  • ......

目前騰訊推出了云開(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ì),是不可逆的:

  • 成本依賴(lài)創(chuàng)新,會(huì)進(jìn)一步的壓縮;無(wú)論是機(jī)器的成本,還是人的成本;
  • 云計(jì)算服務(wù)會(huì)進(jìn)一步降低使用門(mén)檻,封裝復(fù)雜;
  • 從人肉運(yùn)維到 devops, 再到 devopsless 和 serverless,趨勢(shì)不可抗?fàn)?,先“做沒(méi)”自己,再給自己創(chuàng)造新機(jī)會(huì);能夠貼近業(yè)務(wù),幫助業(yè)務(wù)成功的云服務(wù)一定是好服務(wù)。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)