如何實(shí)現(xiàn) DevOps 工具鏈
一套完整啟用的 DevOps 工具鏈可推動(dòng)你的創(chuàng)新計(jì)劃,實(shí)現(xiàn)快速部署并節(jié)約成本。
不同規(guī)模和不同行業(yè)組織都致力于為提高軟件交付的速度和質(zhì)量提供解決方案。這不僅保證了他們的生存,還令他們?cè)谌蚴袌?chǎng)取得了成功。DevOps 可以幫助他們規(guī)劃出一條最佳路線。
DevOps 是一個(gè)系統(tǒng),通過(guò)引入不同的工具鏈連接不同工作流程,以便及時(shí)交付項(xiàng)目并降低所需的開(kāi)銷。
在我工作的 IT 服務(wù)公司 Accedia,我們會(huì)幫助客戶落地一套完整的 DevOps 工具鏈,這套工具鏈能幫助他們達(dá)到甚至超越他們的業(yè)務(wù)目標(biāo)。在這篇文章,我會(huì)分享目前為止從 DevOps 項(xiàng)目中汲取的經(jīng)驗(yàn)。
DevOps 工具鏈?zhǔn)鞘裁矗?/h3>
一套完善的 DevOps 工具鏈可以在不同階段中使用不同的 DevOps 工具來(lái)解決特定的業(yè)務(wù)帶來(lái)的挑戰(zhàn)。一條工具鏈能保證前端和后端開(kāi)發(fā)者、質(zhì)量測(cè)試人員、客戶都能夠從中獲得收益。構(gòu)建工具鏈的目的是為了自動(dòng)化開(kāi)發(fā)和部署過(guò)程,以確??焖?、可靠、預(yù)算友好地交付與創(chuàng)新。
我們發(fā)現(xiàn)成功構(gòu)建一套 DevOps 工具鏈不是一個(gè)簡(jiǎn)單的事情。它需要實(shí)驗(yàn)和不斷的完善,保證必要的流程是完全自動(dòng)化的。
為什么你需要 DevOps 工具鏈
DevOps 工具鏈自動(dòng)化了工作流中的所有技術(shù)元素。它能讓不同團(tuán)隊(duì)在一個(gè)平臺(tái)上進(jìn)行工作,因此可以使你專注于業(yè)務(wù)戰(zhàn)略以推動(dòng)組織走向未來(lái)。
我們總結(jié)了五個(gè)實(shí)現(xiàn) DevOps 工具鏈所帶來(lái)的好處。你可以讓管理層相信,是值得為 DevOps 工具鏈的開(kāi)發(fā)投入資源和時(shí)間的。
- 更快、更高效的生產(chǎn)部署:DevOps 工具自動(dòng)化了大部分軟件開(kāi)發(fā)進(jìn)程。這會(huì)使產(chǎn)品開(kāi)發(fā)專注于創(chuàng)新,交付更加敏捷,更領(lǐng)先于競(jìng)爭(zhēng)對(duì)手。
- 預(yù)算和時(shí)間優(yōu)化:將手動(dòng)的任務(wù)轉(zhuǎn)變?yōu)樽詣?dòng)化會(huì)使你的組織節(jié)省時(shí)間和資源。當(dāng)沒(méi)有人為的錯(cuò)誤和時(shí)間管理不足帶來(lái)的額外支出,預(yù)算自然會(huì)得到優(yōu)化。
- 高效的開(kāi)發(fā):DevOps 工具鏈會(huì)減少開(kāi)發(fā)工作中不必要的延時(shí),提高開(kāi)發(fā)效率。前端、后端、質(zhì)量測(cè)試人員的工作是一致的,所以沒(méi)有人需要協(xié)調(diào)不同團(tuán)隊(duì)之間人員的交付。
- 更快的部署意味著更高的質(zhì)量:DevOps 工具鏈保證了缺陷能夠很快被解決,并且迅速完成高質(zhì)量的部署進(jìn)程。怎么樣?它可以生成有針對(duì)性的告警,并將重要的事件通知給你的團(tuán)隊(duì)。這會(huì)讓你主動(dòng)地發(fā)現(xiàn)并解決潛在的問(wèn)題,從而規(guī)避故障的不斷的升級(jí)從而導(dǎo)致的客戶服務(wù)不可用。
- 及時(shí)事件管理:DevOps 工具鏈有助于優(yōu)化事件管理記錄。它能夠識(shí)別 IT 事件并且逐漸升級(jí)事件級(jí)別,通知給指定團(tuán)隊(duì)的成員,直到問(wèn)題被解決。這意味著消息的接受和處理會(huì)更加的迅速,因?yàn)樗鼈儼l(fā)送給了正確的目標(biāo)。
DevOps 工具鏈的實(shí)踐
對(duì)我的團(tuán)隊(duì)來(lái)說(shuō),DevOps 并不新鮮。我們已經(jīng)敏捷開(kāi)發(fā)很長(zhǎng)時(shí)間了,并且我們總是熱衷于探索最優(yōu)的工作流。在我們的實(shí)踐中,往往都是應(yīng)用復(fù)雜性增加從而帶來(lái)了自動(dòng)化的需求。
這是我們?yōu)橐粋€(gè)客戶配置的工具鏈。這個(gè)項(xiàng)目包含了移動(dòng)運(yùn)營(yíng)方案,連接了金融交易的所有參與者 (賣方、買方、銀行)。這個(gè)客戶需要?jiǎng)討B(tài)響應(yīng)用戶反饋并且將故障時(shí)間縮短到最小,從而來(lái)提高用戶體驗(yàn)。我的團(tuán)隊(duì)設(shè)計(jì)了一套工具鏈用于自動(dòng)化應(yīng)用的維護(hù)和部署新功能。
(Accedia, CC BY-NC-SA 4.0)
- 首先,我們團(tuán)隊(duì)編寫(xiě)了自動(dòng)化測(cè)試,可以立即識(shí)別應(yīng)用程序的變更。
- 當(dāng)新版本已經(jīng)準(zhǔn)備就緒的時(shí)候,代碼將被提交到 Gitlab 中。
- 通過(guò) Gitlab,提交會(huì)自動(dòng)觸發(fā) Jenkins 構(gòu)建。
- 在 持續(xù)集成中,新的代碼版本通過(guò) Chai 和 Mocha 進(jìn)行了測(cè)試,以檢測(cè)是否運(yùn)行正常。
- 當(dāng)測(cè)試通過(guò),持續(xù)部署階段 將會(huì)開(kāi)始并創(chuàng)建一個(gè)可用的 Docker 鏡像并上傳到 Sonatype 的 Nexus。(這是 Sonatype 公司的的一個(gè)開(kāi)源工具)
- 最后,新版本應(yīng)用會(huì)通過(guò) Nexus 下載并且部署到線上環(huán)境中,例如 Docker 容器 (持續(xù)部署階段)
簡(jiǎn)而言之,每當(dāng)有人在倉(cāng)庫(kù)中創(chuàng)建一個(gè)新的提交,又或者團(tuán)隊(duì)上傳新的代碼版本、功能、升級(jí)、缺陷修復(fù)等,應(yīng)用程序包都會(huì)自動(dòng)更新并且交付給客戶。
這套系統(tǒng)擁有良好的事故控制能力以保證快速部署,但不以犧牲質(zhì)量為代價(jià)。它對(duì)于用戶的反饋是動(dòng)態(tài)的,意味著新功能和舊功能的和更新只需要之前一半的時(shí)間,同時(shí)將故障時(shí)間降低到最低。
把它封裝起來(lái)
一套完整并且正確實(shí)施的 DevOps 工具鏈可以從始至終推動(dòng)你的創(chuàng)新計(jì)劃并且加速部署。
根據(jù)你的需求,你的工具鏈可能看起來(lái)和這些不一樣,但是我希望我們的工作流能夠讓你了解如何將自動(dòng)化作為一種解決方案。