用戶案例 | 騰訊文檔應用 Serverless 架構上云最佳實踐

來源: 騰訊云原生
作者:騰訊云原生
時間:2021-09-02
16905
近兩年,國內文檔類SaaS產品層出不窮,協(xié)作云文檔作為云時代辦公的一種工具和方式。與傳統(tǒng)的離線辦公軟件不同,協(xié)作云文檔更加注重協(xié)作的溝通和效率,同時作為工具類產品也同樣關注性能和體驗。

近兩年,國內文檔類SaaS產品層出不窮,協(xié)作云文檔作為云時代辦公的一種工具和方式。與傳統(tǒng)的離線辦公軟件不同,協(xié)作云文檔更加注重協(xié)作的溝通和效率,同時作為工具類產品也同樣關注性能和體驗。就在不久以前,《一個救命文檔的24小時》刷屏朋友圈,在河南暴雨災情中,騰訊文檔快速響應災區(qū)需要,提升穩(wěn)定性,確保產品體驗。

騰訊文檔脫胎于QQ家族旗下一款團隊協(xié)作IM軟件TIM的在線文檔模塊,最初基于開源軟件搭建的技術架構,隨著業(yè)務的高速發(fā)展,已無法完全滿足業(yè)務的需求,且積累下了比較沉重的技術債務。團隊經過慎重的討論,決定從底層開始,分模塊,逐步重構整個技術體系。在技術迭代的過程中,團隊也在不斷探索和嘗試業(yè)內一些先進成熟的技術解決方案。

騰訊文檔整個技術體系內集成了許多微服務為騰訊文檔提供業(yè)務支持,比如圖像識別、SSR、截圖、文檔預覽等,這些微服務需要從效率和成本需求出發(fā)考慮解決方案,以實現可擴展、易維護、降低開發(fā)成本的目標。伴隨著公司自研上云的浪潮,在近來的開發(fā)中,團隊在多個微服務項目中深入使用騰訊云Serverless架構,滿足了業(yè)務的需求,取得了不錯的效果。

01.

騰訊文檔x Serverless云函數

多場景應用

1.應對流量高峰低谷

辦公類產品是有明顯的流量潮汐的,比如上午8點到12點,下午2點到6點這幾個時段是流量比較大的時候,其他時間段尤其是凌晨沒什么流量。隨著用戶量快速增加,這種潮汐規(guī)律尤為明顯,高峰時期海量用戶的實時修改對服務器造成巨大的壓力。

傳統(tǒng)架構下可以通過增加虛擬機,實現應用的可擴展。但由于預估容量不足,導致業(yè)務流量高峰期時,大量用戶出現請求超時的情況,這意味著品牌聲譽受損、用戶流失。雖然可以通過創(chuàng)建虛擬機實例的方式進行擴容,但是仍然要做很多額外的配置。應用底層有很多依賴的框架或語言運行時需要安裝,安裝完成之后還需要配置和部署應用,這個周期至少需要1-2個小時,這種情況下傳統(tǒng)的部署架構無法做到資源與流量的匹配。

Serverless解決方案

騰訊文檔借助Serverless云函數搭建文檔頁面直出服務,將文檔的內容渲染能力實現為函數,部署在云函數環(huán)境上,當文檔業(yè)務流量激增,由云函數的負載均衡系統(tǒng)自動分配執(zhí)行環(huán)境,處理海量用戶觸發(fā)的內容更新請求負載,動態(tài)擴縮容能力為微服務提供最合理的資源分配。同時通過設置云函數預置并發(fā),可預先啟動多個函數實例,保持云函數的活性,消除冷啟動,降低在運行環(huán)境初始化和業(yè)務代碼初始化產生的耗時。

640.webp.jpg

2.SSR前端渲染

騰訊文檔自推出以來,已達千萬月活,為了支持用戶打開頁面時能快速看到頁面內容,瀏覽器直接解析HTML直出的字符串模版顯示頁面,流量激增導致集群負載、前端渲染壓力增加,首屏加載時間慢等問題。SSR團隊需要實現一套彈性高可用性的直出解析服務來處理文檔和表格的頁面內容,滿足可擴展、易維護、降低開發(fā)成本的目標。文檔的渲染能力幾乎都是前端同學在負責,而前端同學大多服務端知識積累比較淺,對于服務的開發(fā)運維經驗比較少,長期的運維成本是新的架構設計重要的評估維度,從而讓前端團隊可以更加聚焦于業(yè)務邏輯本身。

Serverless解決方案

SSR(Server-Side Rendering)需要依賴Node.js服務渲染頁面,顯然會比僅僅提供靜態(tài)文件的CSR(Client-Side Rendering)應用需要占用更多服務器CPU資源,借助Serverless方案,前端同學無需關注SSR服務器的部署、運維和擴容,通過云函數對底層服務進行封裝,極大地減少部署運維成本,更加聚焦業(yè)務開發(fā),提高開發(fā)效率。

640.webp (1).jpg

全新Serverless Web Funciton服務開發(fā)模式,只需簡單修改監(jiān)聽端口,即可將目前流行的Node.js框架直接部署上云,享受Serverless技術帶來的免運維、低成本、按需擴縮容的眾多優(yōu)勢,歡迎體驗。

