本篇文章為大家展示了如何分析IMWEB前端團(tuán)隊(duì)一站式Serverless開(kāi)發(fā)解決方案,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái),先為佳縣等服務(wù)建站,佳縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為佳縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
如今的 Serverless 可以說(shuō)是一大有潛力的新技術(shù)方向,尤其在當(dāng)下上云的熱潮中,Serverless 因其免運(yùn)維、自動(dòng)擴(kuò)容、支持多種編程語(yǔ)言等優(yōu)勢(shì),對(duì)前端來(lái)說(shuō),是一大提升服務(wù)開(kāi)發(fā)、維護(hù)效率的利器也是可嘗試全棧發(fā)展的方向,但也因?yàn)槠湫拢瑢?duì)落地到團(tuán)隊(duì)開(kāi)發(fā)中,結(jié)合團(tuán)隊(duì)開(kāi)發(fā)流也是遇到了一些挑戰(zhàn),下面將分享 IMWEB 團(tuán)隊(duì)對(duì) Serverless 的實(shí)踐方案
在過(guò)去一、兩年,我們團(tuán)隊(duì)在多個(gè)服務(wù)項(xiàng)目中嘗試使用 serverless,騰訊云 Serverless 提供了一站式服務(wù),通過(guò)使用該服務(wù),前端可獨(dú)立完成接口服務(wù)開(kāi)發(fā),對(duì)前端個(gè)人而言可往全棧發(fā)展,也因此可緩解團(tuán)隊(duì)后臺(tái)人力緊張問(wèn)題

在開(kāi)發(fā) Serverless 云函數(shù)的過(guò)程中,我們也遇到了對(duì)比傳統(tǒng)服務(wù),云函數(shù)開(kāi)發(fā)的一些挑戰(zhàn)點(diǎn)
前端傳統(tǒng)項(xiàng)目的開(kāi)發(fā)流模式相對(duì)已經(jīng)比較成熟,通過(guò) git 協(xié)同管理代碼, 再通過(guò) CI 來(lái)規(guī)范項(xiàng)目的部署流程,整個(gè)工作流可以查看、回滾代碼,部署也做到了自動(dòng)化

再來(lái)看云函數(shù)的開(kāi)發(fā)特點(diǎn):
云函數(shù)獨(dú)立的賬號(hào)和權(quán)限管理
以函數(shù)為單位進(jìn)行創(chuàng)建、更新和部署
創(chuàng)建網(wǎng)關(guān) API 與函數(shù)關(guān)聯(lián),借此可通過(guò)網(wǎng)關(guān) API 訪問(wèn)到云函數(shù)
以上是最基礎(chǔ)的開(kāi)發(fā)云函數(shù)三個(gè)基礎(chǔ)

而云函數(shù)的創(chuàng)建、更新有兩種方式:
騰訊云官網(wǎng)云函數(shù)控制臺(tái),可視化的操作界面,點(diǎn)擊按鈕即可創(chuàng)建、更新
通過(guò) CLI 創(chuàng)建,SERVERLESS 提供 SDK,調(diào)用 SDK 可完成自定義創(chuàng)建、更新操作,其優(yōu)點(diǎn)為靈活編寫(xiě),也易于做成工程化
考慮團(tuán)隊(duì)的協(xié)作,第二種方式通過(guò)調(diào)用 SDK 的方式因其靈活更適合定制為團(tuán)隊(duì)規(guī)范

總結(jié)下來(lái)可以看到云函數(shù)開(kāi)發(fā)的三個(gè)特性:
因其有獨(dú)立于 git 賬號(hào)的云函數(shù)賬號(hào),導(dǎo)致了云函數(shù)的代碼缺乏像 GIT 一樣可以查看歷史代碼版本,代碼修改記錄等
因其有多重方式可以用來(lái)創(chuàng)建、更新函數(shù),導(dǎo)致多人協(xié)作時(shí),有互相覆蓋云函數(shù)的風(fēng)險(xiǎn)
提供的云函數(shù)網(wǎng)關(guān),可幫助快速配置訪問(wèn)云函數(shù),而無(wú)需運(yùn)維同學(xué)幫忙做域名指向,機(jī)器申請(qǐng)等

在初期團(tuán)隊(duì)探索嘗試云函數(shù)開(kāi)發(fā)時(shí),對(duì)比傳統(tǒng)項(xiàng)目的開(kāi)發(fā)流,云函數(shù)的開(kāi)發(fā)步驟更多,也暴露出了一些缺點(diǎn):

首先有不小的學(xué)習(xí)成本,像云函數(shù)配置文件,云函數(shù)官網(wǎng)界面操作學(xué)習(xí)成本,實(shí)際使用時(shí),由于云函數(shù)網(wǎng)關(guān) API 鏈接過(guò)長(zhǎng)、域名限制等,需要配置 nginx,用特定域名訪問(wèn)云函數(shù)網(wǎng)關(guān) API,因?yàn)槎鄶?shù)前端對(duì) nginx 部署,導(dǎo)致有了 nginx 學(xué)習(xí)成本

因?yàn)樵坪瘮?shù)是部署在云端的,Serverless 有其獨(dú)特的環(huán)境,context、event 等,有別于 NODE 服務(wù)的請(qǐng)求體等,本地要完全模擬 serverless 請(qǐng)求比較困難,導(dǎo)致開(kāi)發(fā)想要調(diào)試定位問(wèn)題時(shí),只能先將代碼部署到 serverless 上,這里就需要等待部署了,由于 serverless 是外網(wǎng)的,部署時(shí)間就更長(zhǎng)了

由于云函數(shù)直接就是部署在云端,沒(méi)有我們傳統(tǒng)的機(jī)器用于做環(huán)境區(qū)分,對(duì)團(tuán)隊(duì)協(xié)作保證部署質(zhì)量來(lái)說(shuō)并不友好
上述也有提到的,往往因?yàn)橄胍约簶I(yè)務(wù)域名訪問(wèn)服務(wù)接口,而云函數(shù)網(wǎng)關(guān) API 是比較長(zhǎng)的缺乏語(yǔ)義化的鏈接,通常使用時(shí)會(huì)想配置 nginx 去通過(guò)自定義域名訪問(wèn)云函數(shù),不止是成本問(wèn)題也有容易配置錯(cuò)誤的風(fēng)險(xiǎn)問(wèn)題

因云函數(shù)獨(dú)立的賬號(hào)管理,沒(méi)有 git 進(jìn)行管理,導(dǎo)致無(wú)法追蹤代碼記錄,甚至任何有權(quán)限的人創(chuàng)建同名函數(shù)進(jìn)行部署都會(huì)導(dǎo)致函數(shù)莫名被覆蓋,同理云函數(shù)網(wǎng)關(guān) API 也可以隨意更改指向其它云函數(shù)

總結(jié)下來(lái),在團(tuán)隊(duì)協(xié)作 SCF 開(kāi)發(fā)的時(shí)候,遇到的挑戰(zhàn)點(diǎn)如下:

總結(jié)上面的云函數(shù)在團(tuán)隊(duì)協(xié)作中遇到的一些問(wèn)題,對(duì)應(yīng)地提出解決方案:
制定規(guī)范保證統(tǒng)一的協(xié)作,統(tǒng)一的規(guī)范保證統(tǒng)一的工作流,提升開(kāi)發(fā)效率進(jìn)而保證質(zhì)量
優(yōu)化云函數(shù)開(kāi)發(fā)體驗(yàn),通過(guò)工具去自動(dòng)化完成重復(fù)冗余的操作,并通過(guò)封裝過(guò)濾掉一些開(kāi)發(fā)學(xué)習(xí)成本
根據(jù)云函數(shù)特點(diǎn)制定 CI 和 CD,保證流程統(tǒng)一,也提升部署效率;統(tǒng)一網(wǎng)關(guān)規(guī)則,減少云函數(shù)網(wǎng)關(guān) API 學(xué)習(xí)和操作

對(duì)于獨(dú)立云函數(shù)賬號(hào),每個(gè)開(kāi)發(fā)在上手開(kāi)發(fā)前都需要單獨(dú)申請(qǐng),同時(shí)還有開(kāi)通各種權(quán)限,快點(diǎn)半天,慢點(diǎn)一兩天,針對(duì)這個(gè)問(wèn)題,考慮使用團(tuán)隊(duì)公共賬號(hào)進(jìn)行統(tǒng)一云函數(shù)管理,工具使用公共賬號(hào)進(jìn)行云函數(shù)部署、更新,免去開(kāi)發(fā)的學(xué)習(xí)成本、賬號(hào)上手成本

對(duì)于云函數(shù)獨(dú)立的管理方式,為了能唯一追蹤云函數(shù),保留了原有的 git 管理項(xiàng)目代碼,制定一系列規(guī)范,將 git 項(xiàng)目與云函數(shù)唯一關(guān)聯(lián),保證云函數(shù)唯一不可覆蓋

為提供云函數(shù)的開(kāi)發(fā)流,針對(duì)云函數(shù)的特點(diǎn),使用云函數(shù)命名空間的概念來(lái)隔離云函數(shù),同時(shí)限制測(cè)試環(huán)境的網(wǎng)關(guān)服務(wù)只允許內(nèi)網(wǎng)訪問(wèn),保證業(yè)務(wù)安全

制定云函數(shù)名、對(duì)應(yīng)網(wǎng)關(guān)服務(wù) API 名、環(huán)境命名空間的命名規(guī)范,以達(dá)到命名空間、函數(shù)名、網(wǎng)關(guān)服務(wù) API 能一一對(duì)應(yīng),可通過(guò)其一推導(dǎo)其二,如知道函數(shù)名,可知其訪問(wèn) API 是什么,對(duì)應(yīng)環(huán)境命名空間是什么

在第一項(xiàng)制定了規(guī)范之后,要讓規(guī)范落地,就需要使用工具來(lái)輔助,IMWEB 團(tuán)隊(duì)自研了 CLI 工具 -- IMFLOW, 提供 SCF 團(tuán)隊(duì)開(kāi)發(fā)流實(shí)踐方案,通過(guò)工具的方式提升 SCF 研發(fā)效率; 諸如創(chuàng)建賬號(hào)、申請(qǐng)權(quán)限、創(chuàng)建云函數(shù)、開(kāi)發(fā)云函數(shù)調(diào)試、云函數(shù)網(wǎng)關(guān) API 關(guān)聯(lián)、函數(shù)隔離等等,通過(guò) CLI 工具, 輸入命令即可完成。

使用了 CLI 工具來(lái)輔助之后,對(duì)比團(tuán)隊(duì)過(guò)往的開(kāi)發(fā)模式,通過(guò) CLI 可達(dá)到 2 分鐘上手進(jìn)入開(kāi)發(fā)

通過(guò)同構(gòu) + 構(gòu)建的方式,保留傳統(tǒng)服務(wù)開(kāi)發(fā)體驗(yàn),工具封裝屏蔽了云函數(shù)文件,開(kāi)發(fā)者開(kāi)發(fā)時(shí)可同以往一樣

云函數(shù)的真實(shí)運(yùn)行環(huán)境相對(duì)復(fù)雜,若是遇到了涉及云函數(shù)環(huán)境調(diào)試的問(wèn)題,需要真實(shí)調(diào)試云函數(shù),此時(shí)本地即可完成調(diào)試,工具封裝了一系列操作,如實(shí)時(shí)調(diào)試、監(jiān)聽(tīng)文件變更等,實(shí)時(shí)部署,實(shí)現(xiàn)一鍵定位調(diào)試云函數(shù)

云函數(shù)的部署是走的外網(wǎng)部署,而云函數(shù)的部署時(shí)間影響到了云函數(shù)的發(fā)布時(shí)間,甚至在做本地實(shí)時(shí)調(diào)試云函數(shù)時(shí),影響了云函數(shù)的調(diào)試效率,為了極致優(yōu)化云函數(shù)部署時(shí)間,利用了云函數(shù)的 layer 功能、項(xiàng)目的 node_module 變動(dòng)幾率較小、同時(shí)代碼包大小會(huì)影響部署時(shí)間這些特點(diǎn),對(duì)云函數(shù)項(xiàng)目部署進(jìn)行了拆分,當(dāng) node_modules 沒(méi)有變動(dòng)時(shí)無(wú)需部署 node_modules,進(jìn)而減少了了部署時(shí)間

在做了部署優(yōu)化后,查看項(xiàng)目的部署時(shí)間,大部分時(shí)間 35s 即可完成函數(shù)部署

在質(zhì)量保證方面,主要是通過(guò) CI | CD 規(guī)范部署流程,制定網(wǎng)關(guān)服務(wù)規(guī)范來(lái)隔離云函數(shù)和降低網(wǎng)關(guān)配置成本。

限制測(cè)試環(huán)境網(wǎng)關(guān)服務(wù)為內(nèi)網(wǎng)可訪問(wèn)。

另外,為了保證云函數(shù)的運(yùn)行穩(wěn)定,避免因?yàn)樵坪瘮?shù)的冷啟動(dòng)導(dǎo)致云函數(shù)訪問(wèn)失敗,即對(duì)云函數(shù)的容災(zāi)處理,做了一層 STKE 的容災(zāi),通過(guò)代碼同構(gòu)的方式,利用工具構(gòu)建打包,完成一套代碼實(shí)現(xiàn)既可部署 serverless ,也可以部署 STKE, 配合網(wǎng)關(guān)的處理,完成云函數(shù)的降級(jí)容災(zāi)


上述內(nèi)容就是如何分析IMWEB前端團(tuán)隊(duì)一站式Serverless開(kāi)發(fā)解決方案,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章題目:如何分析IMWEB前端團(tuán)隊(duì)一站式Serverless開(kāi)發(fā)解決方案
分享路徑:http://chinadenli.net/article22/jpeocc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、用戶體驗(yàn)、動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)