devops實踐-開篇感想

Devops概念

DevOps(英文Development和Operations的組合)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。它的出現是由於軟體行業日益清晰地認識到:為了按時交付軟體產品和服務,開發和運營工作必須緊密合作。[1]外文名DevOps全稱 Development和Operations的組合優點儘可能地自動化用途協作與整合等。

以上內容來自百度百科。
在我看來:
1.主要就是為了整合資源,使資源充分利用.讓開發人員像使用水電一樣的使用資源,讓開發人員聚焦在更有價值的事情身上,讓整個開發階段中不同的工具串聯在一起,形成一條完整的流水線。
2.視覺化可跟蹤,通過一系列的工具可以對開發需求進行持續的跟蹤,很明確的且客觀看到任務的當前狀態,而且出了問題之後可以追溯,讓你能精準的定位到哪個環節出現了問題。
3. 在運維方面,儘可能的通過監控工具,收集資料,通過大資料,深度學習等手段,來解放運維人員,而且資料不斷的視覺化,也有利於實時監控(其實我沒做過運維,在這方面理解得比較淺,慢慢好好學習吧)

Devops工具

長話短說,這些寫這個專題主要是在實踐兩個字,在實踐總總結,然後再總結中優化自己的實踐方案。我們先來來看看devops工具鏈吧。上圖。

看到這張圖,我第一感覺就想罵娘。太TM多了,而且很多很多平常都沒有聽,更別說接觸過了。不過還好的是,我們只研究開源工具,一方面是要進行devops實踐,另一方面也是想提高自己的能力,通過閱讀原始碼,去研究開源工具的系統架構,以及程式設計思想,日積月累後,自己也會有一個質的提高。而且收費軟體可不是那麼便宜一年的license可不是普通企業能買得起的。

選擇工具

首先來回顧一下整個開發流程:

需求-開發-測試-釋出-部署-監控運維

專案管理(需求&BUG):redmine

程式碼託管:gerrit(gitlab)

持續整合:jenkins

測試:單元測試:maven等,Jmeter,或者是自己編寫指令碼

程式碼掃描:sonar

製品庫:JFrog,或者其他工具,這個我也沒有想好JFrog收費版可以支援docker,maven, npm等等等,多得不行,製品這方面目前沒有什麼好的開源的軟體。

持續部署:K8S

日誌收集:ELK KAFKA

監控顯示:zabbix,grafana

其他工具:nginx, lvs,HA, redis,rabbitmq,ldap, ansible。

實踐想法

認證:LDAP 發現好多的開源的工具都會選擇ldap來做認證。OPENLDAP。

專案管理:redmine,開源,有豐富的外掛,至少感覺好像還是挺火的。

程式碼託管:gerrit或者是gitlab吧,我這邊我會選擇gerrit

持續整合:jenkins, 可惜jenkins竟然不開源,不過外掛豐富。

程式碼掃描:sonar

額說得有點重了。LDAP作為所有工具鏈的一個認證,這樣使用者資訊就統一起來了。

來個場景吧.

1. BA接收到需求之後將其錄入Redmine, 指定好開發人員。

2. 開發人員接收到任務之後,然後從gerrit拉取程式碼到本地,然後進行開發,開發完成後,將寫好的程式碼弄成一個評審單上傳到gerrit,並通知相關的評審人員進行評審。

3. 在你提交上去的那個刻,jenkins收到你建立評審單事件,然後開發觸發構建的你配置的任務,先拉取你最新提交的程式碼,然後進行編譯構建,掃描你的程式碼是否符合。程式碼符合之後,然後進行測試(在構建的時候會先進行單元測試),然後把構建好的包,在測試環境上進行部署,然後拉取自動測試指令碼進行測試,測試沒有問題之後。jenkins會對你本次的評審單進行打分。通過了就打2分,不過打-2分。這樣就避免了浪費大家的時間,在打分通過了的情況下,評審人員才會去評審。

4. 評審人員到gerrit上進行評審,如果評審不合格,直接拒絕,開發人員重新進行開發。在提交然後再重複3步驟。如果評審通過,進行程式碼合入,然後再次觸發jenkins的構建任務,不過這個任務是構建beta測試版本,構建到測試版本之後,然後釋出到製品庫中,然後通知測試人員可以進行測試了。然後這個時候將redmine的任務狀態更改會開發完成。這個時候會通知測試人員可以進行測試了。

5.測試人員收到測試任務之後,從製品庫中拉取beta包進行部署測試,這個部署測試環境,有了docker容器其實也是可以一鍵部署哦,然後再用自動化指令碼進行測試,對於個別場景可以進行手工測試,如果有bug,測試人員在redmine進行錄入,然後通知開發人員,這個時候流程又從1開始,直到這個bug測試通過了,然後redmine會更改bug狀態。

6.如果測試人員測試通過了,然後又可以出發一次構建任務。將最新的程式碼構建成release版本發到製品庫中或者是進行自動部署。而且現在有灰度釋出,可以一點一點切流程到新的版本上,看一下執行情況,如果不行直接回退。

大概就這樣吧,相信大家做過開發這裡理論流程的東西已經瞭解的透透的了,理解很容易,做起來可不是那個容易哦,最最最重要的是幹起來,做出來,用起來。希望大家能持續關注我的部落格,有什麼想法或者問題可以留言提問。或者可以加入我的知識星球(免費的),大家一起來交流。