3.外部服務調用-OCR圖像識別

騰訊文檔幻燈片支持編輯公式的能力,OCR圖像識別是騰訊文檔幻燈片結合外部的OCR服務能力來完成文檔內的公式圖片轉換為公式,進而方便用戶進行公示編輯。問題點在于:外部提供的OCR服務做了限制,不支持前端請求,僅支持服務端請求。傳統(tǒng)的解決方案需要后臺同學接入,進而增加了人員排期、對接等項目管理的復雜度。

Serverless解決方案

騰訊文檔將外部提供的OCR用云函數SCF做一層轉發(fā),騰訊文檔再對接聯(lián)調云函數的接口。解決了外部服務的限制,同時節(jié)省了后臺開發(fā)資源,前端業(yè)務開發(fā)同學可以自己快速對接上外部服務,大大提升了開發(fā)效率。

640.webp (2).jpg

4.插件中心-第三方服務接入

騰訊文檔插件1.0的方案是基于對文檔前端封裝到前端插件SDK的方案,在內部插件業(yè)務嚴重耦合文檔實現的前提下,無法將文檔能力以安全、成體系的方式對外提供,持續(xù)去開放前端文檔的編輯的能力,會使前端SDK和文檔側的實現逐步變得臃腫,最后有可能會在變成巨石應用上長期存在的技術債務。

Serverless解決方案

插件2.0方案的核心是基于后臺內容編輯的能力開放,利用文檔的數據響應式的更新機制,云函數便成為前端-云函數-后臺內容編輯中關鍵環(huán)節(jié),將開放的實現從前端剝離,通過云函數承載進行開放。同時,不同服務的調用量級不同,云函數帶有天然的服務隔離和動態(tài)修復能力,可針對不同服務相互隔離,分別進行升級拓展,避免服務間的影響。

640.webp (3).jpg

5.灰度發(fā)布&環(huán)境隔離

在進行應用版本更新及切換時,為了保證線上整體系統(tǒng)業(yè)務穩(wěn)定,及時發(fā)現業(yè)務代碼的問題,研發(fā)團隊會采取灰度發(fā)布的方式測試迭代。通過云函數針對特定的版本進行逐步的流量切換,可以實現某個版本的平滑灰度,保證新上線的版本能夠在可控的范圍能進行發(fā)布迭代。

通過云函數版本隔離測試環(huán)境和生產環(huán)境,線上通過對$LASTEST進行版本的固化,可以把測試環(huán)境的API網關對接到TEST版本,將生產環(huán)境對接都固化的版本上,保證生產環(huán)境的代碼質量安全。

640.webp (4).jpg

02.

Serverless架構方案優(yōu)勢

·研發(fā)效率提升

本地開發(fā)測試后,觸發(fā)CI/CD流程,就可以完成部署流程。同時,云函數提供了日志監(jiān)控、灰度、發(fā)布回滾等能力,可以通過接口或者插件實現完全自動化的流程。云函數基于騰訊云專業(yè)的保障集群,自帶負載均衡和彈性伸縮,開發(fā)同學基本不需要再關心運維等問題,可以有更多的時間聚焦業(yè)務的優(yōu)化。服務端經驗較少的前端開發(fā)工程師也可以較為輕易的開發(fā)維護服務。

·成本節(jié)約

云函數實現1ms計費粒度,按實際用量計費,幫忙用戶獲得顯著的成本優(yōu)勢,在沒有訪問量時實現自動縮容,節(jié)約部署成本。

·靈活度高

憑借騰訊云函數的多版本能力,可以靈活部署多個在線版本,通過和網關的配合的,輕松做到多版本共存,提供定制化的處理能力。

·加速業(yè)務迭代

使用Serverless方案之后,極大減少了運維和監(jiān)控的負擔,開發(fā)同學可以把更多的精力放在方案的優(yōu)化和技術迭代中,快速驗證產品特性,推動團隊技術業(yè)務的發(fā)展。

03.

騰訊文檔x Serverless架構

更多場景探索

當下瀏覽器環(huán)境是有性能瓶頸的,對于較為復雜的異步邏輯可以考慮使用云函數將邏輯服務化,接下來,騰訊文檔計劃對前端瀏覽器邏輯FaaS化,可以從前端分離到服務端,進而降低瀏覽器性能壓力。

在協(xié)作辦公的賽道上,團隊業(yè)務還在快速的成長,面對快速變化的技術迭代,低成本、快速開發(fā)、快速部署、快速上線的Serverless解決方案成為了團隊在微服務技術選型中優(yōu)先考慮的架構。借助云函數SCF的能力,團隊不用再擔心后臺計算資源的問題,可以更加有信心應對更多突如其來的事件。未來,隨著騰訊文檔開放平臺的建設,會有更多的使用云函數SCF的微服務跑在騰訊文檔的業(yè)務中,為廣大用戶提供更好的服務。

·GitHub:github.com/serverless

·官網:cloud.tencent.com/product/serverless-catalog

立即登錄,閱讀全文
版權說明:
本文內容來自于騰訊云原生,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家