主頁 >  其他 > 微保 Serverless 實踐之架構演進

微保 Serverless 實踐之架構演進

2020-10-27 01:48:47 其他

背景

微保前端架構在業務發展中,根據業務、團隊、開發等實際情況,不斷進化調整,本文將具體介紹微保前端的架構演程序序,以及團隊最終選擇使用騰訊云 Serverless 技術支撐前端架構的原因,

微保團隊使用 Serverless 技術的主要應用場景:

  1. 前端開發同學,應用在BFF層,目前接入的有小程式,H5 頁面,
  2. 資料組同學,面向的風控和推薦演算法應用,做計算使用,

微保架構 v1

早期,團隊使用經典的前后分離架構,前端開發與后端開發通過介面進行合作,

合作流程如下圖所示:

毫無疑問,前后端分離的架構有比較顯著的優勢:

1. 前后端開發解耦

  • 前端與后端開發并行,縮短需求整體開發周期

  • 角色分工明確,線上問題定位與修復更加清晰

前后端分別設計與實作自己的錯誤監控和告警系統,前端對頁面腳本錯誤進行捕獲,上報至日志平臺,經過日志處理工具,設定告警機制,將錯誤資訊推送至相應的開發人員,

  • 利于前端組件化與后端微服務化架構

前后端分離后,前端可以使用更為便捷的框架以及基于這些框架的基礎UI組件,大大提升開發效率,另外,前端開發也會基于業務的特點,提取業務專屬的公共組件,所有組件化的沉淀,都是對生產效率的提升,

2. 部署解耦

  • 前端靜態檔案單獨部署 CDN

前端專案中有大量的靜態檔案,包括 html、css、js、圖片、視頻等,將這些檔案部署在 CDN 上,充分利用現有云服務的CDN能力,既能提升資源訪問的速度又能保證資源訪問的穩定性,尤其是在高并發的場景下,

  • 更加快捷的 CI/CD ,前端的編譯程序可以非常簡單地接入 CI/CD

在前后端耦合的時代,前后端的統一部署相互依賴,分開部署后,可以針對前端專案以gitlab的repo 級別來做相應的 CI/CD,

然而, 前后分離的架構對于業務早期的快速發展非常有效,而且在團隊規模較小的時候,前后端開發人員合作固定,彼此對于對方的開發習慣、性格較熟,因此跨角色溝通的問題并不突出,但隨著團隊規模和業務規模持續擴大,這個架構模式給團隊帶來的副作用慢慢浮出水面,實踐中,遇到的幾個比較明顯的問題,如下:

1. 前后端協作耦合慢慢成為開發效率提升的瓶頸,

如下圖所示:

團隊規模與業務規模的擴大,意味著合作的人員變多、介面的復雜度也會相應增加,

早期專人專項大家彼此的開發習慣也熟悉,對業務也都比較熟悉,因此業務介面引數的調整溝通成本較低,但隨著業務規模和團隊成員擴充,在各種跨業務合作時就會有人碰到不習慣閱讀proto,或有些復雜業務需要花費大量時間閱讀proto檔案,或前后端反復溝通介面呼叫時引數的具體含義等問題,

2. 頁面渲染效率較差

如下圖所示

以產品詳情頁為例,頁面的渲染需要請求至少5個后端介面,然后再對資料進行組裝和處理,這不僅增加了小程式端的代碼體積,頁面渲染的速度也是被拉低了,

即使在前端頁面對介面進行并行訪問,但資料的整合邏輯依然會非常復雜,小程式作為微保主要的產品承載形態,代碼量巨大,幾近達到微信規定的代碼上限,這種對于代碼的增加隨著業務增長也是一個隱形的風險,

微保架構 v2

鑒于上述前后端合作模式中的痛點,團隊對架構再次進行優化,原則是業務“前”移、核心下沉,在前期的各種業務支撐中,團隊已經有了一些業務中臺的沉淀,比如投保服務、續保服務、保單服務等,

中間層的引入讓團隊的開發效率進一步得到提升,前端對于業務的把控力及頁面性能優化的操作空間也大大加強,不管是從團隊的敏捷性、還是應用的體驗,都有不錯的改善,比如以下幾個方面:

1. 前后端流程上的耦合大大減小,角色責任的專一性逐步形成

基于一部分后端服務能力的積累,比如保單相關的需求,在需求評審及開發程序中,只需要前端開發同學參加即可,前端開發同學與業務產品溝通業務邏輯,在api市場或服務檔案查詢相應的服務能力,完成業務開發,同時對于團隊逐步開展業務中臺化、前端組件化大有助益,整個架構對于豐富多變的業務需求的回應更敏捷,

2. 渲染層對后端的服務進行聚合,減少頁面請求

不管是H5網頁還是小程式頁面,均只需跟中間層打交道,前端開發人員根據業務的訴求,自行對介面進行聚合,端上只需要1個請求就可以開始渲染頁面,介面聚合之前,產品詳情頁面的顯示需要請求5個介面,平均的介面請求耗時為120ms左右,聚合后,通過中間層來請求5個內網介面,避免端與服務的多次連接耗時,

3. 中間層對資料進行加工,大大減少小程式端的邏輯代碼量

