本文作者:弗止,阿裡雲雲效技術專家;辰顔,阿裡雲雲效進階開發工程師
本文源自:阿裡雲雲效團隊出品的《阿裡巴巴DevOps實踐指南》,前往:
https://developer.aliyun.com/topic/devops,下載下傳完整版電子書,了解阿裡十年DevOps實踐經驗。
雲端開發指開發者可基于雲平台完成編碼、測試、釋出等研發流程。一個完整的雲端開發平台不僅是提供了一個雲端的編碼環境,還提供了一整套研發工具和配套設施,讓開發者做到在雲端即可完成應用程式的需求、編碼、測試和運維的全生命周期管理。
傳統的本地開發的問題
如下圖所示,在傳統的開發模式中,企業研發人員通常在本地完成代碼的編寫和測試,然後把代碼推送到遠端伺服器,通過一系列的建構和內建,最終釋出到生産環境,并持續利用線上的運維體系完成線上系統的監控和運維;同時,企業也會采集部分研發過程中的關鍵資料,用來度量團隊及個人的效能。

随着各種軟硬體技術逐漸更替,公司規模也越來越大,為了适應這種變化:
- 公司需要不斷為企業研發人員配備合适的本地研發工具(如:多核高記憶體的計算機裝置、Mac 筆記本電腦),這些裝置可能價值不菲,而且需要定期的更新換代;
- 新加入的員工,在正式開始開發前,需要配置複雜的本地開發環境,安裝特定的軟體及插件,并熟悉項目的研發流程及各個線上系統;部分項目因為網絡配置等問題,可能第一時間還無法在本地啟動,還會耽誤不少額外的配置及調試時間;
- 公司需要投入較多的資源,才能建構起比對管理者需求的效能度量系統和安全管控系統,并且因為雲端體系天生對開發者本地環境的弱管控性,效果隻能差強人意;
阿裡巴巴也不例外,随着近些年各項業務的飛速發展,人員的快速擴充,如何解決發展過程中帶來的類似問題變得迫在眉睫。而雲端研發作為一種新興的技術形式,其獨特的優勢恰好可以用來解決上述問題。
雲端開發的典型應用案例
案例 1:前端元件的開發
在阿裡内部,存在大量的基于 Node.js 建構的前端工程,這些前端工程普遍采用子產品化的組織方式,在開發過程中會随着需求疊代産生衆多的子產品(或元件)。同時,有些前端工程會邀請業務方參與共建,即由提出功能需求的團隊在大的标準下自行開發元件,并釋出上線,在平台中內建自己的場景。
在這樣的背景下,元件的開發會被高度的抽象,大部分的步驟都可以由工具輔助完成(如下圖中,業務開發人員隻需要關注自己的業務邏輯即可),這樣既提升了研發效率,又提升了元件的開發品質。
前端元件開發過程:
雲端開發的開箱即用,恰好可以解決類似的問題。開發者打開浏覽器就是一個配置好的環境,實作零配置上手;而環境配置可以由項目組的資深同僚維護,配置好針對某個項目的系統版本、程式運作時、SDK 和 IDE 插件集合。相比使用本地的研發工具,雲端開發可以實作:
- 研發流程的産品化,從元件的建立到最終的釋出一氣呵成,不用再在多個平台工具上來回跳轉;
- 屏蔽使用者作業系統的差異,提供統一的研發環境,不用再解決 Windows/Mac 的差異,不用擔心本地Node.js 的版本問題;
- 所有環境都會預裝好必要的開發提效工具,如:規約掃描和修複工具、預覽調試工具、各環境釋出工具等;
- 充分釋放本地磁盤空間,不用擔心磁盤被 node_modules 占滿;
案例 2. 代碼安全管控與研發過程數字化度量
在政務、金融以及部分高科技企業的研發場景中,對代碼的安全管控要求極其嚴格。但近幾年,公司内部源代碼洩露的事件時有發生,有的被明碼标價進行出售,标價數十萬甚至上百萬美元;有的直接被公開在網絡上,任何人都可以通路下載下傳。一旦發生類似事件,将會直接或間接造成商業資訊洩露及公司聲譽受損。
當使用本地開發時,源碼的傳輸環境、本地的持久化媒體不可控,對于員工有意洩露源碼的行為似乎無可奈何。當使用雲端開發時,一切都迎刃而解:開發者可以從代碼庫或需求直接打開網頁開始雲端開發,研發過程中代碼不落本地磁盤,既能減少傳輸風險,又避免了員工本地環境被植入木馬、進而在不知情的情況下洩露源碼的可能;同時,在雲端開發環境中可以對使用者的浏覽、拷貝行為做不同程度的管控,結合告警和系統自動攔截,可有效降低源碼洩露的風險。
在阿裡内部,當涉及到對保密性要求極高的項目,或者當企業外部成員參與對代碼保密性有要求的項目時,我們會推薦項目團隊使用雲端進行研發,進而有效防止源碼的洩露。
此外,随着越來越多的企業進入到數字化轉型階段,管理者期望能更加全面的看到企業員工的投入與産出,并且針對項目人員分布與研發過程效率做出更加及時的調整與改進。在過去,所有的數字化資訊都依賴人工的回報和統計,回報的是否準确、統計過程中是否有纰漏都會直接影響管理層的判斷。但如果把研發過程搬到雲上,所有的研發過程資料就能生在雲上、用在雲上,想要借助數字化提升研發效率變得更加容易。
在阿裡内部,團隊中經常會出現一名正式員工帶領多名企業外部成員完成項目的情況。在需要對企業外部成員的工作進行績效評定時,傳統的評定方式通常是參考需求完成數量、代碼缺陷率等名額,但實際工作中需求有大有小、有難有易,完全基于結果名額進行評定很難做到公平公正,讓優秀的員工脫穎而出。借助雲端開發,可以讓所有研發過程中的資料也透明出來,如各需求的編碼時長、臨時版本釋出次數、過程代碼與最終有效代碼的比例、機關時間代碼産出量等。通過結合研發過程資料,也可以讓績效評定更加透明公正。
總結
雲端開發具備靈活定制、開箱即用的特點,借助好這兩個特性,就可以創新性的解決掉傳統本地開發過程中的頑疾。除了上述兩個案例外,我們認為,目前适合雲端開發落地的場景還可以是:
- 雲原生場景中的輕量代碼開發,如 Serverless 場景,這類場景中研發人員隻需要集中式的編寫業務邏輯,大量的架構類代碼已被預設隐藏,并且調試、部署方式有别于傳統研發過程,更适合雲端開發的落地。
- 各類垂直化的場景,這類場景通常需要有針對性的定制,與特定的線上系統進行打通,隻要能利用好雲端開發靈活定制的特性,就有望實作開發階段 10 倍效能的提升。
目前,阿裡巴巴内部的雲端開發平台目前已認證阿裡雲雲效對外輸出,前往
ide.aliyun.com,秒級體驗雲端編碼、代碼智能補全等黑科技。
免費下載下傳《阿裡巴巴DevOps實踐指南》
阿裡巴巴合夥人和業界多位大佬力薦、何勉、陳鑫等17位阿裡資深技術專家聯袂出品、阿裡十年DevOps經驗沉澱總結、阿裡巴巴DevOps落地實踐一本通。
前往:
,下載下傳完整版電子書。