溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

發(fā)布時(shí)間:2021-10-12 11:48:31 來(lái)源:億速云 閱讀:191 作者:柒染 欄目:云計(jì)算

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

Serverless 2020 : 趨勢(shì)與挑戰(zhàn)

首先,談一下對(duì)于 Serverless 在 2020 的趨勢(shì)。我大概是從 3-4 年前開(kāi)始接觸 Serverless,到了今年,發(fā)現(xiàn)有以下一些特征,我會(huì)把他們分成三個(gè)部分:

  • 第一點(diǎn),對(duì)于開(kāi)發(fā)者來(lái)說(shuō),Serverless 通過(guò)按需付費(fèi)、彈性擴(kuò)縮容的特性,極大的賦能開(kāi)發(fā)者,讓他們關(guān)注于實(shí)現(xiàn)業(yè)務(wù),而不需要考慮底層資源。

  • 第二點(diǎn),對(duì)于越來(lái)越多的企業(yè)來(lái)說(shuō),從2019年開(kāi)始,他們逐步開(kāi)始嘗試、深入使用甚至擁抱 Serverless。因?yàn)?Serverless 能夠顯著的降低成本,并且減少運(yùn)維的工作。這對(duì)于企業(yè)來(lái)說(shuō),尤其是非科技企業(yè)來(lái)說(shuō),是有非常強(qiáng)的吸引力的。并且在 2020年,已經(jīng)可以看出更多的企業(yè)在借助 Serverless 來(lái)實(shí)現(xiàn)業(yè)務(wù)了。

  • 第三點(diǎn),可以看到云服務(wù)和 Serverless 的結(jié)合越來(lái)越緊密。剛才也說(shuō)到 BaaS 本身是 Serverless 中的重要部分。那么在 2020 年,越來(lái)越多的云服務(wù),正在通過(guò) Serverless 的方式提供。比如 PG SQL 提供了 Serverless DB ,Serverless HTTP,以及上午提到的 Serverless AI 等服務(wù)。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

但是,與此同時(shí),我們也發(fā)現(xiàn),隨著這些趨勢(shì)的發(fā)展,也面臨了不少的挑戰(zhàn),依然分成三個(gè)方面來(lái)討論:

  • 對(duì)于開(kāi)發(fā)者來(lái)說(shuō),怎么提供一個(gè)完整的開(kāi)發(fā)、調(diào)試和排障的能力,并且提供更強(qiáng)大的擴(kuò)展能力,是非常關(guān)鍵的。也就是生態(tài)的建設(shè)。

  • 對(duì)于企業(yè)來(lái)說(shuō),面臨的問(wèn)題更加細(xì)節(jié),很多概念在工業(yè)化的實(shí)踐中,都會(huì)遇到很多實(shí)際的問(wèn)題。包括權(quán)限的劃分、資源的管理、還有 CI/CD 等解決方案,怎樣無(wú)縫適配到企業(yè)的架構(gòu)中呢?

  • 最后,對(duì)于云來(lái)說(shuō),結(jié)合越發(fā)緊密,但是云產(chǎn)品為了保證通用性和普適性,本身會(huì)有比較復(fù)雜的配置,并且云資源直接的組合需要帶來(lái)比較大的學(xué)習(xí)成本,也對(duì)于企業(yè)帶來(lái)了不少挑戰(zhàn)。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

Serverless 典型場(chǎng)景

那么,在和企業(yè)的實(shí)踐中,我們也發(fā)現(xiàn) Serverless 對(duì)于幾種典型的場(chǎng)景支持的非常優(yōu)秀,在這里也希望和大家分享:

  • 第一種就是 Serverless SSR,這是一個(gè)偏前端的場(chǎng)景。產(chǎn)生背景是因?yàn)?CSR 是客戶端渲染,需要瀏覽器端進(jìn)行 js 文件的執(zhí)行得到交互頁(yè)面。但是缺點(diǎn)是 SEO 不夠友善,并且首屏打開(kāi)的性能不足。但是 SSR 因?yàn)樯婕胺?wù)端,需要考慮 node server 的擴(kuò)縮容、運(yùn)維等等,讓很多開(kāi)發(fā)者望而卻步。但是 Serverless SSR 可以很好地支持這一場(chǎng)景。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

  • 第二種是結(jié)合網(wǎng)關(guān)+函數(shù),提供通用的 RESTful 平臺(tái),這種場(chǎng)景在之前 19 年一個(gè) Serverless 的調(diào)研中,是 70% 用戶都在使用的典型場(chǎng)景。也就是將前后端資源 Serverless 化,提供增刪改查的能力。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

  • 最后一個(gè),Serverless 的全棧應(yīng)用也非常有市場(chǎng)。通過(guò)提供前端、后端以及數(shù)據(jù)庫(kù)端。組合不同的組件,可以非常完美的支持全棧應(yīng)用的部署,同時(shí)也不會(huì)失去靈活性,可以很好地拆分前后端。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

