初創企業如何實現2天快速上線?

                                    

摘要: 初創企業在業務快速發展中,如何利用有限的資源,做高效快速迭代?如何減少手工操作的依賴,提高發布效率,將跨組織的專案溝通效率提升50%?

雲小妹導讀:初創企業在業務快速發展中,如何利用有限的資源,做高效快速迭代?如何減少手工操作的依賴,提高發布效率,將跨組織的專案溝通效率提升50%?

最近,初創企業愛賽因斯在雲效公有云上試點,實現初始專案2天上線的可喜成果。

本文作者:孫志樑,愛賽因斯技術總監,主要負責各業務線的技術開發和團隊管理工作。

案例重點介紹

通過雲效流水線功能大大提升了內部研發專案的釋出效率和質量,實現初始專案2天快速上線。外部託管專案通過雲效需求管理、缺陷管理功能,有效提升了工作效率,在與外部客戶、供應商的溝通效率上提升了50%以上。

關於愛賽因斯

愛賽因斯是一家以創新驅動的數字化資訊服務集團公司,旗下擁有PMCAFF、外包大師、Nework、知一諮詢、光合孵化器、X-CLUB等子品牌,業務型別涵蓋社群、活動/會議、培訓、產品諮詢、軟體資訊及研發、區塊鏈及相關服務、人才顧問及投資、創新專案投資孵化等。已獲得爾法公社Pre-A輪融資。

其中外包大師作為一個網際網路產品技術外包管理服務平臺,為委託方提供從產品諮詢、設計、開發直至上線的全流程服務,所以除了我們內部研發專案外,還有很多外部客戶委託的專案,這一類專案由甲方把專案需求委託給外包大師,外包大師會匹配和簽約外部供應商,並且對專案進行管理驗收,完成甲方需求。

愛賽因斯的痛點

內部專案

專案依賴較多手工操作,釋出效率低下而且難以形成知識積累。在專案上線時,構建部署主要都是人工在伺服器上進行,安裝構建工具、執行構建過程都可能會遇到各種問題和進行解決,耗費時間比較長,即使有文件或者操作手冊,又往往存在更新不及時的問題,新同學一般要通過多次詢問和自己登入伺服器操作等方式才能確定正確的構建和釋出步驟。

釋出出錯率高,沒有有效的回滾機制。很多專案型別的開發語言是PHP等指令碼語言,部署方式是在伺服器的部署路徑下直接更新程式碼,並且直接在部署路徑進行構建,一旦操作錯誤或者遺漏,就會影響線上服務。同時一旦釋出出現問題,判斷回滾的版本需要人工根據程式碼提交記錄進行確定,耗時長且容易回滾出現新的問題。

外部專案

沒有一個很好的協同管理工具能把流程串起來.外包大師專案整體專案週期偏長,大部分專案週期都超過1個月,之前對於交付鏈條很長的專案管理過程,更多的是通過一系列不同的工具管理專案實施的不同階段,比如石墨文件、Teambition、Project、Jira等,很長時間內,並沒有找到一個很好的協同管理工具能一次性的串起這個流程,並解決其中的眾多問題。如:需求變更管理,版本迭代管理、成員許可權管理、程式碼分支管理、問題追蹤管理等等。

採用了哪些阿里雲產品?

阿里云云效一站式研發協同解決方案
ARMS業務實時監控服務

為什麼選擇阿里云云效?

內部專案

對內部專案,我們主要想提高發布效率和穩定性,同時減少構建和部署環節對人工操作的依賴。考慮過三個方案:

使用Jenkins或者Teamcity等持續整合解決方案
阿里雲的codePipeline
阿里云云效

評估下來方案一雖然比較靈活,可以滿足需求,但初始的安裝配置成本和維護成本都比較高,而且作為基礎設施服務一旦出現問題,團隊目前並不擅長解決,所以放棄。

方案二codePipeline很早之前使用過,功能相對單一,主要提供流水線服務,介面操作也不夠友好,和雲效相比,肯定是優先選擇功能更豐富,使用更友好的雲效。

在雲效的使用上,我們採用了新專案先嚐試,老專案後遷移的思路,一方面積累雲效使用經驗,同時也避免因為研發流程調整影響已有專案的迭代和穩定性。

目前我們一個專案在雲效上從開始準備部署到可訪問,一般需要0.5天~2天(取決於是否之前已經配置過相同型別的專案),會經歷以下步驟:

第一天

1.採購和新增伺服器 (耗時1h,如果之前沒有相同環境,需要安裝執行環境0.5d)

建立用於測試環境或者生產環境的ECS,在雲效企業設定中新增主機到雲效。我們針對不同的語言執行環境建立了不同的映象,做到購買ECS後,不需要額外配置就可以馬上投入使用。

2. 建立雲效應用 (耗時1h)

每個可以獨立進行構建和部署的研發專案,註冊為一個應用。指定程式碼倉庫、所屬專案以及專案語言型別,在雲效中建立應用。

3. 配置流水線 (耗時2h)

