mPaas研發流程和線上運維介紹

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"一 背景"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"   金融級移動開發平臺 "},{"type":"link","attrs":{"href":"https://www.aliyun.com/product/mpaas","title":null},"content":[{"type":"text","text":"mPaaS"}]},{"type":"text","text":"(Mobile PaaS)爲 App 開發、測試、運營及運維提供雲到端的一站式解決方案,能有效降低技術門檻、減少研發成本、提升開發效率,協助企業快速搭建穩定高質量的移動應用。在我們日常運維過程中發現,大部分用戶對螞蟻的研發流程比較感興趣,特別是在上百個開發者同時在一個app的環境內進行高效開發,技術選型、研發流程還有線上運維是怎麼做的,成爲大家關注的重點。以下分享我的一些理解。"}]},{"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},"content":[{"type":"text","text":" 目前研發模式分爲Native模式和動態化模式兩種,其中Native技術棧主要覆蓋基礎中間件,還有核心高保鏈路或者變更很少的一些基礎頁面,比如收銀臺,登錄頁面,付款碼等。其他場景業務一般會通過動態化的方式,解耦客戶端版本發佈。其中,在線H5一般適用於活動營銷活動,離線包場景一般用於有固定入口的常駐業務,如果有跨端多投場景,一般會選擇小程序,通過小程序的跨端發佈實現多端投放。"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/1b/1b075f567f70d53760cd73fa3dd7134a.png","alt":"image.png","title":"image.png","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"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":"image","attrs":{"src":"https://static001.geekbang.org/infoq/5e/5e7b82a3d68e20081b5c7d1e67405942.png","alt":"image.png","title":"image.png","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"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":"1.需求階段:主要是需求評審,大家意見達成一致。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2.開發階段:代碼開發,代碼合併以及打包等"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3.測試階段:測試案例的編寫,功能測試,兼容性測試等"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"4.集成階段:代碼改動申請進對應的集成基線,進行集成驗證"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"5.發佈階段: 通過內灰,外灰,渠道包全量,站內全量實現發佈上線"}]},{"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},"content":[{"type":"text","text":"原則:"},{"type":"text","marks":[{"type":"strong"}],"text":"基於分支開發,基於主幹發佈"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/47/472c505a64838579861bb95059236bed.png","alt":"image.png","title":"image.png","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"1. 變更操作流程"}]},{"type":"numberedlist","attrs":{"start":"1","normalizeStart":1},"content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"創建變更"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"選擇倉庫,基於 Master 創建分支"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"在分支上打工程包,打安裝包,自測(可以基於變更分支創建 feature 分支,並行開發)"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","text":"合併到 Master 打包、提測"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","text":"申請集成、發佈"}]}]}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"2. 獨立發佈"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"主要用做區別於日常變更的獨立發佈迭代,比如單獨針對某個廠商做的預裝包適配迭代,就適用於獨立發佈。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"3. 多App管理(雙Master)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用場景:聚寶、香港支付寶、口碑、支付寶共用同一個代碼倉庫,同一代碼庫需要多app並行,需要有自己獨立的master分支,在合併的時候,在不同的app端進行多主幹的合併。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"五 線上運維"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"1. 多維度灰度發佈能力"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" MDS提供多維度的發佈模式,發佈前需要經過白名單灰度,內部灰度,外部灰度,百分比灰度等多層次灰度,不斷擴大灰度範圍,直到Crash率,ANR率等穩定性指標達標後才進行全量的發佈。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"2. 多角度線上監控"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"MAS提供了多角度的實時監控指標監控,包括Crash率,ANR率等核心指標,同時這些核心的指標上報都是通過實時通道完成的上報,方便問題的快速發現。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"3. 輿情監控"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  除了以上一些核心指標的監控,同時提供了輿情的監控平臺,開發者可以設置自己關注的關鍵字,在灰度期間去查看相關產品的線上用戶輿情,真實的反饋用戶問題。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"4. 線上問題定位"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 通過上述的多渠道發現問題後,首先可以通過客戶端上報的行爲日誌進行分析,同時也可以通過MAS提供的日誌拉取功能,拉取用戶的詳細日誌進行進一步的診斷分析。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"5. 自動容災降級"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 在積累了多年的客戶端問題處理經驗後,客戶端SDK內部也沉澱了一套自恢復的容災降級策略。比如對於多次啓動後重復閃退的用戶,客戶端會嘗試在啓動後清除app私有目錄下的一些文件,解決由於髒數據導致的極端重複閃退。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"6. 線上問題修復"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"針對不同的問題提供了不同的能力實現動態修復,比如對Native模塊實現動態修復的hotpatch機制。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章