部署企業(yè)級(jí) Serverless 應(yīng)用

接下來(lái)談?wù)劜渴鹌髽I(yè)級(jí)應(yīng)用的幾個(gè)訴求。這里的一些經(jīng)驗(yàn)都是在實(shí)際的上云過(guò)程中,客戶反饋,并且提到的非常多的問(wèn)題。也是我們?cè)趲涂蛻粢黄鸩榭磫?wèn)題的時(shí)候,實(shí)際解決的問(wèn)題。

比如我們的一個(gè)客戶,希望 All in Serverless,這幾個(gè)問(wèn)題他們?nèi)加龅竭^(guò),那么我們可以一起來(lái)看下是怎樣解決的。

在我們幫助企業(yè)客戶部署 Serverless 應(yīng)用的時(shí)候,需要考慮到的幾個(gè)特性:

  • 權(quán)限管理

  • 資源、環(huán)境的劃分

  • 運(yùn)維、排障能力

  • CI/CD

接下來(lái),我們逐個(gè)看一下,企業(yè)客戶在上云過(guò)程中是怎么解決這些問(wèn)題的:

權(quán)限管理

當(dāng)前在大企業(yè)中,需要使用主賬號(hào)+子賬戶的用戶、用戶組劃分權(quán)限。但是怎樣讓子賬戶之間權(quán)限隔離,更加安全的部署資源一直都是一個(gè)挑戰(zhàn)。為了確保子賬戶之間的隔離和細(xì)粒度控制,Serverless Framework 開(kāi)發(fā)平臺(tái)支持在 serverless.yml 文件中,通過(guò)指定配置角色來(lái)獲取對(duì)應(yīng)權(quán)限。同時(shí),支持運(yùn)維配置不同的角色只能被某個(gè)子賬戶調(diào)用,從而保證其嚴(yán)格隔離。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

資源/環(huán)境劃分

隨著企業(yè)客戶 Serverless 架構(gòu)上云過(guò)程中,資源的增長(zhǎng),不可避免會(huì)出現(xiàn)資源管理困難,需要有效劃分資源,隔離環(huán)境的問(wèn)題。那么,騰訊云 Serverless Framework 是怎樣解決這個(gè)問(wèn)題的呢?

主要是通過(guò) yaml 配置中對(duì) stage、 app 和 org 等幾個(gè)字段的靈活引用,并且在控制臺(tái)中提供開(kāi)箱即用的資源管理視圖的查看,從而有效的隔離不同環(huán)境中的底層資源。

如下面例子,對(duì)應(yīng)的 yaml 配置中,stage 字段可以從 .env 中讀取配置;此外對(duì)應(yīng)的資源名稱中可以用 ${app}-${stage} 的方式動(dòng)態(tài)命名。從而針對(duì)不同環(huán)境創(chuàng)建配置相同、相互隔離的資源。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

運(yùn)維/排障

運(yùn)維和排障一直是 Serverless 架構(gòu)中客戶反饋很多的問(wèn)題,主要集中于以下兩個(gè)方面:

  • 缺乏應(yīng)用級(jí)別的監(jiān)控概覽圖,配置門(mén)檻高;

  • 鏈路較長(zhǎng),不透明,故障難以排查。

針對(duì)這樣的情況,騰訊 Serverless Framework 提供了開(kāi)箱即用的應(yīng)用級(jí)別監(jiān)控視圖,并且結(jié)合高級(jí)的日志查詢功能,可以有效降低配置的學(xué)習(xí)成本,快速排障定位問(wèn)題。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

