柚子快報邀請碼778899分享:運維 什么是DevOps
柚子快報邀請碼778899分享:運維 什么是DevOps
原文鏈接:什么是DevOps_軟件開發(fā)生產(chǎn)線 CodeArts_理論實踐_DevOps概覽
DevOps概述
DevOps,即Development and Operations,是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進軟件開發(fā)、運維和質(zhì)量保障部門之間的溝通、協(xié)作與整合。DevOps的出現(xiàn)是由于軟件行業(yè)日益清晰的認(rèn)識到:為了按時交付軟件產(chǎn)品和服務(wù),開發(fā)和運維工作必須緊密合作。DevOps可看作開發(fā)、運維和質(zhì)量保障(QA)三者的交集。
DevOps運動源自于提高IT服務(wù)交付敏捷性的需要,早期出現(xiàn)在許多大型公有云服務(wù)提供商中,并被其認(rèn)可。支撐DevOps的理念基礎(chǔ)是敏捷宣言,它強調(diào)人(和文化),致力于改善開發(fā)和運維團隊之間的協(xié)作。從生命周期的角度來看,DevOps的實施者也試圖更好的利用技術(shù),尤其是自動化工具,來支撐越來越多的可編程的動態(tài)的基礎(chǔ)設(shè)施。
DevOps的技術(shù)實踐
配置管理 軟件配置管理的核心功能是版本控制。版本控制系統(tǒng)是一種軟件,可以管理代碼的所有版本并跟蹤代碼中的更改。
分布式Git VS 集中式SVN 版本控制系統(tǒng)分為集中式和分布式兩種工作模式,Git和SVN是最為廣泛被使用的代表,Git由于其諸多特點,更適合DevOps。
安全性——Git是分布式,而SVN是集中式,存在單點故障風(fēng)險。分支功能——Git分支功能強大,便于查詢和追溯分支間的提交歷史,且支持雙向合并。發(fā)布控制——Git發(fā)布控制相當(dāng)靈活,而SVN并沒有明確的發(fā)布控制配置。開發(fā)審核——Git支持團隊成員自建分支和版本庫,從提交說明、代碼規(guī)范等方面對提交逐一審核;而SVN則不具備這些功能。合并支持——Git基于DAG(有向非環(huán)圖)的設(shè)計比SVN的線性提交提供更好的合并追蹤,避免不必要的沖突,提高了工作效率。存儲方式——Git把內(nèi)容按元數(shù)據(jù)方式存儲,而SVN是按文件。包文件 包文件通常不放在源碼庫中管理,而是使用專門的包文件倉庫(repository)進行存儲,并配合包文件依賴管理工具(Maven、npm、Ivy等)進行使用。包文件倉庫可以大致分為本地倉庫、私服倉庫、中央倉庫三種。本地倉庫是指開發(fā)者個人PC中包文件的存儲;私服倉庫通常是企業(yè)為了提升包文件使用性能而搭建的局域網(wǎng)內(nèi)共用的包文件倉庫,通常使用開源的Nexus、artifactory等工具搭建;中央倉庫是指開源包文件的共享社區(qū)。 開發(fā)人員對包文件的使用集中在下載、搜索、發(fā)布上傳幾個操作上。開發(fā)和構(gòu)建時,開發(fā)人員通過包依賴管理工具定義好需要使用的私有及開源包文件,在構(gòu)建或運行時自動從私服倉庫或開源中央倉庫中下載依賴包文件來提升開發(fā)效率。 持續(xù)集成(Continuous Integration) 持續(xù)集成(CI)是一種軟件開發(fā)實踐,即團隊的成員經(jīng)常集成他們的工作,通常每個成員每天至少集成一次——這導(dǎo)致每天發(fā)生多次集成。每次集成都通過自動化的構(gòu)建(包括測試)來驗證,從而盡快的檢測出集成錯誤。 持續(xù)集成過程中的角色與職責(zé)如下:
角色 職責(zé) 開發(fā)人員
完成開發(fā)任務(wù),并在向版本控制庫提交代碼之前,先在本地環(huán)境完成一次私有構(gòu)建。修改反饋回來的代碼問題,保持集成構(gòu)建的綠燈狀態(tài)。 測試人員 根據(jù)項目進展隨時更新自動化測試腳本,并保證代碼覆蓋率達到團隊要求。 運維人員
根據(jù)開發(fā)人員的需要,及時更新維護自動化構(gòu)建腳本。維護整個CI流水線的正常運行。 持續(xù)交付(Continuous Delivery) 持續(xù)交付(CD)是從構(gòu)建環(huán)境到生產(chǎn)環(huán)境的構(gòu)建、測試、配置和部署的過程。 持續(xù)交付是一種軟件工程手法,讓軟件產(chǎn)品的產(chǎn)出過程在一個短周期內(nèi)完成,以保證軟件可以穩(wěn)定、持續(xù)的保持在隨時可以發(fā)布的狀況。它的目標(biāo)在于讓軟件的構(gòu)建、測試與發(fā)布變得更快以及更頻繁。這種方式可以減少軟件開發(fā)的成本與時間,減少風(fēng)險。 基礎(chǔ)設(shè)施即代碼(Infrastructure as Code) 作為代碼的基礎(chǔ)設(shè)施(IaC)是描述性模型中的基礎(chǔ)設(shè)施(網(wǎng)絡(luò)、虛擬機、負(fù)載平衡器和連接拓?fù)洌┑墓芾恚褂门cDevOps團隊用于源代碼相同的版本。與同一源代碼生成相同二進制文件的原則一樣,IaC模型在每次應(yīng)用時都會生成相同的環(huán)境。 IaC是DevOps的關(guān)鍵實踐,與持續(xù)交付結(jié)合使用 。 實施IaC的團隊可以快速、大規(guī)模的提供穩(wěn)定的環(huán)境。團隊通過代碼表示環(huán)境的期望狀態(tài),從而避免手動配置環(huán)境并強制實現(xiàn)一致性。使用IaC進行基礎(chǔ)架構(gòu)部署是可重復(fù)的,可防止因配置偏差或缺少依賴性而導(dǎo)致的運行時問題。DevOps團隊可以與一組統(tǒng)一的實踐和工具協(xié)同工作。快速,可靠,大規(guī)模的交付應(yīng)用程序及其支持基礎(chǔ)架構(gòu)。
DevOps轉(zhuǎn)型的研發(fā)工具鏈
快速交付的關(guān)鍵是“自動”與“可靠”。自動是一個很寬泛的詞匯,在軟件交付中代表著測試自動化、交付自動化、運維自動化等,而可靠講的是每一次交付要保證是當(dāng)前的交付是穩(wěn)定的或可回滾到穩(wěn)定版本的。
為了解決“自動”與“可靠”的問題,敏捷開發(fā)鼻祖Martin Fowler提出了持續(xù)集成與持續(xù)交付的概念,它所描述的軟件開發(fā),是從原始需求識別到最終產(chǎn)品部署到生產(chǎn)環(huán)境這個過程中,需求以小批量形式在團隊的各個角色間順暢流動,能夠以較短的周期完成需求的小粒度頻繁交付。頻繁的交付周期帶來了更迅速的對軟件的反饋,并且在這個過程中,需求分析、產(chǎn)品的用戶體驗和交互設(shè)計、開發(fā)、測試、運維等角色密切協(xié)作,相比于傳統(tǒng)的瀑布式軟件團隊,更少浪費。通過這種小步快跑的方式,將小功能快速迭代、驗證、交付,通過自動化的工具,將測試、部署、運維自動化,減少需求在軟件生命周期中流動的時間。
華為將自身積累的先進研發(fā)能力與優(yōu)秀實踐開放,融合敏捷、精益、DevOps等先進研發(fā)理念,打造開放完整的云端開發(fā)生態(tài),推出了一站式、全流程、安全可信的DevOps云平臺——CodeArts,詳情請參見CodeArts產(chǎn)品概述。
柚子快報邀請碼778899分享:運維 什么是DevOps
精彩文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。