讀後小結:文章裡提到了從沒有devops到有devops的對工作流程的改變,可以作為乙個現實的例子來說明devops的用處,也可從中看到我們自己開發流程的影子。另外,文章中提到了很多devops的工具(尤其是提到了軟體倉庫和h5ai),可以作為我們實施devops的參考工具。
devops一種概念、一種思想,很難界定說devops該做什麼,不該做什麼。
在工作的過程中,我從來沒有向團隊同事提起過「devops」這個單詞。這個新型英語單詞的發音/devɒps/,就算發音準確了,你還得跟別人再拼讀一次d.e.v.o.p.s ;拼讀完了,還得介紹它是development operations的簡稱;接下來還要跟他們介紹什麼含義。這不但顯得自己裝逼,還賣概念賣理論搞得別人暈頭轉向,讓別人不知道怎麼回事。
日常中,一般溝通時,更多是用「自動化」這個詞,自動化編譯、自動化部署、自動化發布等等。對普通非技術類人員來說(比如遊戲專案裡的策劃和美術),雖然還沒聽過devops這個概念,但其實已經應用在自己的日常工作中了。
我對效率工具熱愛,在開發的工具中處處追求自動化來提高生產力,這是前unity遊戲專案(2014-2023年)的乙個devops工具鏈的嘗試:
檢視大圖:https://
簡單說下日常自動化流水線,
redmine:任務的管理,工作的分配;由專案經歷、遊戲策劃進行工作排程,在工作完成後,為任務標記上「待測試」,進入測試狀態;在測試完成後,標記「已測試」,以維持基本的日常任務進度。
subversion(svn):作為團隊開發的基礎,各人的工作按照規範往上進行提交;包括程式、策劃和美術工作成果,都往svn版本庫上傳。
jenkins:當svn提交完成後,觸發鉤子,進行編譯工作;(另有每晚凌晨定時)除編譯工作以外,jenkins還會承擔各種有自動化需求的工作,如測試環境的部署。 它是開發、運維連線的核心橋梁。
私有雲虛擬機器:當jenkins完成編譯工作後,立刻在內網部署伺服器並啟動;
軟體倉庫:到這裡已經驗證提交的結果能正常執行了,將產物放到軟體倉庫歸檔;本質上它其實就是乙個簡單的http檔案伺服器,可以通過瀏覽器(如h5ai等外掛程式)來檢視和管理檔案。
supervisord:啟動的伺服器的程序管理;它有監控功能,能監視程序的健康狀況。
elk:elasticsearch+logstack+kibana,日誌的收集和查詢;所有的遊戲客戶端日誌,都會通過udp的方式,上傳到elk日誌系統。在日常第三方出現問題是,能通過該日誌系統快速定位問題。
測試驗收:回到redmine,根據任務的內容,把它當做測試用例來測試;
ansible:自動化配置、運維,從軟體倉庫獲取軟體,對多台機器進行批量部署;
fir.im:部署外網,外網也可以體驗到最新demo;
至此一次成功的發布完成了,這種發布,每天都會進行無數次。任意環節失敗了,會傳送郵件進行預警,看是誰的鍋。
老實說,其實最初使用jenkins+redmine+ansible等工具鏈的時候,我們還不知道「devops」這個名堂,是後來才了解這個概念的。可以說,當時推行「自動化」這個出發點開始使用各種自動化工具的時候,已經逐漸的走上devops的路了。
devops帶給開發團隊怎樣的改變? 舉一些剛入行的經歷:
乙個遊戲專案裡,有程式、策劃、美術的分工。那時候,乙個美術完成他們的場景編輯後,會用unity打包乙個package,發給某乙個策劃;策劃同學,收到這個package,匯入到unity,然後整理場景格式,之後進行asset bundle匯出,並進行svn的提交。這時候程式同學,更新到svn下來,發現asset bundle資源是錯的,跟策劃同學說;策劃同學跑去跟美術同學說,美術同學修復;美術修復完了,再打package,又給策劃同學........(迴圈,一天過去了)。
經過乙個月的開發,我們要發布新版本的ipa程式了,已經有乙個月的時間,沒有編譯過最終產品了,不知道編譯是否順利。這時候,老大一聲下令,把svn鎖了,然後開啟unity,手工編譯xcode工程; 但是發現有乙個依賴庫問題,修復,再手工編譯,又發現乙個bug,再重新來...........(迴圈,一天過去了)
要發布乙個demo給外網的合作,乙個熟悉linux負責測試的同學,開始在linux上手工進行編譯,然後ssh上去伺服器,上傳伺服器檔案,執行各種命令,進行伺服器的啟動、停止。 哦,發現乙個bug,要馬上改,改完了,重複之前說的步驟..........(迴圈,一天過去了)如今看起來啼笑皆非的重複勞動力,當時是確確實實的存在的。入行之初我就對這些現象非常的震驚,我萬萬沒想到做程式設計師的人居然是這個樣子的。 這也是後來在主導的專案中引入了這些工具鏈,也算是devops的實施嘗試吧。
是否引入devops思想或devops相關工具鏈,這對乙個開發團隊的影響是十分的深的,這不光體現在編譯、運維,甚至還會影響開發人員的程式設計風格 —— devops思想強調自動化,而程式設計的過程中,一些重複累贅的**也是應該通過自動化來解決的。
在我看來,引入devops工具鏈可以節省成噸的成本:包括時間成本,人力成本。 實施devops前,從上面的案例中可以看到,其實每個工具,都可能需要乙個特定的人來完成的,工作量分布下去,可不是一件小事情了,很容易就讓人在坑中度過漫長歲月。
docker、zabbix、sentry、rundeck等等等。
在我看來,這個領域還有乙個殺手級的應用程式可以發展,可以把這一切整合一起的,它應該是乙個類似jenkins這種任務流的產品,並比它更好用,更完善的gui。個人之力無法實現,只能期待未來有這樣的產品出現——也許,這個產品,就是人工智慧的催化產物。
與以前相比,這些工具鏈,也不一定事必躬親,已經有很多的雲計算企業有這方便的幫助了:
daocloud - 業界領先的容器雲平台
網易蜂巢-新一代雲計算平台
華為開發雲
這類產品本身是非常好的,但要讓這種思想讓普通人都容易理解,才能讓它們真正的普及、整合起來。 傳播、布道是關鍵。
devops實踐總結
hcloud 雲平台開發經驗。雲平台中的devops,開發者工具的開發經驗 自己搭建jenkins,通過jenkins執行pipeline,整合構建,檢查,部署,自動化測試,藍綠部署等。其中的構建是通過shell指令碼實現。檢查整合了啥東東?忘了研究了。部署,底層封裝乙個ansible,通過ansi...
DevOps教程 DevOps 工作流程
devops 工作流程提供了輸入順序的直觀概述。此外,它還告訴您執行了哪個操作,並為操作過程生成了輸出。devops 工作流程允許分離和安排使用者最需要的工作。此外,它還可以在配置工作中反映其理想過程。devops 的主要原理是持續交付 自動化以及對反饋的快速反應。端到端責任 devops 團隊需要...
devops實踐指南 最終的DevOps招聘指南
devops實踐指南 招聘合適的人並建立成功的團隊絕非易事。與候選人交談時,要考慮許多方面,從文化適應性和團隊動力到技能,知識和解決問題的能力。最終的devops招聘指南 本指南為求職者和招聘經理提供有關devops招聘狀態的建議,策略和資訊。招聘devops人才提出了自己的挑戰。首先,您的招聘團隊...