架構升級,Serverless到底是不是趨勢?

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在突如其來的疫情影響下,2020 年在線教育的流量達到新一輪高峯。面對百萬 PCU 的高併發場景,爲保證業務系統的穩定性,騰訊在線教育團隊果斷擁抱了 Serveless 並進行架構升級改造。在這一過程中,他們如何解決業務高速發展所面臨的人力緊缺的問題?上雲是不是大勢所趨?如果同樣擁抱 Severless,需要注意什麼?"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在 2021 年 4 月 22 - 24 日舉辦的 "},{"type":"link","attrs":{"href":"https:\/\/qcon.infoq.cn\/2021\/beijing\/?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"QCon 全球軟件開發大會(北京站"}]},{"type":"text","marks":[{"type":"strong"}],"text":")"},{"type":"text","text":"“"},{"type":"link","attrs":{"href":"https:\/\/qcon.infoq.cn\/2021\/beijing\/track\/1007?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"前端新趨勢"}]},{"type":"text","text":"”專題中,騰訊前端開發高級工程師"},{"type":"link","attrs":{"href":"https:\/\/qcon.infoq.cn\/2021\/beijing\/presentation\/3245?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"曹海歌"}]},{"type":"text","text":"老師將分享"},{"type":"link","attrs":{"href":"https:\/\/qcon.infoq.cn\/2021\/beijing\/presentation\/3245?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"《基於 Serverless 的騰訊在線教育大前端研發模式升級》"}]},{"type":"text","text":"。會前, InfoQ 記者帶着疑問對曹老師進行了採訪,幫助大家瞭解爲什麼業務會進行研發升級?以及如何基於 SCF 落地全棧開發,繼而解決業務痛點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"上雲是趨勢?擁抱 Serverless 嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:騰訊在線教育是在什麼情況下,開始擁抱 Serverless 的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"曹海歌:"},{"type":"text","text":"最近幾年,騰訊在線教育業務增長迅猛。業務在快速發展的過程中,一定會遇到的問題就是大量的人力缺口。因此,前端團隊決定全面轉型服務端開發。恰逢其時,前端轉型全棧的技術升級也與公司正在推動的全面上雲計劃不期而遇。因此,無論是技術探索,還是技術共建,都恰到好處得在這個轉型的十字路口相遇了。前端服務化不僅可以進一步拓展前端開發者自身的技術邊界,也能爲產品發展創造更大的價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在落地全棧開發的伊始,我們做了技術方案的全面調研與分析。通過對標公司內部的各種雲計算架構的方案以及結合自身業務的實際情況進行了多輪討論,我們最終決定優先嚐試 "},{"type":"link","attrs":{"href":"https:\/\/s.geekbang.org\/search\/c=0\/k=Serverless\/t=?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"Serverless"}]},{"type":"text","text":"。"},{"type":"text","marks":[{"type":"strong"}],"text":"值得注意的是,這裏所說的 Serverless 不是指向某種特定的雲計算解決方案,而是一種宏觀意義上的服務端架構思想,即讓業務遠離運維,繼而聚焦業務。"},{"type":"text","text":"換言之,這種架構思想的核心是直達本質,快速解決當下問題。一切可以降低服務端業務開發成本的方案均可成爲 Serverless 的載體。至於是選擇雲函數落地,還是選擇容器化的解決方案,這需要結合當下業務的場景以及團隊技術梯隊來具體情況具體分析。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:你們團隊內部做了哪些對比和權衡才決定用 Serverless?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"曹海歌:"},{"type":"text","text":"在前端團隊全面落地全棧開發的過程中,經過多輪討論,我們最終決定優先嚐試騰訊雲的 "},{"type":"link","attrs":{"href":"https:\/\/s.geekbang.org\/search\/c=0\/k=SCF\/t=?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"SCF"}]},{"type":"text","text":"(Serverless Cloud Function)。作爲一種免運維、低成本的技術方案,SCF 非常適合在低頻調用的業務中使用,並且通過不同的實例進行函數間的業務隔離,也無需擔心函數之間會互相影響。此外,SCF 能夠有效得降低前端開發維護後臺服務的技術門檻,讓技術開發者可以更好得聚焦於業務本身。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在業務落地的選擇上,我們優先嚐試了小程序場景下的業務實踐。由於業務功能完全獨立,跟現有系統耦合度低,且併發量不高,前端實現了從 UI 設計到服務端存儲的一站式解決方案,在釋放了後臺人力的同時,也拓展了前端開發者的技術邊界;而另一個典型的案例是在 B 端的系統上進行了 BFF 模式的落地方案,後臺提供基礎的原子 API 接口,SCF 層進行業務邏輯的拼接和組裝,巧妙的進行了多端適配和多業務場景的適配,同時這對協議設計也更加友好。隨着基礎原子接口的逐步成熟和穩定,後續功能的迭代基本上與後臺解耦,只通過前端開發者就已經可以滿足產品日常功能的迭代。這種研發模式所帶來的最大好處就是敏捷迭代,在產品創業初期能夠非常有效得滿足業務的快速發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"上雲難點,如何解決?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在面對業務量不大的情況下,SCF 是能在一定程度上就能解決問題;而在業務場景複雜,諸如長鏈接、高性能、高可用和高併發等情況,"},{"type":"link","attrs":{"href":"https:\/\/s.geekbang.org\/search\/c=0\/k=TKE\/t=?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"TKE"}]},{"type":"text","text":" (Tencent Kubernetes Engine)不失爲一種有效的解決方法。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:背景提到的架構痛點或者問題,用 Serverless 能解決嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"曹海歌:"},{"type":"text","text":"對於併發量不大,穩定性要求不那麼極致的中後臺業務場景,完全可以通過 SCF 來完成業務落地。然而,隨着前端開發者持續的探索實踐以及業務功能的不斷拓展,前端開發逐步會延伸到服務端開發的深水區,這便不得不面對類似 C 端場景的高性能、高併發和高可用。"},{"type":"text","marks":[{"type":"strong"}],"text":"而解決高併發最簡單的思路就是使用緩存"},{"type":"text","text":"。在這種情況下,“用完即走”(以“函數即服務”爲思路)的 SCF 便不再是最好的技術選型了。尤其是面對 back-end to front-end push 業務場景時,使用 SCF 來實現產品功能,架構演進上就會變得非常喫力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此,面對長鏈接、高性能、高可用和高併發的業務場景,我們選擇了 Serverless 另一款延伸型的技術產品—— TKE。TKE 是基於原生 Kubernetes 提供的以容器爲核心的、具有高度可擴展的高性能容器管理服務。對業務開發者(尤其是前端開發者)來說,我們核心的技術選型就是在公司內找到最合適當下業務的基礎設施。在綜合衡量業務成本、開發效率以及業務穩定性等多重要素後,我們研判:TKE 是最佳選擇。前端開發團隊由此開始了基於 TKE 的業務落地的探索之路,以突破 SCF 在應對業務處理時所面臨的侷限。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:在整個架構逐步上雲過程中,遇到了哪些問題?又是怎麼解決的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"曹海歌:"},{"type":"text","marks":[{"type":"strong"}],"text":"首先,從效率維度來看"},{"type":"text","text":",工程化在軟件開發的各個領域內都已經深入人心,並且日趨完善,尤其是在前端開發領域。而實際使用的情況是,無論是 SCF 還是 TKE, 對業務開發而言都是新鮮事物,並且基礎設施並未全面完善。這便使得如何更好得服務一線開發者進行遷移和改造成爲業務中非常重要的事情。因此,工具的建設和定製化能力的開發都是必不可少的。儘可能得降低新服務的接入成本和原有服務的遷移成本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"其次,從質量維度來看"},{"type":"text","text":",SCF 在行業內還未完全成熟,TKE 的建設在騰訊內部也方興未艾。雖然業務方上雲是必然趨勢,但是也無可避免得承擔着與雲平臺一起成長的風險。因此,爲了保證業務服務質量的穩定性,開發者要做好研發流程的規範,建設好質量檢測工具以及設計好服務容災方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"最後,還涉及協同問題"},{"type":"text","text":"。我們希望通過知識共享和技術沉澱的方式,將公司內優秀的技術方案引入進來,同時在引入和應用的過程中也貢獻出我們團隊自己的技術沉澱,從而更好得提升公司研發團隊整體的效能。因此,分享、開源和協同就是非常好的方式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/e7\/e78fc5dd4af22d9e4892a736e9d8e5d8.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上面展示的就是 IMWeb 團隊全棧開發的設計思路,依託於雲提供的基礎能力,通過制定團隊的開發規範,以及打造極致的效率工具,爲業務更好的進行探索和實踐保駕護航。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"上雲建議,緊貼業務"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在實際業務落地過程中始終要根據業務場景,具體情況具體分析;聚焦業務本身,分析自己的業務特性,不推薦盲目上雲;最後,對比出適合自身業務場景的上雲方案。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:如果別人也要基於 Serverless 升級研發模式,你覺得哪些點需要注意的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"曹海歌:"},{"type":"text","text":"業務開發遠離運維的訴求已經深入人心了。因此,使用 Serverless 這種“道”作爲業務解決方案的趨勢是明確的。至於選擇 SCF 還是 TKE,抑或是其他類似的“術”,這在實際業務落地過程中要根據業務場景,具體情況具體分析。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大公司一般都會自研一套或者多套解決方案,在公司內部選擇適合當下業務場景的方案即可。而對於缺乏自研能力的公司(尤其是創業公司)而言,技術方案的選擇至關重要。Serverless 的解決方案在保證服務運行的同時,更多的是能夠提供配套的技術設施(比如:存儲、網絡、"},{"type":"link","attrs":{"href":"https:\/\/s.geekbang.org\/search\/c=0\/k=CDN\/t=?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"CDN "}]},{"type":"text","text":"等等)以及後續延伸的服務項目。後兩者是作爲技術負責人需要去真正覈實以及用來決策的依據所在。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"InfoQ:Serverless 研發的前景如何,是未來的趨勢嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"曹海歌:"},{"type":"text","text":"與其說 Serverless 是一種明確的技術,不如說 Serverless 是一種研發模式。這種研發模式能夠讓開發者更聚焦於業務價值,遠離那些與當下目標無關的問題。這樣的訴求在未來會有持續性的深入發展,並且還會隨着技術演進與技術積累而變得更加完善。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"嘉賓介紹"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"曹海歌 (haige), 騰訊高級前端工程師。2016 年加入騰訊 QQ 瀏覽器,2017 年加入在線教育部,目前是 IMWeb 團隊核心成員,主要負責 IMWeb 團隊全棧開發的方案設計與落地。對 Web & H5 移動端開發有豐富經驗,對業務質量監控和性能優化有深入研究,並專注於推動團隊全棧技術架構的落地,對跨平臺、Node.js 開發有大量實踐經驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於騰訊在線教育團隊 Serverless 技術應用的相關問題,可以到 4 月 22-24 日的 "},{"type":"link","attrs":{"href":"https:\/\/qcon.infoq.cn\/2021\/beijing\/?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"QCon 全球軟件開發大會"}]},{"type":"text","text":"現場,與曹老師深入交流探討。除“前端新趨勢”專題之外,大會還設置了“智能金融”“人工智能前沿技術”“業務架構演進”“Java 生態與未來”“新型編程語言”等 24 個技術專題。查看詳細專題內容可直接點擊"},{"type":"link","attrs":{"href":"https:\/\/qcon.infoq.cn\/2021\/beijing\/?utm_source=web&utm_campaign=9&utm_medium=infoq&utm_content=caohaige","title":"xxx","type":null},"content":[{"type":"text","text":"【QCon官網】"}]},{"type":"text","text":"。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章