新聞中心
2019 年,Shopify 在博客中分享了自己成功合并千名開發(fā)人員工作的經(jīng)驗,并介紹了工具 Merge Queue v2,很多人都好奇為什么 Shopify 要構建這樣的一款工具呢?

其實答案很簡單,不少企業(yè)發(fā)展到一定階段后就會遇到這樣的情況。隨著業(yè)務發(fā)展,Shopify 意識到市面上沒有任何現(xiàn)成的產(chǎn)品可以徹底解決他們面臨的困難。從更長遠地來看,Shopfiy 認為公司應該為開發(fā)人員提供盡量完善的開發(fā)體驗,并要塑造一種"軟件發(fā)布文化",所以就開始不斷改進現(xiàn)有的工具鏈和流程方法。
Shopify 是這樣定義企業(yè)文化的:
Shopify 所有人信念和行為的總和。
軟件發(fā)布工作是開發(fā)工作的子集,自然,"軟件發(fā)布文化"也要和企業(yè)文化保持一致。Shopfiy 的軟件發(fā)布工作規(guī)范與其他企業(yè)沒有太大不同,比如他們要求錯誤的更改不應該流入生產(chǎn)環(huán)境,破壞用戶體驗;生產(chǎn)環(huán)境中所做的更改不應該犧牲安全性等等。
通往羅馬的道路不止一條,同樣的軟件發(fā)布文化,也有很多可選的實現(xiàn)路徑。Shopify 認為,企業(yè)支持團隊應該為開發(fā)人員開辟一條路徑,讓他們自由發(fā)揮生產(chǎn)力和創(chuàng)造力,并實現(xiàn)自己的目標。企業(yè)應該營造一種氛圍,讓版本發(fā)布成為一種勝利時刻。
1. Shopify 如何評估軟件發(fā)布文化
如何塑造軟件發(fā)布文化?
首先要考慮以下問題:
- 開發(fā)人員希望選擇怎樣的工作方式?
- 對他們來說哪些事情比較重要?
- 他們?nèi)绾慰创脕碇С炙麄兊墓ぞ撸?/li>
- 他們想知道多少幕后信息,想了解多少自己使用的工具背后的知識?
這些問題往往沒有單一的答案,尤其是 Shopify 這家企業(yè)中每天參與軟件部署工作的人員眾多,涉及的崗位也多種多樣。Shopify 選擇了一些主動和被動的方法來評估企業(yè)內(nèi)部的軟件發(fā)布文化,這些方法不分先后,它們共同描繪出了一幅關于開發(fā)人員如何使用各種工具的圖景。
其中,被動方法主要用來管理和匯總輸入的信息,并不需要企業(yè)支持團隊去做很多工作。其中,有一個方法是 開發(fā)人員滿意度調(diào)查,這是對 Shopify 全公司的開發(fā)人員每半年進行一次的調(diào)查研究。開發(fā)人員需要報告很多信息,比如說他們對自己所使用的工具的滿意度,或者工作中哪些環(huán)節(jié)非常浪費時間等等。
此外,公司還專門設立了面向所有人開放的 Slack 頻道。在這個頻道上,產(chǎn)品用戶可以從開發(fā)團隊或其他用戶那里獲得支持,并報告他們遇到的問題。Shopify 團隊會積極參與這些頻道的互動,培養(yǎng)社區(qū)氛圍并鼓勵開發(fā)人員分享經(jīng)驗。需要注意的是,這些頻道并不是用來獲取產(chǎn)品反饋的主要渠道。
總的來說,他們希望能主動找出產(chǎn)品和服務中的痛點所在,而且意識到了這個過程并不能過分依賴用戶,因此 Shopify 也采取了一些積極的措施來找出最重要、優(yōu)先級最高的問題。
一種措施叫做 dogfooding。公司內(nèi)開發(fā)團隊用來發(fā)布代碼的工具是和構建與維護代碼的工具完全一致的。這樣就很容易找出服務的缺陷所在,并在出現(xiàn)產(chǎn)品問題時站在用戶的視角上理解其影響。
另一項重要資源是 Shopify 的 內(nèi)部支持團隊。他們需要幫助用戶,還要支持企業(yè)內(nèi)部不斷發(fā)展的工具套件,這是很艱巨的挑戰(zhàn)。他們需要診斷問題,幫助用戶找到合適的團隊來指導他們解決這些問題。他們能夠找出用戶在當前工作流程中遇到的常見痛點以及概念和原型的潛在問題。
最后,在添加新功能或更改現(xiàn)有工作流程時,Shopify 會在整個過程中實施 用戶體驗研究分析:
- 更好地了解用戶行為和期望
- 在開發(fā)概念和原型時測試它們
當開發(fā)人員發(fā)布 PR 時,團隊會單獨考察開發(fā)人員的想法,了解他們都在考慮哪些內(nèi)容,在制定決策時都有怎樣的根據(jù)。團隊會與設計師和撰稿人等用戶交流,學習他們的日常工作流程,了解他們所依賴的工具和用法。公司會讓實習生和新人測試產(chǎn)品原型,從中了解外部和新鮮視角的觀點,并挑戰(zhàn)原有的產(chǎn)品假設。
有了這些流程,企業(yè)就能在整個構建和發(fā)布過程中都能從真實用戶那里獲得一手反饋,進而打造更好的產(chǎn)品和服務。
反饋是一種禮物
在 Shopify 經(jīng)常提到的一句話就是,反饋是一種禮物。
評估軟件發(fā)布文化的目的是創(chuàng)建一個反饋循環(huán),讓用戶可以輕松談論他們遇到了哪些障礙,收到反饋的開發(fā)團隊會重視這些意見并嘗試采取對策。
還有很重要的一點是,用戶的反饋會讓產(chǎn)品團隊充滿動力,即便反饋是負面的,這也是用戶重視產(chǎn)品、希望產(chǎn)品變得更好的一種證明,這自然會鼓勵團隊,甚至讓他們在面對困境時振作起來。用戶希望自己的反饋能有價值,這是企業(yè)要給用戶營造的氛圍,企業(yè)的軟件開發(fā)文化和工具鏈應該支持這種良性循環(huán),讓所有人都能從中獲益。
2. Shopify 的軟件發(fā)布流程
Shopify 的軟件發(fā)布流程是怎樣的形態(tài),又有哪些可以改進的部分呢?
發(fā)布管道
發(fā)布管道路徑
這就是 Shopify 發(fā)布管道的路徑。一開始是拉取請求(PR),然后是持續(xù)集成(CI)/ 合并,接著是金絲雀部署,最后是生產(chǎn)發(fā)布。
PR 和 /shipit 命令
這套流程的第一步是開發(fā)人員創(chuàng)建 PR,然后在準備交付時發(fā)出一條 /shipit 命令。接下來,Merge Queue 系統(tǒng)會嘗試將 PR 與主干 Master 集成起來。
PR 合并到 Master,金絲雀部署
當 Merge Queue 確定更改可以成功集成時,PR 就會合并到 Master,并部署到 Shopify 的金絲雀基礎架構中。金絲雀環(huán)境會隨機接收所有傳入請求的 5%。
更改部署到生產(chǎn)環(huán)境
開發(fā)人員有一套工具,可以在金絲雀環(huán)境中測試更改 10 分鐘的時間。如果沒有手動干預,并且金絲雀自動分析不會觸發(fā)任何警報,則更改將部署到生產(chǎn)環(huán)境中。
發(fā)布與恢復機制
每一位開發(fā)人員都希望能被信任,并對自己的工作擁有自主權。開發(fā)人員應該能控制自己 PR 的整個發(fā)布過程。
開發(fā)人員控制整個過程
在 Shopify 的軟件發(fā)布流程中,開發(fā)人員能控制整個發(fā)布過程。這里不存在什么發(fā)布管理器、注銷或者審核窗口。
限制不良更改爆炸半徑的基礎設施
然而是人就會犯錯,出現(xiàn)問題是難免的,Shopify 當然也不例外。為此,公司建立了一套基礎架構來限制不良更改的爆炸半徑。最重要的是,企業(yè)相信每位開發(fā)人員都應該承擔自己應負的責任,并且如果他們的更改捅了簍子,他們也應該能自己去恢復它。
開發(fā)人員可以使用 /shipit--emergency 命令快速跟蹤修訂
一旦準備好了修復程序(修復 - 轉(zhuǎn)發(fā)或還原),開發(fā)人員就可以使用一條 /shipit --emergency 命令快速追蹤整個修復進程。Shopify 沒有那么多恢復協(xié)議,而只有一個 緊急狀況 功能,這樣就能讓開發(fā)人員以最快的速度完成恢復操作。
快速發(fā)布
開發(fā)人員希望快速發(fā)布。
發(fā)布速度是大多數(shù)企業(yè)應用程序的一個關鍵要素。對于開發(fā)人員而言,如果能一天多次發(fā)布代碼并立即將其發(fā)送給最終用戶,就能極大提高生產(chǎn)力。但更重要的是,采用快速的發(fā)布流程可以帶來同樣快速的恢復流程。
為了真正加快發(fā)布過程,企業(yè)是需要投入資源和成本的。除了專門的基礎架構團隊,Shopify 還管理著自己的 CI 群集,容量高達數(shù)千個節(jié)點。
自動化
開發(fā)人員不想執(zhí)行重復性的任務。計算機最擅長做重復工作,所以這類工作應該盡可能地自動化。Shopify 在諸如連續(xù)部署和金絲雀分析之類的地方實現(xiàn)了自動化。
在 Shopify,開發(fā)人員用不著按一個部署按鈕,自動化流程會持續(xù)部署到金絲雀和生產(chǎn)環(huán)境。
自動化固然很棒,但是某些時候開發(fā)人員還是需要手動控制的。在緊急情況下,開發(fā)人員可以鎖定自動部署并轉(zhuǎn)為手動部署。
文章標題:揭秘Shopify的軟件發(fā)布流程,如何做到合并上千程序員的工作?
網(wǎng)頁地址:http://m.5511xx.com/article/dhogccs.html


咨詢
建站咨詢