CI/CD

針對(duì)企業(yè)客戶來(lái)說(shuō),接入自動(dòng)化的 CI/CD 流程十分必要,主要有如下幾個(gè)優(yōu)勢(shì)點(diǎn):

  • 減少重復(fù)操作,提升發(fā)布效率

  • 降低風(fēng)險(xiǎn),避免手動(dòng)操作導(dǎo)致的故障

  • 流程透明,充分的校驗(yàn)和測(cè)試

那么針對(duì)企業(yè)級(jí)客戶連接 CI/CD 的訴求,Serverless Framework 既支持開(kāi)源 CI/CD 產(chǎn)品的打通,如 Jenkins, Github Actions 等,也支持和 Coding 產(chǎn)品的一鍵打通,從而針對(duì) Serverless 應(yīng)用提供了“0”配置的 CI/CD 解決方案,實(shí)現(xiàn)構(gòu)建、部署的流程的自動(dòng)化。

企業(yè)Serverless應(yīng)用實(shí)戰(zhàn)是怎樣的

實(shí)戰(zhàn):快速部署基于 Next.js 的 Serverless SSR 應(yīng)用

最后,通過(guò)一個(gè) Serverless SSR 的實(shí)戰(zhàn),演示一個(gè) SSR 應(yīng)用快速部署,并提供了動(dòng)靜分離(靜態(tài)資源托管到對(duì)象存儲(chǔ)),提供了開(kāi)箱即用的應(yīng)用級(jí)別監(jiān)控的能力。從而實(shí)現(xiàn)了完善的腳手架能力,并且可以方便的針對(duì)權(quán)限管理、灰度和 CICD 進(jìn)行打通及擴(kuò)展。

操作場(chǎng)景

騰訊云 Next.js 組件通過(guò)使用 Tencent Serverless Framework,基于云上 Serverless 服務(wù)(如 API 網(wǎng)關(guān)、云函數(shù)等),實(shí)現(xiàn)「0」配置,便捷開(kāi)發(fā),極速部署采用 Next.js 框架的網(wǎng)頁(yè)應(yīng)用,Next.js 組件支持豐富的配置擴(kuò)展,提供了目前便捷實(shí)用,開(kāi)發(fā)成本低的網(wǎng)頁(yè)應(yīng)用項(xiàng)目的開(kāi)發(fā)/托管能力。

Next.js 特性介紹:

  • 按需付費(fèi):按照請(qǐng)求的使用量進(jìn)行收費(fèi),沒(méi)有請(qǐng)求時(shí)無(wú)需付費(fèi)。

  • 「0」配置:只需要關(guān)心項(xiàng)目代碼,之后部署即可,Serverless Framework 會(huì)搞定所有配置。

  • 極速部署:部署速度快,僅需幾秒,部署您的整個(gè)應(yīng)用。

  • 實(shí)時(shí)日志:通過(guò)實(shí)時(shí)日志的輸出查看業(yè)務(wù)狀態(tài),便于直接在云端開(kāi)發(fā)應(yīng)用。

  • 云端調(diào)試:可在云端直接進(jìn)行項(xiàng)目調(diào)試,從而避免本地環(huán)境的差異。

  • 便捷協(xié)作:通過(guò)云端控制臺(tái)的狀態(tài)信息和部署日志,方便進(jìn)行多人協(xié)作開(kāi)發(fā)。

前提條件

  • 已安裝 Node.js(參考 Node.js 安裝指南)。

  • 在本地創(chuàng)建一個(gè) Next.js 項(xiàng)目并初始化:

$ mkdir serverless-next && cd serverless-next
$ npm init next-app src

操作步驟

1. 安裝

通過(guò) npm 全局安裝 Serverless CLI:

$ npm install -g serverless
2. 配置

在項(xiàng)目根目錄(此例中為serverless-next)下創(chuàng)建 serverless.yml 文件:

$ touch serverless.yml

serverless.yml 中進(jìn)行如下配置:

# serverless.yml
component: nextjs # (必填) 組件名稱,此處為nextjs
name: nextjsDemo # (必填) 實(shí)例名稱
org: orgDemo # (可選) 用于記錄組織信息,默認(rèn)值為您的騰訊云賬戶 appid
app: appDemo # (可選) 該 next.js 應(yīng)用名稱
stage: dev # (可選) 用于區(qū)分環(huán)境信息,默認(rèn)值是 dev