之前在小程式端的資料整合代碼,有些復雜的邏輯,可以交給中間層處理,這些代碼的節省對于業務持續增長時會越來越體現出價值,以年金產品詳情頁為例,資料在中間層聚合能夠節省10KB的體積,

中間層的引入是對生產力的進一步解放,但基于一個巨型 app 的 node 中間層,在后期的運維中也暴露出一些問題,中間層的應用部署在2臺CVM機器上,有其先天的一些不足:

1. 應對尖峰流量的沖擊能力差

微保經常會有一些運營和投放需求,這些事件都會導致瞬間的大流量打入,CVM的擴容相對滯后,

2. App級別的部署與發布

中間層不斷積累業務代碼,整個應用線性增長,每次部署與發布都是巨石應用的發布,部署效率低、風險高,

3. 前端開發人員在開發、測驗環境中需要自己在機器上查閱日志和服務操作,提高了普及的門檻,

微保架構 v3

基于上面的這些限制,團隊開始關注新的技術,加州大學伯克利分校計算機科學 Riselab 團隊的實驗室研究室提出:Serverless 是云計算的下一個浪潮,國內各大廠商也都開始布局 Serverless ,騰訊云 Serverless 團隊是國內比較早在這方面進行部署的團隊,技術已經非常成熟,在新東方、蘑菇街、嗶哩嗶哩、TP-link 等數百家企業成功落地實踐,

通過調研了解到騰訊云 Serverless 云函式的優勢:

  • 強大的擴所容能力,特別適合應對流量洪峰,且性能穩定,
  • 每個函式都是單獨運行、單獨部署、單獨伸縮的,用戶上傳代碼后即可自動部署,提升了獨立開發和迭代的速度,
  • 云函式提供精細的日志記錄,可方便地查看函式的運行狀況,并對代碼進行除錯、測驗和審計;支持相關的監控指標上報,能快速了解函式的整體運行概況,也可自定義云函式的監控指標,
  • 精確到 1ms 計費規則,只對正在運行的函式計費,

綜上,基本解決了架構 v2 中面臨的問題,可以說是省時省力,經過團隊整體評估,我們決定使用騰訊云 Serverless 云函式進行架構的進一步調整,調整后的角色合作流程示意圖,如下:

C 端的請求發至云函式 API 網關,網關轉發請求至相應的云函式實體,云函式再向后請求服務的網關,整個鏈條上最大的變化是將云函式取代了node app,成為中間層的技術形態,

使用云函式替換掉 node app,背后的考量有以下幾方面,也基本是針對 node app 實踐中遇到的一些問題去加以解決:

1. 自動擴縮容

開發者不需要專門去配置,云函式可以自己根據請求量在函式層級水平擴展,正常情況下,一個空的云函式(運行時間 50 ms),300 個并發,壓測可以達到 6000+ 的 qps,應對日常的高并發需求基本沒什么問題,

2. 函式級別的開發與部署

一個云函式對應一個 gitlab 的專案,函式開發與發布都是圍繞單個專案進行 CI/CD,高效、安全,

3. 按需收費

對于金融模式下的流量特點,大部分情況下請求量較少,云函式的使用可以避免穩定的資源投入,空閑情況下費用大大減少,

4. 簡單的運維管理

開發者不需要在服務器上自己維護服務和查閱日志,通過云函式的配套工具輕松管理函式、查閱日志,也可以根據自己的訴求設定告警機制,

微保使用 Serverless 技術的總體架構

微保每一次架構的調整,都致力于讓各種研發角色的職責更為單一、內聚,角色間更加解耦,但這種調整也需要有配套的工具,其中的 trade-off 需要根據短期成本和長期利益來衡量,騰訊云Servelrss 云函式很好的支持了本次架構的重新調整,

落地中的問題和解決辦法

使用騰訊云 Serverless 程序中也不免遇到問題,

例如,公司有自建 es 集群,所有日志都會放在es里面,但是云函式的日志無法直接放入我們es里面,只能存入騰訊云的 cls,這個對于我們后期日志分析, 告警都不好處理,通過調研騰訊云cls, 發現里面有個挺好用的功能,可以日志投遞到 kafka,在通過監聽 kafka,我們將日志成功存入我們的 es, 且時延保證在秒級,

另一個日志規范問題, 日志的規范關乎后期日志分析、告警, 但是實際處理中發現日志的元資料資訊較少, 比如我們有版本 tag,云函式系結了 cmdb 相關資訊,這些都希望在日志中列印出來, 后面我們發現云函式有個別名欄位,我們在云函式中發現一個別名欄位, 通過擴展了一下這個欄位,填入了更多資訊, 例如版本、cmdb 相關資訊,這樣在日志里面相關資訊也會體現出來,

關于使用騰訊云 Serverless 技術在風控和推薦演算法應用的介紹會在之后的文章為大家詳細展開,敬請期待!

One More Thing

立即體驗騰訊云 Serverless Demo,領取 Serverless 新用戶禮包 ?? serverless/start

歡迎訪問:Serverless 中文網!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/192864.html

標籤:其他

上一篇:?[再次強調法則長存]訂單交易設計須知

下一篇:六個月的機器學習 / 計算機視覺工程師

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more