初識DevOps
作者:天翼雲 研發一部 趙恆
基本概念和延伸的思考
DevOps,是 Development (開發) 和Operations (運維)組成的複合詞,一般譯為 “開發運維一體化”。
看到這個概念,首先會產生幾個問題:
開發是什麼,哪些環節是開發?
運維是什麼,哪些環節是運維?
開發人員寫好程式碼在本地除錯,環境出問題了自己來調整,這是開發工作還是運維工作?
系統故障後,運維人員發現是配置檔案內容出錯了就改成了正確的資訊,這是運維還是開發工作?
這些問題不正是說明本身開發和運維本來就是一體的嗎,為何還要進行開發運維一體化?
每個切身參與到開發和運維的員工,日常工作一定經常遇到各種界限不清晰的問題。面對這類問題,應對策略和解決方法, 大致分為如下兩個方向:
1、 從管理角度,制定工作環節和流程的規章制度,規範人員行為,確保開發和運維環節的銜接。
2、 從技術研發 角度 ,研究開發過程的管理工具,減少人工的環節,從而減少問題出現的機會。
敏捷管理
管理角度上,從瀑布式開發到敏捷開發,人們一直在面對的是軟體不斷髮生變更的需求場景,從而被動衍生出來一套應對頻繁變化,快速迭代的管理模式。
傳統的 瀑布 開發流程是:
l 需求人員 收集客戶需求 ;
l 進行 需求 分析 ,輸出需求規格說明書 ;
l 召集 開發部門 宣講需求 ,開發 人員開始編寫 程式碼;
l 寫好 程式碼 以後,進行後續的程式碼構建 、測試環境部署;
l 經過測試部門測試,通過後交給實施部門;
l 實施部門進行生產環境部署。
在瀑布模式和敏捷開發共同出現的語境中,人們經常認為瀑布模式是一種過時的技術,缺點很多的技術。而通過上述的流程可以看出,瀑布模式清晰的定義出了各個環節的職責範圍,保障軟體開發工作無偏差、高質量的完成。
而敏捷開發出現不是為了顛覆瀑布模式,而是彌補瀑布模式週期較長不夠靈活這一缺點。
敏捷開發並沒有拋棄瀑布開發的工作環節,而是在經常發生變更的場景下,進行靈活的工作調整,來實現在變化中迭代的效果。
豐富的工具
技術角度上,開發過程的各個環節,都已經誕生出多種適用於各種不同場景的工具。有開源、有商用,供各類不同的使用者選擇。
一些常見的技術 :
版本控制&協作開發
:
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平臺具有這些優勢:
l 靈活的編排能力
可靈活編排的工作項介面、流程和規則,支援各種複雜的業務,可編排的流水線。
l 靈活的擴充套件能力
支援應用、單據、屬性、事件多級擴充套件機制,實現無程式碼或低程式碼的擴充套件
l 完善的開放生態
可基於豐富的前端元件和後端API、易用的公共服務定製開發衍生應用
l 快速穩定的響應
基於搜尋引擎的讀寫分離,保障高併發、大資料量場景下穩定的效能
l 前瞻性的管理思想
交易流程線上,業務活動線上,端到端全程可視跟蹤業務活動
l 穩定安全的研發環境
基於天翼雲的接入安全、資料安全管理,多副本容災架構設計
下期我們將介紹天翼雲 EasyCoding的基本使用方法,帶您一步步走入DevOps。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2893737/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DevOps 初學者寶典dev
- 初創公司如何做DevOpsdev
- 初識 “HTML”HTML
- 初識GolangGolang
- 初識jQueryjQuery
- Nodejs初識NodeJS
- Express初識Express
- 初識GitGit
- 初識JSJS
- CDN初識
- 初識VueVue
- webpack初識Web
- 初識HIVEHive
- 初識TcpTCP
- 初識HTTPHTTP
- 初識ARKit
- 初識HaphoopOOP
- 初識PostgreSqlSQL
- AsterixDB初識AST
- 初識Fink
- 初識WebWeb
- 初識 Shell
- 初識 reduxRedux
- 初識 SpringMVCSpringMVC
- rocketmq初識MQ
- 初識 DockerDocker
- 初識:LevelDB
- 初識JVMJVM
- 初識JavaScriptJavaScript
- 初識MybatisMyBatis
- 初識AngularJSAngularJS
- Kafka 初識Kafka
- 初識AJAX
- 初識promisePromise
- 初識JavaWEBJavaWeb
- Java初識Java
- 【springboot初識】Spring Boot
- 初識Kubernetes