
1. 背景
金融級移動開發平台 mPaaS[1](Mobile PaaS)為 App 開發、測試、營運及運維提供雲到端的一站式解決方案,能有效降低技術門檻、減少研發成本、提升開發效率,協助企業快速搭建穩定高品質的移動應用。在我們日常運維過程中發現,大部分使用者對螞蟻的研發流程比較感興趣,特别是在上百個開發者同時在一個app的環境内進行高效開發,技術選型、研發流程還有線上運維是怎麼做的,成為大家關注的重點。以下分享我的一些了解。
2. 技術選型
目前研發模式分為Native模式和動态化模式兩種,其中Native技術棧主要覆寫基礎中間件,還有核心高保鍊路或者變更很少的一些基礎頁面,比如收銀台,登入頁面,付款碼等。其他場景業務一般會通過動态化的方式,解耦用戶端版本釋出。其中,線上H5一般适用于活動營銷活動,離線包場景一般用于有固定入口的常駐業務,如果有跨端多投場景,一般會選擇小程式,通過小程式的跨端釋出實作多端投放。
3. 研發流程
1.需求階段:主要是需求評審,大家意見達成一緻。
2.開發階段:代碼開發,代碼合并以及打包等
3.測試階段:測試案例的編寫,功能測試,相容性測試等
4.內建階段:代碼改動申請進對應的內建基線,進行內建驗證
5.釋出階段: 通過内灰,外灰,管道包全量,站内全量實作釋出上線
4. 分支管理
原則:基于分支開發,基于主幹釋出
1. 變更操作流程
1) 建立變更
2) 選擇倉庫,基于 Master 建立分支
3) 在分支上打工程包,打安裝包,自測(可以基于變更分支建立 feature 分支,并行開發)
4) 合并到 Master 打包、提測
5) 申請內建、釋出
2. 獨立釋出
主要用做差別于日常變更的獨立釋出疊代,比如單獨針對某個廠商做的預裝包适配疊代,就适用于獨立釋出。
3. 多App管理(雙Master)
使用場景:聚寶、香港支付寶、口碑、支付寶共用同一個代碼倉庫,同一代碼庫需要多app并行,需要有自己獨立的master分支,在合并的時候,在不同的app端進行多主幹的合并。
5. 線上運維
1. 多元度灰階釋出能力
MDS提供多元度的釋出模式,釋出前需要經過白名單灰階,内部灰階,外部灰階,百分比灰階等多層次灰階,不斷擴大灰階範圍,直到Crash率,ANR率等穩定性名額達标後才進行全量的釋出。
2. 多角度線上監控
MAS提供了多角度的實時監控名額監控,包括Crash率,ANR率等核心名額,同時這些核心的名額上報都是通過實時通道完成的上報,友善問題的快速發現。
3. 輿情監控
除了以上一些核心名額的監控,同時提供了輿情的監控平台,開發者可以設定自己關注的關鍵字,在灰階期間去檢視相關産品的線上使用者輿情,真實的回報使用者問題。
4. 線上問題定位
通過上述的多管道發現問題後,首先可以通過用戶端上報的行為日志進行分析,同時也可以通過MAS提供的日志拉取功能,拉取使用者的詳細日志進行進一步的診斷分析。
5. 自動容災降級
在積累了多年的用戶端問題處理經驗後,用戶端SDK内部也沉澱了一套自恢複的容災降級政策。比如對于多次啟動後重複閃退的使用者,用戶端會嘗試在啟動後清除app私有目錄下的一些檔案,解決由于髒資料導緻的極端重複閃退。
6. 線上問題修複
針對不同的問題提供了不同的能力實作動态修複,比如對Native子產品實作動态修複的hotpatch機制。
參考文檔
[1] mPaaS平台:
https://www.aliyun.com/product/mobilepaas/mpaas我們是阿裡雲智能全球技術服務-SRE團隊,我們緻力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基于雲建構更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運作更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿裡雲SRE技術學院釘釘圈子,和更多雲上人交流關于雲平台的那些事。