天天看點

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

雲原生是近幾年IT圈最火熱的詞彙之一,幾乎每一個雲計算産品都會或多或少跟雲原生發生關聯。那到底什麼是雲原生?它對企業的項目研發又有什麼樣的影響跟要求?雲原生這個大的時代背景下,企業又應如何落地相應研發模式來提高研發效率,提升企業競争力呢。

容器是雲原生變革的根本,其他的東西都是基于這個基礎所引申和內建起來的。

雲原生時代的軟體研發要求:快、穩和省。

研發模式選擇取決于是持續釋出的方式還是版本制釋出的方式。

通過分支模式和工具平台,可以從繁瑣的手工工作中解放出來,讓我們研發協同的效率更高。

雲原生變革的根本

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

2019年Pivotal官網給的定義,雲原生關注4點,包括:DevOps,持續傳遞,容器以及微服務,這裡我們隻把容器凸顯出來。因為其他三個并不是雲原生所特有的,我們本來就在做這樣的一些事,這裡唯一的差別就是容器。容器就像集裝箱,它成了一個标準,成了這幾年雲原生研發的一個底座,基于這個底座,再內建持續傳遞、微服務和DevOps等實踐,就組成了我們通常所說的雲原生。

雲原生時代軟體開發的特點

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

随着雲計算的發展,越來越多的企業開始上雲,企業上雲的第一個前提條件就是能夠基于雲上的這些服務提供更好的業務需求的響應能力,需要更快。其次,因為現在企業很多基礎設施也在雲上,比如說一些金融類的服務也慢慢上雲了,這要求服務要非常的穩,不能出現問題,不管是安全問題,還是穩定性問題。第三,有這兩個基本條件之後,企業希望投入的成本能足夠的低,成本可能包括兩方面,一方面是實體上的,硬體上的設施投入,比如ECS等,另外一個是我的人力成本,不管開發也好,運維也好,在這上面投入的人力成本要盡可能的低,是以總結下來就是三個字,快、穩和省。

接下來,我們看一個企業的實際場景問題,為什麼團隊變大了,釋出卻變得更困難了。

這是個很典型的問題,尤其當一個團隊,從十幾個人快速發展到一百多個人的時候,是非常明顯的。原來一周可以發個一兩次,但是到了100多人的時候,可能一個月才能發一次,這背後的原因,就是協作變複雜了。有一個研究報告提到,有效的研發時間,在整個項目周期中可能是不到20%的,大量的時間都是在做各種協同的事情,本次分享我們主要去講怎麼去解決這類問題。

協同問題,嚴重影響研發效率,如何為研發團隊設計合适的研發模式

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

我們從大家的釋出形态去看怎麼去設計合适的研發模式。比如我給銀行做項目半年或者三個月給他一個版本,那個版本是明确的,釋出什麼東西很明确,這個時候認為它是版本制釋出的方式,如果是另外一種,比如隻是一個線上的服務,這個服務我不關心曆史版本,隻要最新的服務ok就行了,我們認為它是一個持續釋出的方式。

持續釋出的研發模式

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

持續釋出的特點是分支隻合并一次,即從feature分支合并到master,它以一個特性或者需求為機關,開發完、驗證完就可以釋出,是以這個時候釋出的粒度是一個feature。

當代碼在feature分支上做送出後,會自動的做一些單元測試和掃描,然後做建構,然後部署到測試環境,在上面做一些自動化測試,之後可能會做一些人工的驗證,然後部署到UAT環境,做一些驗收和稽核。如果稽核通過了,就合并到主幹,然後部署到生産環境,整個過程非常清晰順暢。

版本制釋出研發模式

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

版本制釋出方式特點是分支合并兩次。

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

從上圖可以看出,這裡面有一個feature branch,一個master,一個release branch。master就是主幹,主幹是長期的分支,存放最新的釋出過的、可用的代碼;feature branch是特性開發的分支,每做一個特性開發的時候,會拉一個feature branch,在上面進行開發和自測。

要做釋出的時候,會拉一個release branch, release branch也是臨時的分支,之後,所有符合條件的feature branch就會合并到release branch,在release branch上做內建驗證和測試,驗證通過了,并且通過驗收之後,會合并到主幹,然後部署到生産環境,這個就是版本制的方式。這裡有兩次代碼合并的過程,第一次合并是從feature branch合并到release branch,第二次是從release branch合并到master。

雲效流水線落地研發模式

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

首先,我們會在雲效上建立兩條流水線,一條dev流水線,即開發流水線,一條release流水線,即釋出流水線。開發流水線的話,它的觸發源就是feature分支一次git push,之後自動的去做一些代碼掃描、單元測試、建構或者是測試環境部署,也可以到上面去做自動化測試,雲效流水線都是支援的。

開發流水線運作通過後,我們可以根據需要,将feature分支合入到release分支,此時就會觸發我們的第二條流水線也就是release流水線運作。

release流水線的會在上面同樣去做前面的那些動作,但是會額外有一些管理者的卡點,包括一些UI測試,SIT測試等等。驗收通過後,會釋出到UAT環境,并且做PO驗收和運維稽核,最後合并master,然後生成一個版本,并且部署到正式的環境中。這就是版本制釋出的一個研發模式,它的特點跟剛剛比會多一次分支合并操作。

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

雲效流水線研發模式落地實踐:

https://thoughts.aliyun.com/sharespace/5e8c387c0aa435001a74f7ab/docs/5ec0b04f9e2b9b002352b07a

理念速遞是由阿裡雲雲效團隊發起的,聚焦于研發項目協作與工程實踐落地的訪談類活動。該活動會邀請以何勉、張剛、陳鑫、趙喜鴻為首的阿裡雲專家團參與其中,就當下開發者關注的熱點話題,進行互動、分享。

【本期主持人:】

解浩(啞木),阿裡雲雲效解決方案架構師

【本期嘉賓:】

張裕(子醜),阿裡雲工程實踐專家,曾在諾基亞網絡負責測試自動化和CICD工具平台開發,做過測試自動化教練,也在初創企業做過開發、運維負責人和測試架構師,推崇持續、快速、高品質的軟體傳遞方式,目前專注于雲原生和DevOps領域。

雲原生時代,企業如何選取研發模式,并通過雲效流水線落地

-END-

長按識别上圖二維碼進群,更多幹貨、優惠活動等你解鎖

點選:

了解更多雲效

繼續閱讀