inputs:
  src: 
  	src: ./src
    exclude:
      - .env
  functionName: nextjsDemo
  region: ap-shanghai
  runtime: Nodejs10.15
  apigatewayConf:
    protocols:
      - http
      - https
    environment: release

查看 更多配置及說(shuō)明 >>

3. 部署

3.1 構(gòu)建靜態(tài)資源

進(jìn)入到 next 項(xiàng)目目錄下,構(gòu)建靜態(tài)資源:

$ cd src && npm run build

3.2 部署到云端

回到在 serverless.yml 文件所在的項(xiàng)目根目錄,運(yùn)行以下指令進(jìn)行部署:

$ sls deploy
serverless ? framework
Action: "deploy" - Stage: "dev" - App: "appDemo" - Instance: "nextjsDemo"

region: ap-shanghai
apigw: 
  serviceId:   service-xxxxxx
  subDomain:   service-xxxxxx-10000000.sh.apigw.tencentcs.com
  environment: release
  url:         https://service-xxxxxx-10000000.sh.apigw.tencentcs.com/release/
scf: 
  functionName: nextjsDemo
  runtime:      Nodejs10.15
  namespace:    default


59s ? nextjsDemo ? Success

部署時(shí)需要進(jìn)行身份驗(yàn)證,如您的賬號(hào)未 登錄 或 注冊(cè) 騰訊云,您可以直接通過(guò)微信掃描命令行中的二維碼進(jìn)行授權(quán)登錄和注冊(cè)。

如果希望查看更多部署過(guò)程的信息,可以通過(guò) sls deploy --debug 命令查看部署過(guò)程中的實(shí)時(shí)日志信息(slsserverless 命令的縮寫(xiě))。

4. 開(kāi)發(fā)調(diào)試

部署了 Next.js 應(yīng)用后,可以通過(guò)開(kāi)發(fā)調(diào)試能力對(duì)該項(xiàng)目進(jìn)行二次開(kāi)發(fā),從而開(kāi)發(fā)一個(gè)生產(chǎn)應(yīng)用。在本地修改和更新代碼后,不需要每次都運(yùn)行 serverless deploy 命令來(lái)反復(fù)部署。您可以直接通過(guò) serverless dev 命令對(duì)本地代碼的改動(dòng)進(jìn)行檢測(cè)和自動(dòng)上傳。 可以通過(guò)在 serverless.yml文件所在的目錄下運(yùn)行 serverless dev 命令開(kāi)啟開(kāi)發(fā)調(diào)試能力。 serverless dev 同時(shí)支持實(shí)時(shí)輸出云端日志,每次部署完畢后,對(duì)項(xiàng)目進(jìn)行訪問(wèn),即可在命令行中實(shí)時(shí)輸出調(diào)用日志,便于查看業(yè)務(wù)情況和排障。

除此之外,我們經(jīng)過(guò)壓測(cè)發(fā)現(xiàn),該架構(gòu)的性能和自建 node server 相比持平,甚至在響應(yīng)時(shí)間方面更加有優(yōu)勢(shì);而在價(jià)格測(cè)算上,基于 Serverless 彈性伸縮,按需付費(fèi)的特點(diǎn),有著十分顯著的優(yōu)勢(shì)。

5. 查看部署狀態(tài)

serverless.yml 文件所在的目錄下,通過(guò)如下命令查看部署狀態(tài):

$ serverless info
serverless ? framework


Last Action:  ifo (a few seconds ago)
Deployments:  21
Status:       active

region: ap-shanghai
apigw: 
  serviceId:   service-xxxxxx
  subDomain:   service-xxxxxx-10000000.sh.apigw.tencentcs.com
  environment: release
  url:         https://service-xxxxxx-10000000.sh.apigw.tencentcs.com/release/
scf: 
  functionName: nextjsDemo
  runtime:      Nodejs10.15
  namespace:    default

nextjsDemo ? Info successfully loaded

最后,我相信 Serverless 的時(shí)代已經(jīng)到來(lái),它能夠賦能開(kāi)發(fā)者,助力企業(yè)上云,并將重新定義云的概念!

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI