傳統(tǒng)IT技術(shù)團(tuán)隊(duì)中通常都有多個(gè)獨(dú)立的組織-開發(fā)團(tuán)隊(duì)饿这、測(cè)試團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)抛丽。開發(fā)團(tuán)隊(duì)進(jìn)行軟件開發(fā)噪珊、測(cè)試團(tuán)隊(duì)進(jìn)行軟件測(cè)試忘衍,運(yùn)維團(tuán)隊(duì)致力于部署,負(fù)載平衡和發(fā)布管理卿城。 他們之間的職能有時(shí)重疊枚钓、有時(shí)依賴、有時(shí)候會(huì)沖突瑟押。
因?yàn)殂暯优c溝通問題搀捷,有時(shí)會(huì)導(dǎo)致開發(fā)-測(cè)試-發(fā)布的周期太長(zhǎng)了,特別是對(duì)于互聯(lián)網(wǎng)公司,時(shí)間就是生命嫩舟。從而需要建立一支由開發(fā)氢烘,質(zhì)量保證和運(yùn)營(yíng)組成的混合專業(yè)知識(shí)的團(tuán)隊(duì)的需求,并引入了DevOps來彌合團(tuán)隊(duì)之間的鴻溝家厌,幫助他們快速而可靠地操作和開發(fā)應(yīng)用程序播玖。
一、什么是DevOps饭于?
顧名思義蜀踏,Devops是“開發(fā)”與“運(yùn)維”的縮寫。它定義了一組流程掰吕,這些流程通過在開發(fā)和運(yùn)維團(tuán)隊(duì)之間進(jìn)行協(xié)作帶來組織文化上的轉(zhuǎn)變果覆。它包含四個(gè)關(guān)鍵組件:協(xié)作,實(shí)踐殖熟,文化和工具局待。
二、為什么我們需要DevOps菱属?
DevOps帶來更高水平的協(xié)作和速度钳榨,使組織提高生產(chǎn)力,降低運(yùn)營(yíng)成本以有效地為客戶提供服務(wù)并保持市場(chǎng)競(jìng)爭(zhēng)力纽门。它還有助于更快地發(fā)布產(chǎn)品重绷,管理計(jì)劃外的工作,更快地捕獲和解決關(guān)鍵問題膜毁。
三昭卓、DevOps實(shí)踐
獨(dú)立devops團(tuán)隊(duì)
DevOps使用各種工具,例如docker瘟滨、k8s候醒、Jenkins,Terraform杂瘸,Nagios倒淫,Grafana,Prometheus或Splunk等败玉,組織應(yīng)建立一個(gè)集中部門來創(chuàng)建和操作這些工具敌土。這個(gè)集中管理部門負(fù)責(zé)開發(fā)團(tuán)隊(duì)中的敏捷實(shí)踐設(shè)置,該團(tuán)隊(duì)將研究新的工具并堅(jiān)持使用运翼,并提供指導(dǎo)程序和培訓(xùn)以實(shí)施DevOps返干。該部門核心工作內(nèi)容是追求測(cè)試、集成血淌、部署的自動(dòng)化矩欠,減少人員參與财剖、降低溝通成本、彌合技術(shù)團(tuán)隊(duì)之間的鴻溝癌淮。
持續(xù)集成(CI)
CI是一種軟件開發(fā)實(shí)踐躺坟,可改善團(tuán)隊(duì)之間的協(xié)作并有助于構(gòu)建高質(zhì)量的軟件。開發(fā)團(tuán)隊(duì)會(huì)定期檢入存儲(chǔ)庫(kù)中的代碼更改乳蓄,CI會(huì)執(zhí)行自動(dòng)構(gòu)建和測(cè)試以驗(yàn)證代碼質(zhì)量咪橙。持續(xù)集成所采用的實(shí)踐可以在早期階段快速檢測(cè)出軟件開發(fā)生命周期(SDLC)的挑戰(zhàn),從而有助于開發(fā)團(tuán)隊(duì)在開發(fā)階段本身解決問題虚倒。
持續(xù)交付/部署(CD)
部署過程具有不同的階段美侦,例如開發(fā)→構(gòu)建→驗(yàn)證→構(gòu)建版本控制→部署→后部署等。持續(xù)部署過程的思想是裹刮,在構(gòu)建通過QA階段的所有階段后音榜,將已開發(fā)的代碼自動(dòng)部署到生產(chǎn)環(huán)境中庞瘸。 -beta捧弃,Integration,UAT等擦囊。有一些可用的工具违霞,例如Spinnaker,Jenkins瞬场,Harness买鸽,Ansible,Chef贯被,Puppet等眼五,使DevOps團(tuán)隊(duì)可以建立自動(dòng)化管道,以最少的人工干預(yù)就可以在多個(gè)環(huán)境中進(jìn)行部署彤灶。
持續(xù)交付是DevOps的一種實(shí)踐看幼,其中新的代碼庫(kù)由QA團(tuán)隊(duì)在自動(dòng)和手動(dòng)QA周期的不同階段進(jìn)行測(cè)試。如果代碼庫(kù)通過了QA周期并得到QA團(tuán)隊(duì)的批準(zhǔn)幌陕,則它將部署到生產(chǎn)環(huán)境中诵姜。通過這種方式,DevOps將團(tuán)隊(duì)劃分為較短的周期搏熄,從而使團(tuán)隊(duì)能夠更快棚唆,更頻繁地構(gòu)建,測(cè)試和發(fā)布代碼庫(kù)心例。這使組織能夠提供更多版本宵凌,減少手動(dòng)部署,并將生產(chǎn)中的故障風(fēng)險(xiǎn)降至最低止后。
配置管理(CM)
配置和變更管理是DevOps周期的重要組成部分摆寄。配置管理是對(duì)基礎(chǔ)結(jié)構(gòu)和系統(tǒng)的所有實(shí)體(例如服務(wù)器,應(yīng)用程序,存儲(chǔ)微饥,網(wǎng)絡(luò)和所有托管服務(wù))進(jìn)行配置逗扒,監(jiān)視,管理和維護(hù)的自動(dòng)化欠橘。也有許多的集中配置管理工具可以使用矩肩,比如:nacos、apollo等肃续。
配置管理帶來了許多優(yōu)勢(shì)黍檩,例如簡(jiǎn)化了新環(huán)境的設(shè)置,降低了生產(chǎn)配置的風(fēng)險(xiǎn)始锚,并節(jié)省了軟件開發(fā)的大量時(shí)間刽酱,而無需花費(fèi)時(shí)間和精力來使用基礎(chǔ)結(jié)構(gòu)即代碼實(shí)踐從頭開始新服務(wù)。
變更管理
變更管理是一個(gè)請(qǐng)求瞧捌,計(jì)劃棵里,實(shí)施和評(píng)估滿足新要求所需的變更的過程。在配置管理過程中姐呐,如果現(xiàn)有系統(tǒng)和基礎(chǔ)架構(gòu)中需要進(jìn)行任何更改殿怜,那么此時(shí)就要考慮更改管理。運(yùn)營(yíng)團(tuán)隊(duì)需要提供他們的意見曙砂,更改的原因头谜,以及可能在更大范圍內(nèi)產(chǎn)生的后果,包括可能受到新更改影響的其他系統(tǒng)鸠澈。
測(cè)試自動(dòng)化
每個(gè)代碼庫(kù)的自動(dòng)測(cè)試有助于運(yùn)行更多測(cè)試柱告,提高測(cè)試頻率,并節(jié)省手動(dòng)QA上花費(fèi)的時(shí)間笑陈。此過程可及早發(fā)現(xiàn)錯(cuò)誤际度,修復(fù)錯(cuò)誤,并提高整體軟件質(zhì)量新锈。有幾種工具可以與DevOps工具集成甲脏,例如Selenium,RobotFramework妹笆,Appium块请,XCUITest,JUnit等拳缠,以實(shí)現(xiàn)自動(dòng)化的測(cè)試墩新。
持續(xù)監(jiān)控(CM)
持續(xù)監(jiān)控建議使用幾種工具,儀表板和警報(bào)來監(jiān)視所有系統(tǒng)和基礎(chǔ)架構(gòu)窟坐,包括對(duì)影響軟件的不同指標(biāo)的實(shí)時(shí)洞察海渊,例如系統(tǒng)性能绵疲,測(cè)試次數(shù),成功和失敗率臣疑,部署狀態(tài)盔憨,錯(cuò)誤日志以及所有信息以圖形,表格和詳細(xì)報(bào)告格式顯示讯沈。為了完成這樣的監(jiān)視郁岩,DevOps團(tuán)隊(duì)可以設(shè)置一些工具,例如Prometheus缺狠,Grafana问慎,Nagios,Appdynamics挤茄,NewRelic如叼,Splunk,Logstash穷劈,以及市場(chǎng)上可用的更多工具笼恰。
歡迎關(guān)注我的博客,里面有很多精品合集
- 本文轉(zhuǎn)載注明出處(必須帶連接囚衔,不能只轉(zhuǎn)文字):字母哥博客挖腰。
覺得對(duì)您有幫助的話雕沿,幫我點(diǎn)贊练湿、分享!您的支持是我不竭的創(chuàng)作動(dòng)力审轮! 肥哎。另外,筆者最近一段時(shí)間輸出了如下的精品內(nèi)容疾渣,期待您的關(guān)注篡诽。