什么是Devops
百度百科:旨在建立一種文化與環(huán)境叛薯,使構(gòu)建矮慕、測試、軟件發(fā)布得以快速、頻繁以及更加穩(wěn)定地進(jìn)行宵蛀。我的理解:研發(fā)團(tuán)隊(duì)在保證質(zhì)量的前提下昆著,提高交付效率的方法都屬于 DevOps 的范疇。
Devops解決什么問題
整個(gè)版本周期較長术陶,一般一個(gè)月才能發(fā)布一個(gè)大版本凑懂,線上常有問題投訴,需消耗較多精力排查和修復(fù)梧宫。無法滿足客戶對時(shí)間和質(zhì)量的交付要求接谨。
原因分析:
系統(tǒng)緊耦合,相互影響和阻塞
①多個(gè)子系統(tǒng)無法做到并行交付
②故障傳播不可控祟敛,相互影響
③一端出問題疤坝,整個(gè)版本阻塞
mock測試不夠,集成后問題爆發(fā)
①開發(fā)自測不足馆铁,缺陷蔓延到集成階段
②自動(dòng)化能力缺失跑揉,大量依賴人工處理
③團(tuán)隊(duì)間存在資源爭搶,相互沖突嚴(yán)重
環(huán)境交付未歸一化埠巨,發(fā)布效率低
①環(huán)境多依賴復(fù)雜历谍,線下線上不一致
②環(huán)境準(zhǔn)備時(shí)間長,維護(hù)成本高
③串行發(fā)布上線辣垒,發(fā)布時(shí)間長
Devops所做的一切活動(dòng)就是為了移除這道墻望侈。
Devops如何落地
3個(gè)支柱:人、流程勋桶、平臺(tái)
人+流程=文化脱衙,人+平臺(tái)=技能,流程+平臺(tái)=工具
Devops=文化+技能+工具
1.碼農(nóng)文化
以詳細(xì)注釋為榮例驹,以注釋殘缺為恥捐韩。
以打印日志為榮,以出錯(cuò)不報(bào)為恥鹃锈。
以代碼重用為榮荤胁,以復(fù)制粘貼為恥。
以多態(tài)應(yīng)用為榮屎债,以分支判斷為恥仅政。
以持續(xù)重構(gòu)為榮,以停滯不前為恥盆驹。
以單元測試為榮圆丹,以手工測試為恥。
以注重團(tuán)隊(duì)為榮躯喇,以孤傲自大為恥运褪。
以總結(jié)分享為榮,以不求甚解為恥。
2.質(zhì)量文化秸讹,可參考文章《我對研發(fā)質(zhì)量的理解》
3.質(zhì)量閉環(huán)
技術(shù)實(shí)踐開展:
1.靜態(tài)代碼掃描檀咙,JAVA采用Sonar,集成阿里的JAVA開發(fā)手冊璃诀,可參考文章《sonar集成ail-p3c插件》
2.CI/CD弧可,制定CI原則
①小改動(dòng),逐步構(gòu)建
②每人每天提交代碼
③在主干上持續(xù)集成
④至少每天進(jìn)行集成
⑤充分的自動(dòng)化測試
⑥紅燈需要立即修復(fù)
3.單元測試
從無到有構(gòu)建劣欢,類覆蓋率:0%→85.3% 方法覆蓋率:0%→78.1% 行覆蓋率:0%→58% 分支覆蓋率:0%→ 43.9%
4.結(jié)對編程
?乒乓結(jié)對:甲進(jìn)行代碼編寫棕诵,乙負(fù)責(zé)編寫單元測試用例——適合兩個(gè)水平相近的程序員組合
?駕駛員-領(lǐng)航員: 駕駛員編寫實(shí)現(xiàn)當(dāng)前任務(wù)的代碼,而領(lǐng)航員需要引領(lǐng)代碼的編寫并負(fù)責(zé)審查代碼凿将⌒L祝——以老帶新的組合
優(yōu)點(diǎn):
?天然的備份
?天然的Code Review
?相互促進(jìn)提高水平
?更容易找到更完善的解決方案
5.自動(dòng)化測試
API自動(dòng)化:Robot Framework是一款python編寫的功能自動(dòng)化測試框架。具備良好的可擴(kuò)展性牧抵,支持關(guān)鍵字驅(qū)動(dòng)笛匙,可以同時(shí)測試多種類型的客戶端或者接口
UI自動(dòng)化:Selenium也是一個(gè)用于Web應(yīng)用程序測試的工具。Selenium測試直接運(yùn)行在瀏覽器中犀变,就像真正的用戶在操作一樣妹孙。支持的瀏覽器包括IE、Mozilla获枝、Firefox等
Devops平臺(tái)
風(fēng)火輪蠢正,一套集測試策略、研發(fā)技術(shù)實(shí)踐的工具產(chǎn)品省店,為研發(fā)內(nèi)部提供研發(fā)效能服務(wù)嚣崭,滿足持續(xù)交付需求,是一個(gè)Paas平臺(tái)懦傍。
在LDS落地思考
物聯(lián)網(wǎng)Devops的技術(shù)差異性:
①物聯(lián)網(wǎng)平臺(tái)復(fù)雜度更高有鹿。
②固件的技術(shù)實(shí)踐如何開展,單元測試谎脯,CI/CD選型?
③固件和軟件開發(fā)節(jié)奏有差異持寄,版本發(fā)布火車如何制定源梭?
④軟件平臺(tái)的技術(shù)實(shí)踐如何開展?
⑤各端如何通過MOCK或第三方工具來保證各自開發(fā)質(zhì)量?
⑥問題定位太復(fù)雜稍味,涉及太多端數(shù)據(jù)通迅废麻,如何快速排查和定位?
1.技術(shù)實(shí)踐開展
2.各端的Mock測試
①沙箱測試
②引流測試
③第三方工具:dongle模庐、上位機(jī)
④測試數(shù)據(jù)構(gòu)造
3.問題定位平臺(tái)
①Skywalking
②JS-SDK
③EFK
總結(jié)
一方面烛愧,隨著業(yè)務(wù)復(fù)雜化和人員的增加,開發(fā)人員和運(yùn)維人員逐漸演化成兩個(gè)獨(dú)立的部門,他們工具鏈不同怜姿,業(yè)務(wù)目標(biāo)也有差異慎冤,這使得他們之間出現(xiàn)一條鴻溝。另一方面沧卢,行業(yè)競爭更加激烈蚁堤,快速交付是企業(yè)核心競爭力的體現(xiàn)。 因此但狭,devops提出了解決問題的辦法:它提倡軟件持續(xù)交付披诗,頻繁部署。它力圖拆除開發(fā)和運(yùn)維的部門墻立磁。但只有觀念和組織結(jié)構(gòu)上的改變是不夠的呈队,一切必須建立在自動(dòng)化的基礎(chǔ)上。devops的本質(zhì)是倡導(dǎo)開發(fā)團(tuán)隊(duì)擰成一股繩唱歧,緊密合作宪摧,頻繁溝通,流程和工具只不過是大家合作得更充分迈喉,更廣泛绍刮。將人的地位放在技術(shù)之前,將交流與溝通放在流程之上挨摸,才是devops提高生產(chǎn)力的根本孩革。