初識DevOps

天翼雲開發者社群發表於2022-05-12

作者:天翼雲  研發一部  趙恆


基本概念和延伸的思考

DevOps,是 Development (開發) Operations (運維)組成的複合詞,一般譯為 “開發運維一體化”。

 

看到這個概念,首先會產生幾個問題:

開發是什麼,哪些環節是開發?

運維是什麼,哪些環節是運維?

開發人員寫好程式碼在本地除錯,環境出問題了自己來調整,這是開發工作還是運維工作?

系統故障後,運維人員發現是配置檔案內容出錯了就改成了正確的資訊,這是運維還是開發工作?

這些問題不正是說明本身開發和運維本來就是一體的嗎,為何還要進行開發運維一體化?

 

每個切身參與到開發和運維的員工,日常工作一定經常遇到各種界限不清晰的問題。面對這類問題,應對策略和解決方法, 大致分為如下兩個方向:

1、 從管理角度,制定工作環節和流程的規章制度,規範人員行為,確保開發和運維環節的銜接。

2、 從技術研發 角度 ,研究開發過程的管理工具,減少人工的環節,從而減少問題出現的機會。

敏捷管理

管理角度上,從瀑布式開發到敏捷開發,人們一直在面對的是軟體不斷髮生變更的需求場景,從而被動衍生出來一套應對頻繁變化,快速迭代的管理模式。

 

傳統的 瀑布 開發流程是:

需求人員 收集客戶需求

進行 需求 分析 ,輸出需求規格說明書

召集 開發部門 宣講需求 ,開發 人員開始編寫 程式碼;

寫好 程式碼 以後,進行後續的程式碼構建 、測試環境部署;

經過測試部門測試,通過後交給實施部門;

實施部門進行生產環境部署。

在瀑布模式和敏捷開發共同出現的語境中,人們經常認為瀑布模式是一種過時的技術,缺點很多的技術。而通過上述的流程可以看出,瀑布模式清晰的定義出了各個環節的職責範圍,保障軟體開發工作無偏差、高質量的完成。

 

而敏捷開發出現不是為了顛覆瀑布模式,而是彌補瀑布模式週期較長不夠靈活這一缺點。

敏捷開發並沒有拋棄瀑布開發的工作環節,而是在經常發生變更的場景下,進行靈活的工作調整,來實現在變化中迭代的效果。

豐富的工具

技術角度上,開發過程的各個環節,都已經誕生出多種適用於各種不同場景的工具。有開源、有商用,供各類不同的使用者選擇。

 

一些常見的技術 :

版本控制&協作開發 GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
自動化構建和測試 Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
持續整合&交付 Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
容器平臺 Docker、Rocket、Ubuntu(LXC)、第三方廠商如(AWS/ 天翼雲
配置管理 Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
微服務平臺 OpenShift、Cloud Foundry、Kubernetes、Mesosphere
服務開通 Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
日誌管理 Logstash、CollectD、StatsD
監控,警告&分析 Prometheus、 Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana

 

可以看到工具不僅僅侷限在開發環節,構建、測試、部署、運維工具也均發展出了優秀的軟體和技術。

 

優秀的開發管理模式和成熟的技術的相融合,形成了今天我們看到的 DevOps模式。

實踐 DevOps的原則

那麼現在技術已經具備了,優秀的開發管理模式也具備了。如何結合兩者,形成一個藉助工具來快速、自動化的完成整個開發生命週期的模式呢?

答案就是 DevOps。

 

但需要注意的是, DevOps並非一套通用方法來做技術和流程的結合。而是技術和流程結合這一實踐過程中,不斷調整、探索,最終達到一個適合自己的模式。

 

每個開發者或者企業都有個性的工作和管理模式。沒有一個標準的方案能夠適用於每個企業,企業在踐行 DevOps時應該充分考慮這樣一些原則:


1、基礎設施即程式碼(Infrastructure as Code)

DeveOps的基礎是將重複的事情使用自動化指令碼或軟體來實現,例如Docker(容器化)、Jenkins(持續整合)、Puppet(基礎架構構建)、Vagrant(虛擬化平臺)等

 

2、持續交付(Continuous Delivery)

持續交付是在生產環境釋出可靠的軟體並交付給使用者使用。而持續部署則不一定交付給使用者使用。涉及到2個時間,TTR(Time to Repair)修復時間,TTM(Time To Marketing)產品上線時間。要做到高效交付可靠的軟體,需要儘可能的減少這2個時間。部署可以有多種方式,比如藍綠部署、金絲雀部署等。

 

3、協同工作(Culture of Collaboration)

開發者和運維人員必須定期進行密切的合作。開發應該把運維角色理解成軟體的另一個使用者群體。協作有幾個的建議:1、自動化(減少不必要的協作);2、小範圍(每次修改的內容不宜過多,減少釋出的風險);3、統一資訊集散地(如wiki,讓雙方能夠共享資訊);4、標準化協作工具(比如jenkins)

高效便捷的 DevOps體驗- --- 天翼雲 EasyCoding敏捷開發平臺

闡述了這些概念之後,有沒有快速實踐 DevOps的方法呢?

市面上目前已經出現大量成熟的 DevOps平臺供使用者挑選了,很多平臺都能夠進行試用,讓使用者嘗試DevOps,體驗DevOps帶來的進步。

 

天翼雲 EasyCoding敏捷開發平臺就是這樣一款產品, 以產品價值線上化,交付價值自動化為設計理念,提供敏捷開發SaaS服務,助力大中型企業高價值、高質量、高效率釋出產品,開啟高效研發之旅

 

天翼雲 EasyCoding平臺具有這些優勢:

靈活的編排能力

可靈活編排的工作項介面、流程和規則,支援各種複雜的業務,可編排的流水線。

靈活的擴充套件能力

支援應用、單據、屬性、事件多級擴充套件機制,實現無程式碼或低程式碼的擴充套件

完善的開放生態

可基於豐富的前端元件和後端API、易用的公共服務定製開發衍生應用

快速穩定的響應

基於搜尋引擎的讀寫分離,保障高併發、大資料量場景下穩定的效能

前瞻性的管理思想

交易流程線上,業務活動線上,端到端全程可視跟蹤業務活動

穩定安全的研發環境

基於天翼雲的接入安全、資料安全管理,多副本容災架構設計

 

 

下期我們將介紹天翼雲 EasyCoding的基本使用方法,帶您一步步走入DevOps。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2893737/,如需轉載,請註明出處,否則將追究法律責任。