騰訊 IMWEB 前端團隊一站式 Serverless 開發解決方案

2021-02-13 TencentServerless

IMWeb 團隊隸屬騰訊公司,是國內最專業的前端團隊之一。

IMWeb 團隊專注前端領域多年,負責過 QQ 資料、QQ 註冊、QQ 群等億級業務。目前聚焦於在線教育領域,精心打磨 騰訊課堂、企鵝輔導及 ABCmouse 三大產品。

學習成就夢想,我們希望能用技術改變教育,改變世界。

前言

如今的 Serverless 可以說是一大有潛力的新技術方向,尤其在當下上雲的熱潮中,Serverless 因其免運維、自動擴容、支持多種程式語言等優勢,對前端來說,是一大提升服務開發、維護效率的利器也是可嘗試全棧發展的方向,但也因為其新,對落地到團隊開發中,結合團隊開發流也是遇到了一些挑戰,本文將分享 IMWEB 團隊對 Serverless 的實踐方案。

一、IMWEB 團隊 Serverless 研發模式的演進與思考

在過去一、兩年,我們團隊在多個服務項目中嘗試使用 serverless,騰訊雲 Serverless 提供了一站式服務,通過使用該服務,前端可獨立完成接口服務開發,對前端個人而言可往全棧發展,也因此可緩解團隊後臺人力緊張問題

在開發 Serverless 雲函數的過程中,我們也遇到了對比傳統服務,雲函數開發的一些挑戰點

(1)雲函數開發特點

前端傳統項目的開發流模式相對已經比較成熟,通過 git 協同管理代碼, 再通過 CI 來規範項目的部署流程,整個工作流可以查看、回滾代碼,部署也做到了自動化

再來看雲函數的開發特點:

創建網關 API 與函數關聯,藉此可通過網關 API 訪問到雲函數

以上是最基礎的開發雲函數三個基礎

而雲函數的創建、更新有兩種方式:

騰訊雲官網雲函數控制臺,可視化的操作界面,點擊按鈕即可創建、更新通過 CLI 創建,SERVERLESS 提供 SDK,調用 SDK 可完成自定義創建、更新操作,其優點為靈活編寫,也易於做成工程化

考慮團隊的協作,第二種方式通過調用 SDK 的方式因其靈活更適合定製為團隊規範

總結下來可以看到雲函數開發的三個特性:

因其有獨立於 git 帳號的雲函數帳號,導致了雲函數的代碼缺乏像 GIT 一樣可以查看歷史代碼版本,代碼修改記錄等因其有多重方式可以用來創建、更新函數,導致多人協作時,有互相覆蓋雲函數的風險提供的雲函數網關,可幫助快速配置訪問雲函數,而無需運維同學幫忙做域名指向,機器申請等

(2)團隊協作上手雲函數開發問題

在初期團隊探索嘗試雲函數開發時,對比傳統項目的開發流,雲函數的開發步驟更多,也暴露出了一些缺點:

1) 上手成本高

首先有不小的學習成本,像雲函數配置文件,雲函數官網界面操作學習成本,實際使用時,由於雲函數網關 API 連結過長、域名限制等,需要配置 nginx,用特定域名訪問雲函數網關 API,因為多數前端對 nginx 部署,導致有了 nginx 學習成本

2) 調試雲函數效率低

因為雲函數是部署在雲端的,Serverless 有其獨特的環境,context、event 等,有別於 NODE 服務的請求體等,本地要完全模擬 serverless 請求比較困難,導致開發想要調試定位問題時,只能先將代碼部署到 serverless 上,這裡就需要等待部署了,由於 serverless 是外網的,部署時間就更長了

3) 開發流困惑

由於雲函數直接就是部署在雲端,沒有我們傳統的機器用於做環境區分,對團隊協作保證部署質量來說並不友好上述也有提到的,往往因為想要自己業務域名訪問服務接口,而雲函數網關 API 是比較長的缺乏語義化的連結,通常使用時會想配置 nginx 去通過自定義域名訪問雲函數,不止是成本問題也有容易配置錯誤的風險問題

4) 管理困難,存在質量問題

因雲函數獨立的帳號管理,沒有 git 進行管理,導致無法追蹤代碼記錄,甚至任何有權限的人創建同名函數進行部署都會導致函數莫名被覆蓋,同理雲函數網關 API 也可以隨意更改指向其它雲函數

總結下來,在團隊協作 SCF 開發的時候,遇到的挑戰點如下:

二、IMFLOW 一站式 Serverless 開發解決方案的破局與落地

總結上面的雲函數在團隊協作中遇到的一些問題,對應地提出解決方案:

制定規範保證統一的協作,統一的規範保證統一的工作流,提升開發效率進而保證質量優化雲函數開發體驗,通過工具去自動化完成重複冗餘的操作,並通過封裝過濾掉一些開發學習成本根據云函數特點制定 CI 和 CD,保證流程統一,也提升部署效率;統一網關規則,減少雲函數網關 API 學習和操作

(1)制定規範,提升協作效率

1) 統一雲帳號管理

對於獨立雲函數帳號,每個開發在上手開發前都需要單獨申請,同時還有開通各種權限,快點半天,慢點一兩天,針對這個問題,考慮使用團隊公共帳號進行統一雲函數管理,工具使用公共帳號進行雲函數部署、更新,免去開發的學習成本、帳號上手成本

2)基於 GIT 管理雲函數

對於雲函數獨立的管理方式,為了能唯一追蹤雲函數,保留了原有的 git 管理項目代碼,制定一系列規範,將 git 項目與雲函數唯一關聯,保證雲函數唯一不可覆蓋

3)命名空間隔離函數環境

為提供雲函數的開發流,針對雲函數的特點,使用雲函數命名空間的概念來隔離雲函數,同時限制測試環境的網關服務只允許內網訪問,保證業務安全

4)統一雲函數規則配置

制定雲函數名、對應網關服務 API 名、環境命名空間的命名規範,以達到命名空間、函數名、網關服務 API 能一一對應,可通過其一推導其二,如知道函數名,可知其訪問 API 是什麼,對應環境命名空間是什麼

(2)自研 CLI 工具, IMFLOW 提升 SCF 研發效率

在第一項制定了規範之後,要讓規範落地,就需要使用工具來輔助,IMWEB 團隊自研了 CLI 工具 -- IMFLOW, 提供 SCF 團隊開發流實踐方案,通過工具的方式提升 SCF 研發效率;諸如創建帳號、申請權限、創建雲函數、開發雲函數調試、雲函數網關 API 關聯、函數隔離等等,通過 CLI 工具, 輸入命令即可完成。

1)上手開發更快

使用了 CLI 工具來輔助之後,對比團隊過往的開發模式,通過 CLI 可達到 2 分鐘上手進入開發

2)調試體驗同傳統服務開發一致

通過同構 + 構建的方式,保留傳統服務開發體驗,工具封裝屏蔽了雲函數文件,開發者開發時可同以往一樣

3)一鍵定位調試雲函數

雲函數的真實運行環境相對複雜,若是遇到了涉及雲函數環境調試的問題,需要真實調試雲函數,此時本地即可完成調試,工具封裝了一系列操作,如實時調試、監聽文件變更等,實時部署,實現一鍵定位調試雲函數

4)極致優化雲函數部署時間

雲函數的部署是走的外網部署,而雲函數的部署時間影響到了雲函數的發布時間,甚至在做本地實時調試雲函數時,影響了雲函數的調試效率,為了極致優化雲函數部署時間,利用了雲函數的 layer 功能、項目的 node_module 變動機率較小、同時代碼包大小會影響部署時間這些特點,對雲函數項目部署進行了拆分,當 node_modules 沒有變動時無需部署 node_modules,進而減少了了部署時間

在做了部署優化後,查看項目的部署時間,大部分時間 35s 即可完成函數部署

(3)質量保證

在質量保證方面,主要是通過 CI | CD 規範部署流程,制定網關服務規範來隔離雲函數和降低網關配置成本。

限制測試環境網關服務為內網可訪問。

另外,為了保證雲函數的運行穩定,避免因為雲函數的冷啟動導致雲函數訪問失敗,即對雲函數的容災處理,做了一層 STKE 的容災,通過代碼同構的方式,利用工具構建打包,完成一套代碼實現既可部署 serverless ,也可以部署 STKE, 配合網關的處理,完成雲函數的降級容災

三、IMFLOW 使用

imflow 內置命令

至此,感謝閱讀。在探索雲函數的開發之路中,感謝騰訊雲 Serverless 團隊的支持,希望 Serverless 可以越做越好!

One more thing

立即體驗騰訊雲 Serverless Demo,獲取 Serverless 新用戶禮包,請在 PC 端訪問:

serverless.cloud.tencent.com/start?c=wx

