為響應國家号召,各“大廠”紛紛發出在家辦公、延遲上班的通知,一時間“線上協同辦公”成為熱點。不同于大型集團公司,有足夠财力和能力建構遠端辦公系統,中小企業既缺乏足夠的預算又缺乏相應的經驗。阿裡雲雲效一直緻力于成為數字企業的研發效能引擎,在這個特殊時期,我們希望可以将自己的經驗和工具分享給中小企業,讓他們在家也能安全高效地開發軟體。
是以我們特别邀請了阿裡巴巴進階技術專家張燎原,詳解“線上協同開發”的要訣。

對于知識經濟活動,高可見性,快速連接配接能力意味着靈活協作的可能,而線上化是這一切的基礎,線上化讓人們有機會在任何時候任何地方,快速集結、組織協作,讓SOHO這樣的遠端辦公方式成為可能。
下面我們将從“線上項目協同”“線上代碼協同”“線上傳遞協同”三個方面,闡述如何實作線上協同研發,讓身處不同地域,不同時區的你我他,能夠快速連接配接起來,真正進入到數字化研發時代。
**線上項目協同
需求協作,從拉通和可視化端到端的價值流動開始**
可見,是協作的基礎。通過電子看闆,以需求為流動單元,端到端可視化價值流,以流動效率為核心組織需求傳遞。可視化端到端價值流必須做到:價值驅動,即每一個流動單元展現的都是展現使用者價值的業務需求;前後拉通,即可視化的目标是“端到端”的價值流,始于使用者問題的提出,終于使用者問題的解決。
我們可以通過以下三個标準來檢驗可視化的效果,即:
•是否能反映端到端的傳遞過程
•是否能即時展現影響價值流動的瓶頸和問題
•是否能依據可視化的資訊進行協作和做決定
同時,打通從項目協作到軟體釋出的全鍊路,代碼送出和釋出資訊同樣可以即時反映到需求卡片上,集中及時的工作狀态同步,減少溝通基本靠吼的套路,使得項目管理的目标更關注在價值傳遞和問題解決上。
管理價值流動,建構價值回報閉環,讓傳遞更可控
軟體傳遞的關鍵,是客戶價值的流動,而組織壁壘、溝通延遲、協作阻塞是主要障礙。基于端到端可視化的價值流看闆,産品需求排期,還是團隊每日站會的任務指派,圍繞需求看闆,來組織日常的項目協作。自右往左檢視需求的傳遞狀态,從測試工程師、開發工程師到産品經理,跨職能協同。同時,需求的任何風險及問題,高亮顯性地展示在看闆上,以釘釘等即時通信工具,快速回報到責任人,做到即時發現、即時響應,就問題快速連結集結。
形成從需求規劃、需求排期、每日站會,再到需求複盤的完整價值回報閉環。從整體傳遞節奏上,形成月規劃、周排期、日站會的節奏。而這一切,完全可以通過線上化的電子看闆進行。
限制在制品數量,加速業務需求傳遞
影響需求(價值)流動效率的關鍵是批量和并行,通過限制在制品數量(我們稱之為束水攻沙),加速需求傳遞。同時,數字化協作,有利于研發過程中,效能資料的沉澱,建立效能改進的基線和願景目标,以客戶響應周期和品質提升為目标,驅動問題的發現和解決,建立持續改進的基礎。
線上代碼協同
代碼協作是代碼集體所有制(Collective Code Ownership)
團隊成員共同為代碼負責。基于Git分布式版本控制系統,實作了基本的代碼托管理能力。在目前的代碼協作概念中,分支即是協作的載體,世界各地的開發者們可以根據産品需求,建立不同分支,同時開發。恰當的分支模式,讓分散的工作,快速內建在一起,并在版本上可追溯。每個代碼庫的readme資訊詳細說明代碼設計,建立基本的代碼質理管理标準(如單元測試和自動化的增量代碼靜态掃描),保證持續增量代碼不會影響已有功能,讓協作成為可能。
提升代碼的可見性,助力代碼協作
無論從簡單的複雜度、重複度分析、依賴分析,再到領域語言識别,安全敏感資訊識别等,像阿裡巴巴代碼規約等工具,提大提升了代碼的可見性,程式員們已經完全可以從大量的代碼中,抓住關鍵資訊。
同時,借助雲端IDE、雲端分布式代碼托管工具,有效地促進社交化程式設計,無論是結對程式設計,還是代碼評審,讓代碼本身及編碼過程顯性化,可以:
•促進團隊内部知識共享,提高團隊整體水準,確定團隊統一規範,不出現“天書”代碼;
•同時,工具的早期介入潛在缺陷發現率可以提升30%;
•透明的代碼,多人的讨論可以促進正向鼓勵,主動思考和追求卓越。
代碼安全
代碼線上化協同,代碼共享、複用文化的建立都依賴于代碼平台複雜的權限控制體系,這是一把雙刃劍,越開放意味着代碼洩露的風險越大,但是越封閉意味着協同效率低下。為了讓開發者可以更好地享受代碼協作帶來的紅利,需要重點注意以下幾個方面:
•代碼中的敏感資訊:比如資料庫密碼,被有意或無意洩露後會導緻公司業務出現緻命打擊。
•通路權限控制:常見的有通路IP控制,離職權限回收,代碼庫可見範圍設定等。
•異常行為風險識别:擁有事後審計,事前預警的能力,比如大量下載下傳代碼異常行為檢測和預警。
代碼協作是技術卓越的追求,是培養軟體匠藝精神的機會,借助先進的代碼協作工具及技術手段,促進代碼及編碼過程的可見性,同時,讓每一位程式員能夠有信心地送出每一行代碼。
線上釋出協同
現代化企業級軟體傳遞過程常常是多人多角色協作,跨越多個系統互動,同時為了保障傳遞可靠,傳遞流程往往也是複雜和難以完全标準化。而阿裡巴巴為什麼能緊跟市場變化,快速寫出高品質軟體,這得益于多年沉澱出的一套完整DevOps方法論和産品,確定軟體傳遞過程線上高效可靠。
從流程标準,工序改進,建立線上釋出協作
線上釋出協同,需要基于同一個傳遞流水線進行,首先,需要拉通軟體內建釋出的完整流程。打通從變更到傳遞的完整系統;将流程工具化,通過工具串起整個內建傳遞過程;同時,明确流程中各階段的準入準出标準,下遊活動基于上遊産出品質。其次,按工序建立品質守護系統,并使每一道工序自動化。再次,建立回報機制,有問題能夠精準定位,即時響應,快速修複。建立相應的度量回報機制,還能對流程和工序進行持續優化。
真正的線上釋出協同,應該是滿足:流程工具化、部署無人化、測試自動化、回報數字化的要求。
特性分支驅動多人多角色線上協作
為了實作多人研發不打擾,代碼功能可以自由可靠組合傳遞,阿裡巴巴生産經驗積累出一套AoneFlow代碼分支管理方法,以特性變更為單元,使用CI/CD 流水線完整的覆寫了從建構、測試到部署整個持續傳遞過程,過程中的每一個步驟和任務的資訊都可以通過消息、郵件、釘釘機器人等告知和追溯,使研發、測試、運維、配管等角色能線上協同,異步工作。
用雲原生技術打破開發與運維的邊界
以 Kubernetes、Serverless、Service Mesh、Cloud IDE 為代表的多項雲原生技術在過去一年讓人印象深刻。這套開箱即用的開源軟體,讓中小公司快速的獲得了以往網際網路大廠才有的精英軟體傳遞能力,比如複雜的流量治理能力,灰階釋出能力,A/B Test 能力,多環境管理能力,基礎設施一鍵拉起,快速擴縮能力等等。但在企業采納新技術的同時,也面臨着諸多挑戰,比如開源軟體複雜的搭建過程,黑屏化的互動設計,缺乏研發管理方法,缺乏企業權限管理能力等。阿裡巴巴也在積極将 CI/CD 工具、測試環境管理方法、應用運維理念、DevOps 協同方法論等與雲原生技術融合貫通,為開發者提供開箱即用的新技術解決方案。
使用“雲效”輕松實作一站式線上研發協同
工欲善其事必先利其器,雲效可以提供從“需求 ->開發->測試->釋出->運維->營運”端到端的線上協同服務和研發工具,讓你輕松實作一站式研發協同。
我們可以這樣使用雲效來完成一天的工作:
•晨會上團隊基于精益看闆進行需求、任務對齊,完成任務指派
•開發同學根據特性開發,建立變更分支
•通過線下或雲端開發環境進行程式設計工作,然後送出代碼
•代碼自動觸發自動的代碼掃描,并發送給指定的代碼評審員進行評審
•完成評審的代碼自動觸發內建釋出流水線,自動化的完成建構,生成Docker鏡像,分别在開發環境、內建環境及預發環境進行部署,完成相應的驗證工作;驗證完之後處于待釋出狀态,觸發上線稽核流程,運維完成稽核釋出上線
•過程中任何問題通過釘釘,遵循no news is good news的原則,及時回報到指定負責人,做到準确回報、即時響應,快速恢複。盡量避免垃圾短信式回報,過多的噪音,反而會降低協作的效率。
我們希望将雲效多年積累的研發實戰經驗和先進的工具分享出來,讓小企業,具備大智慧,快速開展在家研發軟體工作。同時,為降低中小企業的采購成本,雲效推出小微企業扶植計劃,30人以下研發團隊可以免費使用雲效全部功能。
免費體驗雲效:
https://www.aliyun.com/product/yunxiao如需幫助,可以加入雲效開發者交流釘釘群:
•雲效研發效能交流①群,釘釘群号: 11789512(已滿)
•雲效研發效能交流②群,釘釘群号:23362009(歡迎加入)
延伸閱讀:
•
研發效能提升和靈活實施36計 帶你了解阿裡巴巴代碼規約工具 阿裡在使用一種更靈活的軟體內建釋出模式 火得一塌糊塗的kubernetes有哪些值得初學者學習的關于雲效:
雲效,企業級一站式DevOps解決方案,源于阿裡巴巴先進的管理理念和工程實踐,緻力于成為數字企業的研發效能引擎!雲效提供從“需求 ->開發->測試->釋出->運維->營運”端到端的線上協同服務和研發工具,通過人工智能、雲原生技術的應用助力開發者提升研發效能,持續快速傳遞有效價值。