保證交付效率和質量把控是一項業務長遠、穩定發展的必經之路,來自微信支付的張洪暉在第二屆小程序雲開發技術峯會上就介紹了高速發展的業務團隊如何利用小程序雲開發搞定持續交付和質量管控。html
在上半部分文章中,做者主要介紹了微信支付境外團隊應用雲開發的背景,以及在持續交付側作出的探索實踐。下半部分文章將聚焦於團隊在質量管控中作出的嘗試。前端
先來介紹一下金融業務下的質量難題,不少團隊可能常常會遇到一些質量問題。你們能夠思考一下,在不把控質量的狀況下追求效率是否有實質性做用?redis
對於這個問題,以微信支付爲例:微信支付是一個傳統金融與互聯網的結合。傳統金融的穩定性要求比較高,必定程度上能夠犧牲效率來換取穩定性,而互聯網追求的就是效率,當質量和效率進行結合的時候,對團隊要求是很是高的。小程序
舉個例子,咱們團隊小程序的發佈節奏是平均每週一個版本,天天平均 新增800行代碼、修改300行代碼。業務壓力來了以後,開發同窗進行代碼的變動時就涉及到質量管控問題,這反過來可能會影響效率。例如,在進行重構和代碼的修修補補時,其餘需求的涌入,會加大整個業務的壓力,久而久之,極可能進入到一種負循環中。後端
那麼,如何破局?常規思路下,業務壓力大,首先想到就是經過增長人力來緩解業務壓力,但因爲每一個人的代碼風格不盡相同,人員增多也增長了代碼的管控難度。而在重構方面,團隊經過持續交付的流水線、重構抑制效率的損失,但反過來,也存在重構某些代碼影響線上業務的風險。安全
由此,爲了解決這個痛點,團隊提出了很是重要的一點——質量管控。服務器
下面重點介紹下團隊是如何省心又省力地作好質量管控。微信
這是團隊在優化質量管控前的狀況,整體來講,流程分爲需求、開發、發佈和線上階段。歸納來講,能夠分爲事前、事中和過後三個階段。架構
對於金融業務來講,這真的夠了嗎?事實上,以上流程存在必定的隱患,以小程序的底層架構爲例,相信對小程序開發熟悉的同窗很是瞭解,圖中的邏輯層和渲染層是分離的,也即邏輯層沒法拿到渲染層的結果,沒有辦法對渲染層進行監控。less
假設在這種狀況下,帳單和資金展現出現了問題,必定會引發用戶的投訴,那麼,如何防範這種狀況的發生?
首先,團隊便想到作標準化的組件,其中最主要的就是金額渲染的組件,不單要作,還要考慮開發同窗有沒有真正用起來。爲此,在開發流程當中,會對敏感字段進行一些掃描,來看一下組件是否有被正確的使用。
下圖左側是一個例子,咱們經過關鍵字檢測到這段代碼沒有正確使用金額渲染的組件,就當即中止了代碼的提交。而且,爲了加強檢測的力度,團隊也會在流水線中進行關鍵字的掃描。
靜態金額渲染檢查必定程度上解決了咱們的問題,可是它足夠安全嗎?固然不是的。試想,若是關鍵詞中的 money 拼錯了,寫成了 mnoey,是否是就被漏掉了?另外咱們 UI 也有可能溢出,致使帳單或資金展現出錯的風險。
這裏團隊就引入了一個 UI 自動化截屏的方案,底層基於小程序開發者工具的 automator 的能力,實現自動地拉起開發者工具,而且跳轉到對應的頁面,而後對數量進行攔截(提早寫好接口用例),在攔截以後,會對頁面進行滾動截屏,截下來的圖片會進行圖片的比對並歸檔,在歸檔以後,還會通知產品和研發去進行審覈。
舉個例子,咱們用一個命令啓動了開發者工具,在開發者工具啓動以後,會啓動模擬器,模擬器會根據咱們預設好的一個路徑去跳轉對應的頁面,並自動進行滾動截屏。當咱們截完全部的頁面後,會在本地將這些圖片保存下來,以供比對和歸檔。
左邊是咱們的舊截圖,右邊是咱們的新截圖,兩個截屏之間進行對比,中間是對比,發現底部的優惠券區域有所變化:新增了小紅點。由此咱們就只需關心本次變動是否有影響到這一塊邏輯,若是有的話,須要及時排查問題。
這裏就是剛纔講到的質量管控的整體思路,是分爲事前、事中和過後三個階段進行。
最後,總結下團隊爲何使用雲開發,以及雲開發到底給了咱們什麼樣的能力?
第一,雲開發給了前端同窗一個全棧開發的能力,同時對後端同窗也是很是受益的,讓後端能夠更關注業務的穩定性。
第二,雲開發成本很是低,具體包括低開發成本,低開發門檻和零運維成本。
第三,團隊很是看重雲開發的生態能力,包括接入了微信支付、COS 和 redis各類各樣的能力套件,都支持開箱即用。
用上雲開發以後,你們也能夠思考一下是否有「用好」雲開發呢?本次分享的內容主要集中在如何用雲開發提高效能,包括持續構建、持續發佈 ABTest 方面,而在質量方面,咱們也會有灰度發佈、自動化測試以及 UI 的自動截屏,另外,使用雲開發的過程當中也運用到了微信的私有鏈路,能夠提供強大的安全防刷能力。不管路徑如何,這些目標都是同樣的,最終都是爲了更好地支持咱們業務的快速迭代以及小步快跑。
但願你們都能基於雲開發這個研發平臺,多思考,多嘗試,站在雲開發的「肩膀」去作出更多適用於自身業務的改良。
雲開發(Tencent CloudBase,TCB)是騰訊雲提供的雲原生一體化開發環境和工具平臺,爲開發者提供高可用、自動彈性擴縮的後端雲服務,包含計算、存儲、託管等serverless化能力,可用於雲端一體化開發多種端應用(小程序,公衆號,Web 應用,Flutter 客戶端等),幫助開發者統一構建和管理後端服務和雲資源,避免了應用開發過程當中繁瑣的服務器搭建及運維,開發者能夠專一於業務邏輯的實現,開發門檻更低,效率更高。