轉載自 devops實踐-開篇感想 nginx
DevOps(英文Development和Operations的組合)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協做與整合。它的出現是因爲軟件行業日益清晰地認識到:爲了按時交付軟件產品和服務,開發和運營工做必須緊密合做。[1]外文名DevOps全稱 Development和Operations的組合優勢儘量地自動化用途協做與整合等。git
長話短說,這些寫這個專題主要是在實踐兩個字,在實踐總總結,而後再總結中優化本身的實踐方案。咱們先來來看看devops工具鏈吧。上圖。redis
看到這張圖,我第一感受就想罵娘。太TM多了,並且不少不少日常都沒有聽,更別說接觸過了。不過還好的是,咱們只研究開源工具,一方面是要進行devops實踐,另外一方面也是想提升本身的能力,經過閱讀源碼,去研究開源工具的系統架構,以及編程思想,日積月累後,本身也會有一個質的提升。並且收費軟件可不是那麼便宜一年的license可不是普通企業能買得起的。docker
首先來回顧一下整個開發流程:npm
需求-開發-測試-發佈-部署-監控運維編程
項目管理(需求&BUG):redmine架構
代碼託管:gerrit(gitlab)運維
持續集成:jenkinsmaven
測試:單元測試: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版本發到製品庫中或者是進行自動部署。並且如今有灰度發佈,能夠一點一點切流程到新的版本上,看一下運行狀況,若是不行直接回退。