【DevOps入門篇】概念、技術(shù)實(shí)踐、研發(fā)工具鏈
一、什么是DevOps?

1.1 DevOps概述
DevOps,即Development and Operations,是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)軟件開發(fā)、運(yùn)維和質(zhì)量保障部門之間的溝通、協(xié)作與整合。DevOps的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識(shí)到:為了按時(shí)交付軟件產(chǎn)品和服務(wù),開發(fā)和運(yùn)維工作必須緊密合作。DevOps可看作開發(fā)、運(yùn)維和質(zhì)量保障(QA)三者的交集。
DevOps運(yùn)動(dòng)源自于提高IT服務(wù)交付敏捷性的需要,早期出現(xiàn)在許多大型公有云服務(wù)提供商中,并被其認(rèn)可。支撐DevOps的理念基礎(chǔ)是敏捷宣言,它強(qiáng)調(diào)人(和文化),致力于改善開發(fā)和運(yùn)維團(tuán)隊(duì)之間的協(xié)作。從生命周期的角度來看,DevOps的實(shí)施者也試圖更好地利用技術(shù),尤其是自動(dòng)化工具,來支撐越來越多的可編程的動(dòng)態(tài)的基礎(chǔ)設(shè)施。
二、DevOps的技術(shù)實(shí)踐
2.1 配置管理
軟件配置管理的核心功能是版本控制。版本控制系統(tǒng)是一種軟件,可以管理代碼的所有版本并跟蹤代碼中的更改。
1)分布式Git VS 集中式SVN
版本控制系統(tǒng)分為集中式和分布式兩種工作模式,Git和SVN是最為廣泛被使用的代表,Git由于其諸多特點(diǎn),更適合DevOps。
安全性——Git是分布式,而SVN是集中式,存在單點(diǎn)故障風(fēng)險(xiǎn)。
分支功能——Git分支功能強(qiáng)大,便于查詢和追溯分支間的提交歷史,且支持雙向合并。
發(fā)布控制——Git發(fā)布控制相當(dāng)靈活,而SVN并沒有明確的發(fā)布控制配置。
開發(fā)審核——Git支持團(tuán)隊(duì)成員自建分支和版本庫,從提交說明、代碼規(guī)范等方面對(duì)提交逐一審核;而SVN則不具備這些功能。
合并支持——Git基于DAG(有向非環(huán)圖)的設(shè)計(jì)比SVN的線性提交提供更好的合并追蹤,避免不必要的沖突,提高了工作效率。
存儲(chǔ)方式——Git把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而SVN是按文件。
分布式Git VS 集中式SVN——版本控制系統(tǒng)分為集中式和分布式兩種工作模式,Git和SVN是最為廣泛被使用的代表,Git由于其諸多特點(diǎn),更適合DevOps。
2)包文件
包文件通常不放在源碼庫中管理,而是使用專門的包文件倉庫(repository)進(jìn)行存儲(chǔ),并配合包文件依賴管理工具(Maven、npm、Ivy等)進(jìn)行使用。包文件倉庫可以大致分為本地倉庫、私服倉庫、中央倉庫三種。本地倉庫是指開發(fā)者個(gè)人PC中包文件的存儲(chǔ);私服倉庫通常是企業(yè)為了提升包文件使用性能而搭建的局域網(wǎng)內(nèi)共用的包文件倉庫,通常使用開源的Nexus、artifactory等工具搭建;中央倉庫是指開源包文件的共享社區(qū)。
開發(fā)人員對(duì)包文件的使用集中在下載、搜索、發(fā)布上傳幾個(gè)操作上。開發(fā)和構(gòu)建時(shí),開發(fā)人員通過包依賴管理工具定義好需要使用的私有及開源包文件,在構(gòu)建或運(yùn)行時(shí)自動(dòng)從私服倉庫或開源中央倉庫中下載依賴包文件來提升開發(fā)效率。
2.2 持續(xù)集成(Continuous Integration)
持續(xù)集成(CI)是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)的成員經(jīng)常集成他們的工作,通常每個(gè)成員每天至少集成一次——這導(dǎo)致每天發(fā)生多次集成。每次集成都通過自動(dòng)化的構(gòu)建(包括測(cè)試)來驗(yàn)證,從而盡快地檢測(cè)出集成錯(cuò)誤。
持續(xù)集成過程中的角色與職責(zé)如下:
2.3 持續(xù)交付(Continuous Delivery)
持續(xù)交付(CD)是從構(gòu)建環(huán)境到生產(chǎn)環(huán)境的構(gòu)建、測(cè)試、配置和部署的過程。
持續(xù)交付是一種軟件工程手法,讓軟件產(chǎn)品的產(chǎn)出過程在一個(gè)短周期內(nèi)完成,以保證軟件可以穩(wěn)定、持續(xù)的保持在隨時(shí)可以發(fā)布的狀況。它的目標(biāo)在于讓軟件的構(gòu)建、測(cè)試與發(fā)布變得更快以及更頻繁。這種方式可以減少軟件開發(fā)的成本與時(shí)間,減少風(fēng)險(xiǎn)。
2.4 基礎(chǔ)設(shè)施即代碼(Infrastructure as Code)
作為代碼的基礎(chǔ)設(shè)施(IaC)是描述性模型中的基礎(chǔ)設(shè)施(網(wǎng)絡(luò)、虛擬機(jī)、負(fù)載平衡器和連接拓?fù)洌┑墓芾恚褂门cDevOps團(tuán)隊(duì)用于源代碼相同的版本。與同一源代碼生成相同二進(jìn)制文件的原則一樣,IaC模型在每次應(yīng)用時(shí)都會(huì)生成相同的環(huán)境。
IaC是DevOps的關(guān)鍵實(shí)踐,與持續(xù)交付結(jié)合使用 。
實(shí)施IaC的團(tuán)隊(duì)可以快速、大規(guī)模地提供穩(wěn)定的環(huán)境。團(tuán)隊(duì)通過代碼表示環(huán)境的期望狀態(tài),從而避免手動(dòng)配置環(huán)境并強(qiáng)制實(shí)現(xiàn)一致性。使用IaC進(jìn)行基礎(chǔ)架構(gòu)部署是可重復(fù)的,可防止因配置偏差或缺少依賴性而導(dǎo)致的運(yùn)行時(shí)問題。DevOps團(tuán)隊(duì)可以與一組統(tǒng)一的實(shí)踐和工具協(xié)同工作。快速,可靠,大規(guī)模地交付應(yīng)用程序及其支持基礎(chǔ)架構(gòu)。
三、DevOps轉(zhuǎn)型的研發(fā)工具鏈
快速交付的關(guān)鍵是“自動(dòng)”與“可靠”。自動(dòng)是一個(gè)很寬泛的詞匯,在軟件交付中代表著測(cè)試自動(dòng)化、交付自動(dòng)化、運(yùn)維自動(dòng)化等等,而可靠講的是每一次交付要保證是當(dāng)前的交付是穩(wěn)定的或可回滾到穩(wěn)定版本的。
為了解決“自動(dòng)”與“可靠”的問題,敏捷開發(fā)鼻祖Martin Fowler提出了持續(xù)集成與持續(xù)交付的概念,它所描述的軟件開發(fā),是從原始需求識(shí)別到最終產(chǎn)品部署到生產(chǎn)環(huán)境這個(gè)過程中,需求以小批量形式在團(tuán)隊(duì)的各個(gè)角色間順暢流動(dòng),能夠以較短地周期完成需求的小粒度頻繁交付。頻繁的交付周期帶來了更迅速的對(duì)軟件的反饋,并且在這個(gè)過程中,需求分析、產(chǎn)品的用戶體驗(yàn)和交互 設(shè)計(jì)、開發(fā)、測(cè)試、運(yùn)維等角色密切協(xié)作,相比于傳統(tǒng)的瀑布式軟件團(tuán)隊(duì),更少浪費(fèi)。通過這種小步快跑的方式,將小功能快速迭代、驗(yàn)證、交付,通過自動(dòng)化的工具,將測(cè)試、部署、運(yùn)維自動(dòng)化,減少需求在軟件生命周期中流動(dòng)的時(shí)間。
華為將自身積累的先進(jìn)研發(fā)能力與優(yōu)秀實(shí)踐開放,融合敏捷、精益、DevOps等先進(jìn)研發(fā)理念,打造開放完整的云端開發(fā)生態(tài),推出了一站式、全流程、安全可信的DevOps云平臺(tái)——DevCloud。
華為云應(yīng)用平臺(tái)部首席技術(shù)布道師,資深云計(jì)算、DevOps與精益敏捷專家。中國(guó)DevOps社區(qū)核心組織者,IDCF社區(qū)聯(lián)合發(fā)起人,《敏捷無敵之DevOps時(shí)代》,《DevOps業(yè)務(wù)視角》,《敏捷開發(fā)知識(shí)體系》《DevOps最佳實(shí)踐》等書作(譯)者。華為云HCIP DevOps Engineer構(gòu)建者, SAFe SPC規(guī)模化敏捷咨詢師, CSM, Management 3.0,F(xiàn)acilitation for Agilists,DevOps沙盤官方授權(quán)教練,埃里克森認(rèn)證教練。
DevOps SVN 云原生
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。