相關焦點

  • 2020年國內前端團隊都做了些什麼?
    2020年前端團隊的新挑戰和方向1.目前國內的很多廠商比如騰訊雲, 阿里雲, 七牛雲等都提供了非常完善的技術支持, 作為前端工程師的我們, 不僅要學會如何去應用這些技術, 也要了解這些技術的底層實現原理. 筆者這裡介紹一下使用場景:
  • 代碼零改動Serverless架構升級?這家在線編程教育企業這麼做的!
    Serverless升級之路風變科技前端架構師Function認為任何架構設計都是歷史下的產物,脫離實際情況談最優解都是不切實際的想法,如何在有限的人力資源和更優的方案中取得平衡,就像一棟大廈,工程師設計出結構穩定和考慮長遠的方案(可擴展性),施工人員不偷工減料(代碼質量),那麼這座大廈才能長久屹立,也能更好的面對新工程不斷改造
  • 全球首發1毫秒計費模式,騰訊雲引領Serverless時代新標準
    在第三代通用計算平臺的探索和布局上,騰訊雲已經走在了全球的前列。3月6日,騰訊雲正式向外界展示了其在Serverless領域的最新進展,包括率先在業界推出1毫秒計費模式,並通過進一步打通上下生態鏈,構建三步上雲的極致全雲端開發體驗。
  • 小程序聯合騰訊雲推出「雲開發」 騰訊的真實意圖是什麼?
    騰訊也一直在謀求解決這些問題。早在2018年,騰訊雲就聯合微信小程序推出「小程序·雲開發」平臺,希望通過提供一站式開發服務,打通小程序前端與雲資源的鏈路,讓開發者無需管理後端服務架構,就可以擁有各種後端能力,以減輕開發過程中繁雜的後端操作。
  • 你需要了解的幾種微前端解決方案
    ,以及其帶來的利弊之處,因為那些弊端,使得我們團隊自己探究了一套目前認為最好的微前端解決方案。通過本文,可以快速幫您理清楚微前端方案的利弊,從而做出有利於您團隊的更好更明智的選擇。中文釋義:可以由多個團隊獨立開發的現代web應用程式的技術、策略和方案。本文則是在此基礎上對現有的微前端解決方案進行對比總結,廢話少說,讓我們開始今天的課題。
  • Serverless 與前端工程化結合:讓項目 5 分鐘上線成為可能
    可能前端團隊四五十個人能足夠支持一個事業部,或者是一個事業群的前端開發工作。這就導致我們在前端團隊分工上面,會有一些不一樣的選擇。 同時會有一個橫向的技術服務團隊,去整體負責我們業務線前端團隊的一些基本訴求。比如說我們要負責去定規範,包括去做一些工具響應他們,包括幫他們解決一些他們在業務中,解決不了的一些問題。所以一般來說,都會有這樣的一個團隊去承擔前端工程化的建設,也是我現在團隊負責的主要工作內容。
  • 小程序·雲開發:騰訊正在構建的又一個生態
    對於一些中腰部企業來說,因為預算而無法成行的應用開發藉助雲開發低代碼平臺可以快速滿足需求。騰訊雲TVP、前端開發領袖黃希彤在演講中分享到,2017年微信正式推出小程序,前端技術棧幾乎無縫銜接過來,將前端的技術邊界拓展到一個新的領域。2018年推出雲開發,將雲函數、資料庫、存儲、CDN等後端服務打包成一體化的解決方案,整合到微信開發者工具中 。
  • 如何用 Serverless 優雅地實現圖片藝術化應用
    本文將分享如何從零開始搭建一個基於騰訊雲 Serverless 的圖片藝術化應用!項目看點概覽:前端 react(Next.js)、後端 node(koa2)全面使用 ts 進行開發,極致開發體驗(後端運行時 ts 的方案,雖然性能差點,不過勝在無需編譯,適合寫 demo)TensorFlow2 + Serverless 擴展想像力邊際高性能,輕鬆應對萬級高並發,實現高可用(自信的表情
  • 不止於即時配送:順豐同城一站的「一站式」新零售解決方案
    以「國內專業的研發團隊」作為技術保障,以定製方案搭配渠道資源整合賦能電商運營,以強大的物流體系和倉儲管理為零售「從線上到線下」全流程護航,「順豐同城一站」的解決方案已準確地切入了同城新零售未來的主打方向。
  • 五年前端大專學歷進騰訊啦!
    直接使用小程序進行開發,老實說,只寫小程序的前端,壓根就不是前端,本來在前端已經被框在瀏覽器中,而現在小程序進一步把前端框在小程序中。在這樣的環境下,如何去擴展你的知識廣度呢?如果時間緊急,可以先使用第三方的庫解決,但是要留意別人如何封裝,然後轉為自己編寫。技術都是從點點滴滴積累起來的。當你做到以上事情,那麼你開發的速度將會提升,那麼就可以擠出多一點的時間給自己有針對性的學習深度的知識。
  • 國內外升學一站式解決方案
    新航道為高端群體提供的個性化留學服務,由語言培訓師資團隊和前程留學團隊合力打造,為不同階段的學生群體提供從升學規劃、考試培訓到留學申請一站式服務,幫助學生以更高的成功率進入名校!直通車英國錦秋A-Level計劃專為有志於申請英國G5超級精英大學以及英澳頂尖高校的中學生設計,通過提供A-Level考培+雅思+留學一站式解決方案,幫助中國學生通過學習以更高的成功率申請到頂尖名校。
  • 百度、餓了麼、美團專家齊聚SDCC2015,剖析前端開發核心技術
    、基於NodeJS的前後端分離方案已深入實踐……前端技術快速更新迭代,給前端開發人員帶來了前所未有的挑戰。 議題簡介: 在前端領域,餓了麼算是比較激進的團隊,在面向大眾產品中,包括桌面端、移動端,深度使用SPA、SVG、ES6 等技術,組件式開發,自動化構建,甚至利用 Nginx層解決前端一些硬傷,更極端到整個伺服器/虛擬機上只有一個HTML文件,並做到99.99%可用的前端。
  • 格子匠:一站式在線教育解決方案,打造在線教學服務閉環
    一、格子匠是什麼?專業的在線教育技術服務商!據悉,長沙格子教育諮詢有限公司創立於2017年4月,總部位於湖南長沙。創始人周星有著十餘年網際網路行業創業經驗,對在線教育行業一直持續關注著,懷揣著對教育行業的熱愛,以及幫助中小型教育機構完成在線教育布局,促進整個行業良性發展的願望,創建了格子匠團隊。
  • Serverless 中文社區採訪
    2、請簡要的介紹一下您所在的團隊(比如負責的業務、前後端分工?不用涉及細節)    ●  IMWeb 團隊隸屬騰訊公司,是國內最專業的前端團隊之一。    ●  我們專注前端領域多年,負責過 QQ 資料、QQ 註冊、QQ 群等億級業務。    ●  目前聚焦於在線教育領域,精心打磨 騰訊課堂、企鵝輔導及ABCmouse三大產品。
  • 這麼好的微前端解決方案你頂得住?
    微前端概念由微服務概念延展而來,摒棄大型單體方式,將前端整體分解為小而簡單的塊,這些塊可以獨立開發、測試和部署,同時仍然聚合為一個產品出現在客戶面前。 微前端不是一門具體的技術,而是整合了技術、策略和方法,可能會以腳手架、輔助插件和規範約束這種生態圈形式展示出來,是一種宏觀上的架構。
  • 協作機器人集成商開發場景難?一站式商店的協作式應用或顛覆!
    例如協作應用在多種柔性場景缺乏解決方案,集成商工程師在協作機器人增量市場下需要不斷學習開發新的軟體編程應用,相對比傳統工業機器人,協作機器人軟體接口難度的提升,也造成了集成商的開發難度大,開發周期長,且大多是小批量非標應用,利潤較為低下,協作機器人的成本並不比工業機器人低。
  • 小程序雲端解決方案,微信小程序及後臺交互架構
    4月 28日,騰訊雲舉辦的雲 +社區技術沙龍,以小程序開發實戰為基準點,圍繞小程序雲上解決方案,serverless後端架構,小遊戲底層設計和直播、電商小程序的開發實戰五大主題內容,分享最全面的微信小程序設計開發思路以及解決方案。本文整理了講師演講精彩內容.
  • 華為雲一站式API解決方案平臺API Explorer上線
    華為雲API開發團隊歷時幾個月的開發,正式上線了API Explorer,為開發者提供一站式API解決方案統一平臺,集成華為雲服務開放API,支持全量快速檢索、可視化調試、幫助文檔等,幫助開發者快速查找、學習API、以及定位和修復錯誤。
  • SDCC 2015前端專場札記:Facebook、百度、騰訊、美團、餓了麼等...
    其中20日的前端開發專場,現場聽講人數一度爆滿,而沒有機會親臨現場的童鞋們,我們特邀請了業內專家、與會者分享他們的聽課感受及他們眼中的前端專場。以下是來自AdMaster前端高級工程師劉越凡參加前端開發專場的聽課札記,以饗讀者。
  • ​if 我是前端團隊 Leader,怎麼制定前端協作規範?
    如文章標題,前端協作規範並不單單指『編碼規範』,這個規範涉及到前端開發活動的方方面面,例如代碼庫的管理、前後端協作、代碼規範、兼容性規範;不僅僅是前端團隊內部需要協作,一個完整的軟體生命周期內,我們需要和產品/設計、後端(或者原生客戶端團隊)、測試進行協作, 我們需要覆蓋這些內容.