還沒有聽過 DevOps嗎?(Developmen & Operations)

DevOps(Developmen & Operations) 思考

  1. devops 是什麼?
  2. Devops 能夠給我們解決哪些問題?
  3. Devops 需要哪些條件?
  4. 團隊應該怎麼做?

devops 是什麼?

我個人理解,devops 就是以提高效率宗旨,利用各種管理方法和技術來輔助,實現項目週期管理:產品需求管理、會議記錄、快速開發、加速迭代、運維方便、反饋及時提、反饋快速處理、代碼自動測試、自動部署、自動更新。這是一個完整的閉環生態,可以極大的提高團隊的效率,聽着好像很抽象,這裏有一張圖可以具象來看。

一般的 devops 概念

引用:
DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。
它是一種重視“軟件開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟件交付”和“架構變更”的流程,來使得構建、測試、發佈軟件能夠更加地快捷、頻繁和可靠。

Devops 能夠給我們解決哪些問題?

devops在團隊中的體現

加強各個部門人員協調

Scrum 團隊的標誌性的特徵,從項目開始到線上運行再到運維反饋,都是一個完整的閉環,在這個閉環內,
團隊利用各種工具來實現交流和快速迭代,每個人都能夠及時收到消息並對消息有快速理解。當然工具很多,
我下面會具體列出一些給大家參考,大家可以根據團隊或者公司實際情況選擇。最典型的莫過於 Jenkins 、gitlab 的生態。

代碼檢查

代碼質量是確保程序穩定的要素,通常在項目中每個人都會負責相應的模塊開發,並且需要協調提交合並,在那麼多開發者協調操作時,
我們應該如何確保代碼質量?
目前我們的方案

  1. 採用模塊化開發、微服務架構。每個人只負責各自的模塊代碼,不互相影響。
  2. 採用 gitlab 作爲代碼託管工具,每次git 提交都有相應的代碼單元測試,並使用代碼覆蓋率來作爲判斷標準,
    一般代碼覆蓋率不低於90%。
  3. 採用分支管理,develop分支作爲開發分支,每個開發者有對應分支develop-XX,互相不會影響彼此的開發。

測試自動化

爲每個接口添加單元測試。首先本地運行測試自檢,成功後再進行提交測試,通過纔會執行下一步pipeline操作,比如構建,
不成功自動停止 pipeline,併發送郵件給管理員和開發者,然後根據錯誤原因查看是哪些測試不通過。

服務容器化

採用docker 對服務進行容器化管理,至於容器化的好處不用多說,環境隔離、部署方便、自動化集成方便…… docker 容器的介紹這裏就不具體介紹了,後面我在寫一個專欄來介紹docker、docker-compose、k8s 等。
部署自動化
這個前提我覺得必須要以容器化爲基礎,現在的雲端部署基本都是依賴k8s 作爲平臺來管理容器化的實例部署,google 雲平臺甚至可以做到灰度發佈。這個效率可就和傳統模式區分開了,不再有繁瑣的環境配置,環境直接命令輸入容器,平滑啓動部署。鏡像從網絡或者私有的鏡像庫獲取。K8s 自動根據命令來部署容器運行。

Issue git 自動關聯檢查

遇到現在問題需要及時反饋,創建issue並附上運行時參數,提交到開發者手中修改,開發者根據收到的issue 描述修改,fix 提交代碼後 commit記錄中帶上 issue id ,自動將代碼和issue 關聯起來。然後繼續迭代。這樣就可以查看這次的issue 到底修改了哪些代碼。

Devops 需要哪些條件?

硬性要求:

代碼管理(SCM):GitHub、GitLab、SubVersion
構建工具:Ant、Gradle、maven
自動部署:K8s、Capistrano、CodeDeploy
持續集成(CI): Jenkins、gitlab-ci、Bamboo、Hudson
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方廠商如AWS
編排:Kubernetes、Docker-compose、Core、Apache Mesos、DC/OS
服務註冊與發現:Zookeeper、Consul、Eureka
腳本語言:python、ruby、shell
日誌管理:ELK、Logentries
系統監控:Prometheus 、Zipkin
性能監控:AppDynamics、New Relic、Splunk
壓力測試:JMeter、Blaze Meter、loader.io
消息總線:RabbitMq、ActiveMQ
應用服務器:Tomcat、JBoss
Web服務器:Apache、Nginx、IIS
數據庫:MySQL、Oracle、PostgreSQL等關係型數據庫;
mongoDB、redis等NoSQL數據庫
項目管理(PM):Jira、Redmine、Asana、Taiga、Trello、Basecamp、Pivotal Tracker

團隊要求:

  1. 眼界需要開闊,能夠學習適應新的技術應用的挑戰;
  2. 能夠承擔多個角色帶來的壓力,隨着devops 在項目中的應用,每個人的角色會發生變化,不再是單純的一個角色,管理者的角色可能會從項目經理幹到開發,再幹到運維,苦逼如我。
  3. 團隊人員必須緊密配合,還是需要保持溝通和良好的關係。

devops 項目架構圖

點擊查看更多內容


作者:holyplace
鏈接:https://www.imooc.com/article/296670
來源:慕課網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章