雲效配置流水線頁面

我們的流水線一般只保留兩個步驟,構建和部署,測試環境的部署和正式環境的部署拆分為多個流水線。如果是之前沒有配置過的專案型別,構建命令和部署命令一般是需要除錯時間比較長的:

a)  構建命令,不同語言構建命令不一樣。我們公司主要使用的PHP7、Java8、Nodejs8在雲效預設的構建環境已經都支援了。

b)  配置應用環境,為應用的每個環境指定伺服器和部署路徑、部署命令。

構建命令和部署命令都可以,可以先在伺服器或者本地手動執行構建成功後,再配置到雲效,後續相同型別的專案可以進行復用。

第二天

4. 構建和部署 (耗時1h)

雲效構建部署頁面

流水線編輯完成後,就可以執行除錯了,順利的話可以一次性成功,實際是往往因為程式碼問題或者伺服器環境導致不能一次性成功,好在雲效在構建和釋出階段都有詳細的日誌輸出,可以看到構建命令和部署命令的執行過程和輸出,用於排查和修復問題。

5. 訪問入口配置 (耗時1h)

流水線執行成功後,應用已經可以對外提供服務了,我們的大部分專案都是web專案,這個時候會新建負載均衡指向新部署的服務,接著配置域名到負載均衡的IP地址,就可以提供給測試同學測試或者使用者訪問使用了。

6. 異常回滾 (耗時<1h)

日常釋出會,難免會有一些情況導致線上服務執行異常,

藉助實時業務監控(arms),可以把關鍵錯誤日誌、核心業務指標有效監控起來, 一旦釋出後收到報警或者指標異常 ,在雲效中直接操作回滾就可以,雲效的回滾會清晰的列出歷史版本用於選擇,同時回滾直接使用之前構建成功的結果,不需要重新構建,回滾速度比手動伺服器操作要快出一個數量級。

在通過新專案中熟悉了雲效的使用並體驗到雲效帶來的便利後,我們把老專案也進行了遷移,這樣在雲效中,就能看到公司所有的研發專案,很大程度上避免了黑盒子專案的存在。

外部專案

在外面委託專案中,我們作為平臺方,需要協調甲方客戶和乙方供應商團隊,雲效平臺正好解決了線上協同問題,把甲乙方很好的聯絡在一起。

如下圖:可通過成員管理把甲方參與人員和乙方開發團隊新增到專案成員中,甲方可以看到專案實際進展,乙方也可以及時更新專案進展。

雲效跨企業協作專案溝通

進度管理:當專案經理將工作包拆解到具體模組並指定開發負責人後,負責人可按實際完成情況勾選任務,就可以相對準確的顯示專案的實際進度。

雲效進度跟蹤頁面

範圍管理:對於專案實施過程中,新增的需求,產品經理可以通過手動新增和自動匯入兩種方式更新或調整需求,並按模組和版本進行分配責任人,如下圖:

雲效專案許可權分配頁面

效果檢驗:開發完成的程式碼推送到遠端分支,就可以自動部署到到測試環境,平臺QA和甲方客戶就可以可及時檢驗效果。

雲效頁面截圖

 

BUG追蹤:測試負責人可以新增BUG修復任務到缺陷模組 並指定任務負責人,對於開發團隊成員,可以單獨檢視自己名下的待解決BUG,如下圖:

雲效頁面截圖

獲得的成效

雲效平臺在我們的內部研發專案的迭代開發和外部託管專案全週期管理中發揮著重要作用,從使用前後的一些資料顯示研發效能上有了顯著提升。

內部專案

釋出效率:10分鐘的手動命令列操作 -> 5分鐘的介面自動化操作。

回滾速度:10分鐘人工確認操作-> 2分鐘自動化操作。

釋出質量:手動釋出/回滾出錯或者遺漏:10% -> 無。

新人學習釋出上手時間:2天->0.5天。

研發專案基礎資訊:個人經驗和口口相傳 -> 清晰可靠的系統記錄。

外部專案

多方協同不再需要通過每日例會或日報的形式彙報專案進展,參與專案的甲方、平臺方、分散式研發團隊都可以直觀的看到專案進展,溝通效率提升了50%以上。

需求可按模板匯入,對於大量需求需要初始化錄入時,匯入的功能大大提高了效率,以及新增需求的錄入、管理等,相比之前人工通過Excel更新功能列表並同步給專案團隊,整體範圍管理的效率提升了30%。

程式碼的自動化構建部署,驗收效率提高了20%。

原文連結


(adsbygoogle = window.adsbygoogle || []).push({});

function googleAdJSAtOnload() {
var element = document.createElement(“script”);
element.src = “//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js”;
element.async = true;
document.body.appendChild(element);
}
if (window.addEventListener) {
window.addEventListener(“load”, googleAdJSAtOnload, false);
} else if (window.attachEvent) {
window.attachEvent(“onload”, googleAdJSAtOnload);
} else {
window.onload = googleAdJSAtOnload;
}